From 88722a2831e8f8d41e9946252a1e9796c656cfbf Mon Sep 17 00:00:00 2001 From: steve Date: Fri, 7 Jun 2002 16:21:12 +0000 Subject: [PATCH] Add tf_putlongp and tf_putp. --- libveriuser/Makefile.in | 5 +-- libveriuser/putlongp.c | 69 +++++++++++++++++++++++++++++++++++++++++ libveriuser/putp.c | 65 ++++++++++++++++++++++++++++++++++++++ veriuser.h | 12 ++++++- 4 files changed, 148 insertions(+), 3 deletions(-) create mode 100644 libveriuser/putlongp.c create mode 100644 libveriuser/putp.c diff --git a/libveriuser/Makefile.in b/libveriuser/Makefile.in index 2813356f9..aa0308d4c 100644 --- a/libveriuser/Makefile.in +++ b/libveriuser/Makefile.in @@ -16,7 +16,7 @@ # 59 Temple Place - Suite 330 # Boston, MA 02111-1307, USA # -#ident "$Id: Makefile.in,v 1.12 2002/06/07 02:58:58 steve Exp $" +#ident "$Id: Makefile.in,v 1.13 2002/06/07 16:21:13 steve Exp $" # # SHELL = /bin/sh @@ -48,7 +48,8 @@ A = a_close.o a_fetch_fullname.o a_fetch_tfarg.o a_handle_tfarg.o \ a_initialize.o a_next_topmod.o a_object_of_type.o a_product_version.o \ a_set_value.o O = asynch.o finish.o getcstringp.o getinstance.o getlongp.o \ -getp.o getsimtime.o io_print.o mc_scan_plusargs.o nump.o veriusertfs.o $A +getp.o getsimtime.o io_print.o mc_scan_plusargs.o nump.o putlongp.o \ +putp.o veriusertfs.o $A all: libveriuser.a diff --git a/libveriuser/putlongp.c b/libveriuser/putlongp.c new file mode 100644 index 000000000..d14dacd03 --- /dev/null +++ b/libveriuser/putlongp.c @@ -0,0 +1,69 @@ +/* vi:sw=6 + * Copyright (c) 2002 Michael Ruff (mruff at chiaro.com) + * + * This source code is free software; you can redistribute it + * and/or modify it in source code form under the terms of the GNU + * General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ +#if !defined(WINNT) +#ident "$Id: putlongp.c,v 1.1 2002/06/07 16:21:13 steve Exp $" +#endif + +#include +#include +#include +#include + +/* + * tf_putlongp implemented using VPI interface + */ +void tf_putlongp(int n, int lowvalue, int highvalue) +{ + vpiHandle sys_h, sys_i, arg_h = 0; + s_vpi_value val; + int type; + char str[20]; + + + assert(n >= 0); + + /* get task/func handle */ + sys_h = vpi_handle(vpiSysTfCall, 0); + sys_i = vpi_iterate(vpiArgument, sys_h); + + type = vpi_get(vpiType, sys_h); + + /* verify function */ + assert(!(n == 0 && type != vpiSysFuncCall)); + + /* find nth arg */ + while (n > 0) { + if (!(arg_h = vpi_scan(sys_i))) assert(0); + n--; + } + if (!arg_h) arg_h = sys_h; + + /* fill in vpi_value */ + sprintf(str, "%x%08x", highvalue, lowvalue); + val.format = vpiHexStrVal; + val.value.str = str; + (void)vpi_put_value(arg_h, &val, 0, vpiNoDelay); +} + +/* + * $Log: putlongp.c,v $ + * Revision 1.1 2002/06/07 16:21:13 steve + * Add tf_putlongp and tf_putp. + * + */ diff --git a/libveriuser/putp.c b/libveriuser/putp.c new file mode 100644 index 000000000..1bdab3a6e --- /dev/null +++ b/libveriuser/putp.c @@ -0,0 +1,65 @@ +/* vi:sw=6 + * Copyright (c) 2002 Michael Ruff (mruff at chiaro.com) + * + * This source code is free software; you can redistribute it + * and/or modify it in source code form under the terms of the GNU + * General Public License as published by the Free Software + * Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ +#if !defined(WINNT) +#ident "$Id: putp.c,v 1.1 2002/06/07 16:21:13 steve Exp $" +#endif + +#include +#include +#include + +/* + * tf_putp implemented using VPI interface + */ +void tf_putp(int n, int value) +{ + vpiHandle sys_h, sys_i, arg_h = 0; + s_vpi_value val; + int type; + + assert(n >= 0); + + /* get task/func handle */ + sys_h = vpi_handle(vpiSysTfCall, 0); + sys_i = vpi_iterate(vpiArgument, sys_h); + + type = vpi_get(vpiType, sys_h); + + /* verify function */ + assert(!(n == 0 && type != vpiSysFuncCall)); + + /* find nth arg */ + while (n > 0) { + if (!(arg_h = vpi_scan(sys_i))) assert(0); + n--; + } + if (!arg_h) arg_h = sys_h; + + /* fill in vpi_value */ + val.format = vpiIntVal; + val.value.integer = value; + (void)vpi_put_value(arg_h, &val, 0, vpiNoDelay); +} + +/* + * $Log: putp.c,v $ + * Revision 1.1 2002/06/07 16:21:13 steve + * Add tf_putlongp and tf_putp. + * + */ diff --git a/veriuser.h b/veriuser.h index 44486faf7..b469d1add 100644 --- a/veriuser.h +++ b/veriuser.h @@ -19,7 +19,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #if !defined(WINNT) && !defined(macintosh) -#ident "$Id: veriuser.h,v 1.14 2002/06/07 02:58:58 steve Exp $" +#ident "$Id: veriuser.h,v 1.15 2002/06/07 16:21:12 steve Exp $" #endif /* @@ -116,6 +116,13 @@ extern int tf_getp(int pnum); extern int tf_nump(void); +/* IEEE1364 NOTE: tf_putlongp is listed as returning in in the header + file shown in the standard, but as returning void in the detailed + description of the function. So I call it void. Same for tf_putp. */ +extern void tf_putlongp(int pnum, int lowvalue, int highvalue); + +extern void tf_putp(int pnum, int value); + extern void tf_warning(const char*, ...) __attribute__((format (printf,1,2))); @@ -123,6 +130,9 @@ EXTERN_C_END /* * $Log: veriuser.h,v $ + * Revision 1.15 2002/06/07 16:21:12 steve + * Add tf_putlongp and tf_putp. + * * Revision 1.14 2002/06/07 02:58:58 steve * Add a bunch of acc/tf functions. (mruff) *