]> granicus.if.org Git - strace/commitdiff
Decode some ssisys args on NSC
authorJohn Hughes <john@Calva.COM>
Tue, 16 Oct 2001 18:19:52 +0000 (18:19 +0000)
committerJohn Hughes <john@Calva.COM>
Tue, 16 Oct 2001 18:19:52 +0000 (18:19 +0000)
ChangeLog
system.c

index aacf89b57f6d7dbc09df2a6612e84aace6d704d9..930e8f0cac3a2bb11e27fa7240d3caa1ee0fba36 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2001-10-16  John Hughes  <john@Calva.COM>
+
+       * system.c(sys_ssisys): decode some args for ssisys.
+
 2001-10-16  John Hughes  <john@Calva.COM>
 
        * mem.c: MS_SYNC is zero, so must be first in xlat list.
index da0aa144aab82aa09caf1cc5e5948e96ddd59c8f..ef4e0e4d69f0b43a89b8234b016894afdb1633cd 100644 (file)
--- a/system.c
+++ b/system.c
@@ -2010,6 +2010,7 @@ struct tcb *tcp;
 
 #ifdef HAVE_SYS_NSCSYS_H
 
+struct cred;
 #include <sys/nscsys.h>
 
 static struct xlat ssi_cmd [] = {
@@ -2065,6 +2066,8 @@ struct tcb *tcp;
        struct ssisys_iovec iov;
        
        if (entering (tcp)) {
+               ts_reclaim_child_inargs_t trc;
+               cls_nodeinfo_args_t cni;
                if (tcp->u_arg[1] != sizeof iov ||
                    umove (tcp, tcp->u_arg[0], &iov) < 0)
                {
@@ -2075,7 +2078,22 @@ struct tcb *tcp;
                printxval(ssi_cmd, iov.tio_id.id_cmd, "SSISYS_???");
                tprintf (":%d", iov.tio_id.id_ver);
                switch (iov.tio_id.id_cmd) {
+                   case SSISYS_RECLAIM_CHILD:
+                       if (iov.tio_udatainlen != sizeof trc ||
+                           umove (tcp, (long) iov.tio_udatain, &trc) < 0)
+                               goto bad;
+                       tprintf (", in={pid=%ld, start=%ld}",
+                                trc.trc_pid, trc.trc_start);
+                       break;
+                   case SSISYS_CLUSTERNODE_INFO:
+                       if (iov.tio_udatainlen != sizeof cni ||
+                           umove (tcp, (long) iov.tio_udatain, &cni) < 0)
+                               goto bad;
+                       tprintf (", in={node=%ld, len=%d}",
+                                cni.nodenum, cni.info_len);
+                       break;
                    default:
+                   bad:
                        if (iov.tio_udatainlen) {
                                tprintf (", in=[/* %d bytes */]",
                                         iov.tio_udatainlen);