summaryrefslogtreecommitdiff
path: root/strace.c
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2013-06-26 14:14:29 +0200
committerDenys Vlasenko <dvlasenk@redhat.com>2013-06-26 14:58:03 +0200
commitfadbf6679cb52d4265a771cbb8635a2ff472e869 (patch)
tree16c2426e98cfd815de5bc56bb5ca93a0316caae7 /strace.c
parent1b2bfbc8257231c18dcdd30b8a84eadffbe9417a (diff)
downloadstrace-fadbf6679cb52d4265a771cbb8635a2ff472e869.tar.gz
strace-fadbf6679cb52d4265a771cbb8635a2ff472e869.tar.bz2
strace-fadbf6679cb52d4265a771cbb8635a2ff472e869.tar.xz
Get rid of TCB_INUSE and TCB_STRACE_CHILD
We can use tcb::pid == 0 as an indicator of free tcb, and we already have strace_child variable which holds pid of our child, if any. Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'strace.c')
-rw-r--r--strace.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/strace.c b/strace.c
index 3fd35d9..1415aab 100644
--- a/strace.c
+++ b/strace.c
@@ -678,10 +678,9 @@ alloctcb(int pid)
for (i = 0; i < tcbtabsize; i++) {
tcp = tcbtab[i];
- if ((tcp->flags & TCB_INUSE) == 0) {
+ if (!tcp->pid) {
memset(tcp, 0, sizeof(*tcp));
tcp->pid = pid;
- tcp->flags = TCB_INUSE;
#if SUPPORTED_PERSONALITIES > 1
tcp->currpers = current_personality;
#endif
@@ -959,7 +958,7 @@ startup_attach(void)
for (tcbi = 0; tcbi < tcbtabsize; tcbi++) {
tcp = tcbtab[tcbi];
- if (!(tcp->flags & TCB_INUSE))
+ if (!tcp->pid)
continue;
/* Is this a process we should attach to, but not yet attached? */
@@ -1252,9 +1251,9 @@ startup_child(char **argv)
}
tcp = alloctcb(pid);
if (!NOMMU_SYSTEM)
- tcp->flags |= TCB_ATTACHED | TCB_STRACE_CHILD | TCB_STARTUP | post_attach_sigstop;
+ tcp->flags |= TCB_ATTACHED | TCB_STARTUP | post_attach_sigstop;
else
- tcp->flags |= TCB_ATTACHED | TCB_STRACE_CHILD | TCB_STARTUP;
+ tcp->flags |= TCB_ATTACHED | TCB_STARTUP;
newoutf(tcp);
}
else {
@@ -1916,7 +1915,7 @@ pid2tcb(int pid)
for (i = 0; i < tcbtabsize; i++) {
struct tcb *tcp = tcbtab[i];
- if (tcp->pid == pid && (tcp->flags & TCB_INUSE))
+ if (tcp->pid == pid)
return tcp;
}
@@ -1937,12 +1936,12 @@ cleanup(void)
for (i = 0; i < tcbtabsize; i++) {
tcp = tcbtab[i];
- if (!(tcp->flags & TCB_INUSE))
+ if (!tcp->pid)
continue;
if (debug_flag)
fprintf(stderr,
"cleanup: looking at pid %u\n", tcp->pid);
- if (tcp->flags & TCB_STRACE_CHILD) {
+ if (tcp->pid == strace_child) {
kill(tcp->pid, SIGCONT);
kill(tcp->pid, fatal_sig);
}