version 1.15, 2016/01/06 17:52:18 |
version 1.16, 2016/01/14 05:27:42 |
|
|
ktrmsghdr(const struct msghdr *msg) |
ktrmsghdr(const struct msghdr *msg) |
{ |
{ |
printf("struct msghdr { name=%p, namelen=%u, iov=%p, iovlen=%u," |
printf("struct msghdr { name=%p, namelen=%u, iov=%p, iovlen=%u," |
" control=%p, controllen=%u, flags=%d }\n", |
" control=%p, controllen=%u, flags=", |
msg->msg_name, msg->msg_namelen, msg->msg_iov, msg->msg_iovlen, |
msg->msg_name, msg->msg_namelen, msg->msg_iov, msg->msg_iovlen, |
msg->msg_control, msg->msg_controllen, msg->msg_flags); |
msg->msg_control, msg->msg_controllen); |
|
sendrecvflagsname(msg->msg_flags); |
|
printf(" }\n"); |
} |
} |
|
|
static void |
static void |
|
|
if (count > 1) |
if (count > 1) |
printf(" [%d]", count); |
printf(" [%d]", count); |
for (i = 0; i < count; i++) { |
for (i = 0; i < count; i++) { |
char flags[100]; |
|
const char *filter = ""; |
|
const char *comma = ""; |
|
memcpy(&kev, data, sizeof(kev)); |
memcpy(&kev, data, sizeof(kev)); |
data += sizeof(kev); |
data += sizeof(kev); |
switch (kev.filter) { |
printf(" { ident=%lu, filter=", kev.ident); |
case EVFILT_READ: |
evfiltername(kev.filter); |
filter = "read"; |
printf(", flags="); |
break; |
evflagsname(kev.flags); |
case EVFILT_WRITE: |
printf(", fflags="); |
filter = "write"; |
evfflagsname(kev.filter, kev.fflags); |
break; |
printf(", data=%llu", kev.data); |
case EVFILT_VNODE: |
if ((kev.flags & EV_ERROR) && fancy) { |
filter = "vnode"; |
printf("<\"%s\">", strerror(kev.data)); |
break; |
|
case EVFILT_PROC: |
|
filter = "proc"; |
|
break; |
|
case EVFILT_SIGNAL: |
|
filter = "signal"; |
|
break; |
|
case EVFILT_TIMER: |
|
filter = "timer"; |
|
break; |
|
} |
} |
#define KEV_FLAG(value, name) \ |
printf(", udata=%p }", kev.udata); |
do if (kev.flags & value) { \ |
|
strlcat(flags, comma, sizeof(flags)); \ |
|
strlcat(flags, name, sizeof(flags)); \ |
|
comma = ","; \ |
|
} while (0) |
|
|
|
KEV_FLAG(EV_ADD, "add"); |
|
KEV_FLAG(EV_ENABLE, "enable"); |
|
KEV_FLAG(EV_DISABLE, "disable"); |
|
KEV_FLAG(EV_DELETE, "delete"); |
|
KEV_FLAG(EV_ONESHOT, "oneshot"); |
|
KEV_FLAG(EV_CLEAR, "clear"); |
|
KEV_FLAG(EV_EOF, "EOF"); |
|
KEV_FLAG(EV_ERROR, "error"); |
|
|
|
printf(" { filter=%s flags=%s ident=%lu }", filter, flags, kev.ident); |
|
} |
} |
printf("\n"); |
printf("\n"); |
} |
} |