diff options
author | John Hughes <john@Calva.COM> | 2001-10-18 14:52:24 +0000 |
---|---|---|
committer | John Hughes <john@Calva.COM> | 2001-10-18 14:52:24 +0000 |
commit | 2d8b2c587152bfa3408d4920f07cbb865fd36dff (patch) | |
tree | 53355ea170e4b91ab39bfd86c171e76fb029516b /system.c | |
parent | 421620897008f94f44475286d92c8723dcaf4368 (diff) | |
download | strace-2d8b2c587152bfa3408d4920f07cbb865fd36dff.tar.gz strace-2d8b2c587152bfa3408d4920f07cbb865fd36dff.tar.bz2 strace-2d8b2c587152bfa3408d4920f07cbb865fd36dff.tar.xz |
handle return values for ssisys on NSC
Diffstat (limited to 'system.c')
-rw-r--r-- | system.c | 23 |
1 files changed, 21 insertions, 2 deletions
@@ -2064,10 +2064,11 @@ int sys_ssisys (tcp) struct tcb *tcp; { struct ssisys_iovec iov; - + cls_nodeinfo_args_t cni; + clusternode_info_t info; + 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) { @@ -2101,13 +2102,31 @@ struct tcb *tcp; } } else { + if (tcp->u_arg[1] != sizeof iov || + umove (tcp, tcp->u_arg[0], &iov) < 0) + goto done; switch (iov.tio_id.id_cmd) { + case SSISYS_CLUSTERNODE_INFO: + if (iov.tio_udatainlen != sizeof cni || + umove (tcp, (long) iov.tio_udatain, &cni) < 0) + goto bad_out; + if (cni.info_len != sizeof info || + iov.tio_udataoutlen != sizeof &info || + umove (tcp, (long) iov.tio_udataout, &info) < 0) + goto bad_out; + tprintf (", out={node=%ld, cpus=%d, online=%d}", + info.node_num, info.node_totalcpus, + info.node_onlinecpus); + break; + default: + bad_out: if (iov.tio_udataoutlen) { tprintf (", out=[/* %d bytes */]", iov.tio_udataoutlen); } } + done: tprintf ("}, %ld", tcp->u_arg[1]); } return 0; |