summaryrefslogtreecommitdiff
path: root/usr/src/cmd/truss/print.c
diff options
context:
space:
mode:
authorKeith M Wesolowski <wesolows@foobazco.org>2013-05-08 18:18:49 +0000
committerKeith M Wesolowski <wesolows@foobazco.org>2013-05-08 18:18:49 +0000
commit43840e901cacf50a9bb41148069e34ca307524e8 (patch)
tree2836162f69bba2534e8b9acf9797e5892f103258 /usr/src/cmd/truss/print.c
parentabd43b3991c3becf4fd3cc1a370aeafdc8749a30 (diff)
parent5dbfd19ad5fcc2b779f40f80fa05c1bd28fd0b4e (diff)
downloadillumos-joyent-43840e901cacf50a9bb41148069e34ca307524e8.tar.gz
[illumos-gate merge]
commit 5dbfd19ad5fcc2b779f40f80fa05c1bd28fd0b4e 3713 Implement accept4() 3714 Implement pipe2() 3715 Implement dup3() 3716 Implement mkostemp() and mkostemps() 3719 so_socketpair syscall should preserve FD_CLOEXEC flag commit 6136c589445a3ea081bd34ab72db1060875b6bcc 3722 link-editor is over restrictive of R_AMD64_32 addends Conflicts: usr/src/lib/libc/sparcv9/Makefile.com [copyright] usr/src/lib/libc/sparc/Makefile.com [copyright] usr/src/lib/libc/i386/Makefile.com [copyright]
Diffstat (limited to 'usr/src/cmd/truss/print.c')
-rw-r--r--usr/src/cmd/truss/print.c72
1 files changed, 71 insertions, 1 deletions
diff --git a/usr/src/cmd/truss/print.c b/usr/src/cmd/truss/print.c
index 9fbbefbe62..fc236bd556 100644
--- a/usr/src/cmd/truss/print.c
+++ b/usr/src/cmd/truss/print.c
@@ -372,6 +372,48 @@ prt_ioa(private_t *pri, int raw, long val) /* print ioctl argument */
}
void
+prt_pip(private_t *pri, int raw, long val) /* print pipe code */
+{
+ const char *s = NULL;
+
+ if (!raw) {
+ switch (val) {
+ case O_CLOEXEC:
+ s = "O_CLOEXEC";
+ break;
+ case O_NONBLOCK:
+ s = "O_NONBLOCK";
+ break;
+ case O_CLOEXEC|O_NONBLOCK:
+ s = "O_CLOEXEC|O_NONBLOCK";
+ break;
+ }
+ }
+
+ if (s == NULL)
+ prt_dex(pri, 0, val);
+ else
+ outstring(pri, s);
+}
+
+void
+prt_pfd(private_t *pri, int raw, long val) /* print pipe code */
+{
+ int fds[2];
+ char str[32];
+
+ /* the fds only have meaning if the return value is 0 */
+ if (!raw &&
+ pri->Rval1 >= 0 &&
+ Pread(Proc, fds, sizeof (fds), (long)val) == sizeof (fds)) {
+ snprintf(str, sizeof (str), "[%d,%d]", fds[0], fds[1]);
+ outstring(pri, str);
+ } else {
+ prt_hex(pri, 0, val);
+ }
+}
+
+void
prt_fcn(private_t *pri, int raw, long val) /* print fcntl code */
{
const char *s = raw? NULL : fcntlname(val);
@@ -1747,6 +1789,32 @@ prt_skv(private_t *pri, int raw, long val)
}
}
+/*
+ * Print accept4() flags argument.
+ */
+void
+prt_acf(private_t *pri, int raw, long val)
+{
+ int first = 1;
+ if (raw || !val ||
+ (val & ~(SOCK_CLOEXEC|SOCK_NDELAY|SOCK_NONBLOCK))) {
+ prt_dex(pri, 0, val);
+ return;
+ }
+
+ if (val & SOCK_CLOEXEC) {
+ outstring(pri, "|SOCK_CLOEXEC" + first);
+ first = 0;
+ }
+ if (val & SOCK_NDELAY) {
+ outstring(pri, "|SOCK_NDELAY" + first);
+ first = 0;
+ }
+ if (val & SOCK_NONBLOCK) {
+ outstring(pri, "|SOCK_NONBLOCK" + first);
+ }
+}
+
/*
* Print setsockopt()/getsockopt() 2nd argument.
@@ -2708,7 +2776,7 @@ void (* const Print[])() = {
prt_rst, /* RST -- print string returned by syscall */
prt_smf, /* SMF -- print streams message flags */
prt_ioa, /* IOA -- print ioctl argument */
- prt_nov, /* Was SIX, now available for reuse */
+ prt_pip, /* PIP -- print pipe flags */
prt_mtf, /* MTF -- print mount flags */
prt_mft, /* MFT -- print mount file system type */
prt_iob, /* IOB -- print contents of I/O buffer */
@@ -2783,5 +2851,7 @@ void (* const Print[])() = {
prt_mob, /* MOB -- print mmapobj() flags */
prt_snf, /* SNF -- print AT_SYMLINK_[NO]FOLLOW flag */
prt_skc, /* SKC -- print sockconfig() subcode */
+ prt_acf, /* ACF -- print accept4 flags */
+ prt_pfd, /* PFD -- print pipe fds */
prt_dec, /* HID -- hidden argument, make this the last one */
};