]> git.pld-linux.org Git - packages/strace.git/blame - strace-semop.patch
- added semop patch (show semop()/semtimedop() flags)
[packages/strace.git] / strace-semop.patch
CommitLineData
08bede39
JB
1--- strace-4.5.18/ipc.c.orig 2007-01-15 21:25:52.000000000 +0100
2+++ strace-4.5.18/ipc.c 2009-09-30 17:48:38.080610937 +0200
3@@ -152,6 +152,12 @@
4 { 0, NULL },
5 };
6
7+static const struct xlat semop_flags[] = {
8+ { SEM_UNDO, "SEM_UNDO" },
9+ { IPC_NOWAIT, "IPC_NOWAIT" },
10+ { 0, NULL },
11+};
12+
13 int sys_msgget(tcp)
14 struct tcb *tcp;
15 {
16@@ -273,14 +279,34 @@
17 int sys_semop(tcp)
18 struct tcb *tcp;
19 {
20+ int i;
21+
22 if (entering(tcp)) {
23 tprintf("%lu", tcp->u_arg[0]);
24 if (indirect_ipccall(tcp)) {
25- tprintf(", %#lx", tcp->u_arg[3]);
26- tprintf(", %lu", tcp->u_arg[1]);
27+ tprintf(", %#lx {", tcp->u_arg[3]);
28+ for(i = 0; i < tcp->u_arg[1]; i++) {
29+ struct sembuf sb;
30+ umove(tcp, tcp->u_arg[3]+i*sizeof(struct sembuf), &sb);
31+ if(i != 0)
32+ tprintf(", ");
33+ tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
34+ printflags(semop_flags, sb.sem_flg, "SEM_???");
35+ tprintf("}");
36+ }
37+ tprintf("}, %lu", tcp->u_arg[1]);
38 } else {
39- tprintf(", %#lx", tcp->u_arg[1]);
40- tprintf(", %lu", tcp->u_arg[2]);
41+ tprintf(", %#lx {", tcp->u_arg[1]);
42+ for(i = 0; i < tcp->u_arg[2]; i++) {
43+ struct sembuf sb;
44+ umove(tcp, tcp->u_arg[1]+i*sizeof(struct sembuf), &sb);
45+ if(i != 0)
46+ tprintf(", ");
47+ tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
48+ printflags(semop_flags, sb.sem_flg, "SEM_???");
49+ tprintf("}");
50+ }
51+ tprintf("}, %lu", tcp->u_arg[2]);
52 }
53 }
54 return 0;
55@@ -290,15 +316,35 @@
56 int sys_semtimedop(tcp)
57 struct tcb *tcp;
58 {
59+ int i;
60+
61 if (entering(tcp)) {
62 tprintf("%lu", tcp->u_arg[0]);
63 if (indirect_ipccall(tcp)) {
64- tprintf(", %#lx", tcp->u_arg[3]);
65- tprintf(", %lu, ", tcp->u_arg[1]);
66+ tprintf(", %#lx {", tcp->u_arg[3]);
67+ for(i = 0; i < tcp->u_arg[1]; i++) {
68+ struct sembuf sb;
69+ umove(tcp, tcp->u_arg[3]+i*sizeof(struct sembuf), &sb);
70+ if(i != 0)
71+ tprintf(", ");
72+ tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
73+ printflags(semop_flags, sb.sem_flg, "SEM_???");
74+ tprintf("}");
75+ }
76+ tprintf("}, %lu, ", tcp->u_arg[1]);
77 printtv(tcp, tcp->u_arg[5]);
78 } else {
79- tprintf(", %#lx", tcp->u_arg[1]);
80- tprintf(", %lu, ", tcp->u_arg[2]);
81+ tprintf(", %#lx {", tcp->u_arg[1]);
82+ for(i = 0; i < tcp->u_arg[2]; i++) {
83+ struct sembuf sb;
84+ umove(tcp, tcp->u_arg[1]+i*sizeof(struct sembuf), &sb);
85+ if(i != 0)
86+ tprintf(", ");
87+ tprintf("{%u, %d, ", sb.sem_num, sb.sem_op);
88+ printflags(semop_flags, sb.sem_flg, "SEM_???");
89+ tprintf("}");
90+ }
91+ tprintf("}, %lu, ", tcp->u_arg[2]);
92 printtv(tcp, tcp->u_arg[3]);
93 }
94 }
This page took 0.098423 seconds and 4 git commands to generate.