diff options
author | John Hughes <john@Calva.COM> | 2001-04-18 15:11:51 +0000 |
---|---|---|
committer | John Hughes <john@Calva.COM> | 2001-04-18 15:11:51 +0000 |
commit | 4e36a8151bccaba338bf8513a367d287d193f524 (patch) | |
tree | 31bc44cc18c6af71115390e2cb0b9ba72443e29f /system.c | |
parent | 3525440544c0bad31a786a476a21ff15d010175e (diff) | |
download | strace-4e36a8151bccaba338bf8513a367d287d193f524.tar.gz strace-4e36a8151bccaba338bf8513a367d287d193f524.tar.bz2 strace-4e36a8151bccaba338bf8513a367d287d193f524.tar.xz |
Handle fork1/forkall on uw, handle rfork1,rforkall,rexecve and ssisys on uw non-stop-clusters
Diffstat (limited to 'system.c')
-rw-r--r-- | system.c | 89 |
1 files changed, 89 insertions, 0 deletions
@@ -2008,6 +2008,95 @@ struct tcb *tcp; return 0; } +#ifdef HAVE_SYS_NSCSYS_H + +#include <sys/nscsys.h> + +static struct xlat ssi_cmd [] = { + { SSISYS_BADOP, "SSISYS_BADOP" }, + { SSISYS_LDLVL_INIT,"SSISYS_LDLVL_INIT"}, + { SSISYS_LDLVL_GETVEC,"SSISYS_LDLVL_GETVEC"}, + { SSISYS_LDLVL_PUTVEC,"SSISYS_LDLVL_PUTVEC"}, + { SSISYS_LDLVL_PUTRCMDS,"SSISYS_LDLVL_PUTRCMDS"}, + { SSISYS_LDLVL_SETREXEC,"SSISYS_LDLVL_SETREXEC"}, + { SSISYS_CMS_CLUSTERID,"SSISYS_CMS_CLUSTERID"}, + { SSISYS_CFS_STATVFS,"SSISYS_CFS_STATVFS"}, + { SSISYS_NODE_GETNUM,"SSISYS_NODE_GETNUM"}, + { SSISYS_NODE_TABLE,"SSISYS_NODE_TABLE"}, + { SSISYS_NODE_DOWN,"SSISYS_NODE_DOWN"}, + { SSISYS_RECLAIM_CHILD,"SSISYS_RECLAIM_CHILD"}, + { SSISYS_IPC_GETINFO,"SSISYS_IPC_GETINFO"}, + { SSISYS_ICS_TEST,"SSISYS_ICS_TEST"}, + { SSISYS_NODE_PID,"SSISYS_NODE_PID"}, + { SSISYS_ISLOCAL,"SSISYS_ISLOCAL"}, + { SSISYS_CFS_ISSTACKED,"SSISYS_CFS_ISSTACKED"}, + { SSISYS_DNET_SYNC,"SSISYS_DNET_SYNC"}, + { SSISYS_CFS_WAIT_MODE,"SSISYS_CFS_WAIT_MODE"}, + { SSISYS_CFS_UMOUNT,"SSISYS_CFS_UMOUNT"}, + { SSISYS_LLSTAT,"SSISYS_LLSTAT" }, + { SSISYS_LTS_PERFTEST,"SSISYS_LTS_PERFTEST"}, + { SSISYS_LTS_CONFIG,"SSISYS_LTS_CONFIG"}, + { SSISYS_SNET_PERFTEST,"SSISYS_SNET_PERFTEST"}, + { SSISYS_IGNORE_HALFUP,"SSISYS_IGNORE_HALFUP"}, + { SSISYS_NODE_ROOTDEV,"SSISYS_NODE_ROOTDEV"}, + { SSISYS_GET_PRIMARY,"SSISYS_GET_PRIMARY"}, + { SSISYS_GET_SECONDARY,"SSISYS_GET_SECONDARY"}, + { SSISYS_GET_ROOTDISK,"SSISYS_GET_ROOTDISK"}, + { SSISYS_CLUSTERNODE_NUM,"SSISYS_CLUSTERNODE_NUM"}, + { SSISYS_CLUSTER_MEMBERSHIP,"SSISYS_CLUSTER_MEMBERSHIP"}, + { SSISYS_CLUSTER_DETAILEDTRANS,"SSISYS_CLUSTER_DETAILEDTRANS"}, + { SSISYS_CLUSTERNODE_INFO,"SSISYS_CLUSTERNODE_INFO"}, + { SSISYS_CLUSTERNODE_SETINFO,"SSISYS_CLUSTERNODE_SETINFO"}, + { SSISYS_CLUSTERNODE_AVAIL,"SSISYS_CLUSTERNODE_AVAIL"}, + { SSISYS_CLUSTER_MAXNODES,"SSISYS_CLUSTER_MAXNODES"}, + { SSISYS_SET_MEMPRIO,"SSISYS_SET_MEMPRIO"}, + { SSISYS_GET_USERS,"SSISYS_GET_USERS"}, + { SSISYS_FORCE_ROOT_NODE,"SSISYS_FORCE_ROOT_NODE"}, + { SSISYS_CVIP_SET,"SSISYS_CVIP_SET"}, + { SSISYS_CVIP_GET,"SSISYS_CVIP_GET"}, + { SSISYS_GET_NODE_COUNTS,"SSISYS_GET_NODE_COUNTS"}, + { SSISYS_GET_TRANSPORT,"SSISYS_GET_TRANSPORT"}, + { 0, NULL }, +}; + +int sys_ssisys (tcp) +struct tcb *tcp; +{ + struct ssisys_iovec iov; + + if (entering (tcp)) { + if (tcp->u_arg[1] != sizeof iov || + umove (tcp, tcp->u_arg[0], &iov) < 0) + { + tprintf ("%#lx, %ld", tcp->u_arg[0], tcp->u_arg[1]); + return 0; + } + tprintf ("{id="); + printxval(ssi_cmd, iov.tio_id.id_cmd, "SSISYS_???"); + tprintf (":%d", iov.tio_id.id_ver); + switch (iov.tio_id.id_cmd) { + default: + if (iov.tio_udatainlen) { + tprintf (", in=[/* %d bytes */]", + iov.tio_udatainlen); + } + } + } + else { + switch (iov.tio_id.id_cmd) { + default: + if (iov.tio_udataoutlen) { + tprintf (", out=[/* %d bytes */]", + iov.tio_udataoutlen); + } + } + tprintf ("}, %ld", tcp->u_arg[1]); + } + return 0; +} + +#endif + #endif /* UNIXWARE > 2 */ #ifdef MIPS |