]> git.pld-linux.org Git - packages/strace.git/commitdiff
- show semop() and semtimedwait() flags
authorJakub Bogusz <qboosh@pld-linux.org>
Wed, 30 Sep 2009 16:00:09 +0000 (16:00 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    strace-semop.patch -> 1.1

strace-semop.patch [new file with mode: 0644]

diff --git a/strace-semop.patch b/strace-semop.patch
new file mode 100644 (file)
index 0000000..739d206
--- /dev/null
@@ -0,0 +1,94 @@
+--- strace-4.5.18/ipc.c.orig   2007-01-15 21:25:52.000000000 +0100
++++ strace-4.5.18/ipc.c        2009-09-30 17:48:38.080610937 +0200
+@@ -152,6 +152,12 @@
+       { 0,            NULL            },
+ };
++static const struct xlat semop_flags[] = {
++      { SEM_UNDO,     "SEM_UNDO"      },
++      { IPC_NOWAIT,   "IPC_NOWAIT"    },
++      { 0,            NULL            },
++};
++
+ int sys_msgget(tcp)
+ struct tcb *tcp;
+ {
+@@ -273,14 +279,34 @@
+ int sys_semop(tcp)
+ struct tcb *tcp;
+ {
++      int i;
++
+       if (entering(tcp)) {
+               tprintf("%lu", tcp->u_arg[0]);
+               if (indirect_ipccall(tcp)) {
+-                      tprintf(", %#lx", tcp->u_arg[3]);
+-                      tprintf(", %lu", tcp->u_arg[1]);
++                      tprintf(", %#lx {", tcp->u_arg[3]);
++                      for(i = 0; i < tcp->u_arg[1]; i++) {
++                              struct sembuf sb;
++                              umove(tcp, tcp->u_arg[3]+i*sizeof(struct sembuf), &sb);
++                              if(i != 0)
++                                      tprintf(", ");
++                              tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
++                              printflags(semop_flags, sb.sem_flg, "SEM_???");
++                              tprintf("}");
++                      }
++                      tprintf("}, %lu", tcp->u_arg[1]);
+               } else {
+-                      tprintf(", %#lx", tcp->u_arg[1]);
+-                      tprintf(", %lu", tcp->u_arg[2]);
++                      tprintf(", %#lx {", tcp->u_arg[1]);
++                      for(i = 0; i < tcp->u_arg[2]; i++) {
++                              struct sembuf sb;
++                              umove(tcp, tcp->u_arg[1]+i*sizeof(struct sembuf), &sb);
++                              if(i != 0)
++                                      tprintf(", ");
++                              tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
++                              printflags(semop_flags, sb.sem_flg, "SEM_???");
++                              tprintf("}");
++                      }
++                      tprintf("}, %lu", tcp->u_arg[2]);
+               }
+       }
+       return 0;
+@@ -290,15 +316,35 @@
+ int sys_semtimedop(tcp)
+ struct tcb *tcp;
+ {
++      int i;
++
+       if (entering(tcp)) {
+               tprintf("%lu", tcp->u_arg[0]);
+               if (indirect_ipccall(tcp)) {
+-                      tprintf(", %#lx", tcp->u_arg[3]);
+-                      tprintf(", %lu, ", tcp->u_arg[1]);
++                      tprintf(", %#lx {", tcp->u_arg[3]);
++                      for(i = 0; i < tcp->u_arg[1]; i++) {
++                              struct sembuf sb;
++                              umove(tcp, tcp->u_arg[3]+i*sizeof(struct sembuf), &sb);
++                              if(i != 0)
++                                      tprintf(", ");
++                              tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
++                              printflags(semop_flags, sb.sem_flg, "SEM_???");
++                              tprintf("}");
++                      }
++                      tprintf("}, %lu, ", tcp->u_arg[1]);
+                       printtv(tcp, tcp->u_arg[5]);
+               } else {
+-                      tprintf(", %#lx", tcp->u_arg[1]);
+-                      tprintf(", %lu, ", tcp->u_arg[2]);
++                      tprintf(", %#lx {", tcp->u_arg[1]);
++                      for(i = 0; i < tcp->u_arg[2]; i++) {
++                              struct sembuf sb;
++                              umove(tcp, tcp->u_arg[1]+i*sizeof(struct sembuf), &sb);
++                              if(i != 0)
++                                      tprintf(", ");
++                              tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
++                              printflags(semop_flags, sb.sem_flg, "SEM_???");
++                              tprintf("}");
++                      }
++                      tprintf("}, %lu, ", tcp->u_arg[2]);
+                       printtv(tcp, tcp->u_arg[3]);
+               }
+       }
This page took 0.031882 seconds and 4 git commands to generate.