Mercurial > dovecot > original-hg > dovecot-1.2
annotate src/lib/child-wait.h @ 9354:687ac828b964 HEAD
lib-index: modseqs weren't tracked properly within session when changes were done.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 01 Sep 2009 13:05:03 -0400 |
parents | 3e8f847f68a4 |
children |
rev | line source |
---|---|
8306
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
1 #ifndef CHILD_WAIT_H |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 #define CHILD_WAIT_H |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 struct child_wait_status { |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 struct child_wait *wait; |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 pid_t pid; |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 int status; |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 }; |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 typedef void child_wait_callback_t(const struct child_wait_status *status, |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 void *context); |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 struct child_wait * |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 child_wait_new_with_pid(pid_t pid, child_wait_callback_t *callback, |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 void *context); |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 #ifdef CONTEXT_TYPE_SAFETY |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 # define child_wait_new_with_pid(pid, callback, context) \ |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
19 ({(void)(1 ? 0 : callback((const struct child_wait_status *)0, \ |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
20 context)); \ |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
21 child_wait_new_with_pid(pid, (child_wait_callback_t *)callback, context); }) |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
22 #else |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
23 # define child_wait_new_with_pid(pid, callback, context) \ |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
24 child_wait_new_with_pid(pid, (child_wait_callback_t *)callback, context) |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
25 #endif |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
26 #define child_wait_new(callback, context) \ |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 child_wait_new_with_pid((pid_t)-1, callback, context) |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
28 void child_wait_free(struct child_wait **wait); |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
29 |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 void child_wait_add_pid(struct child_wait *wait, pid_t pid); |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
31 void child_wait_remove_pid(struct child_wait *wait, pid_t pid); |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
32 |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
33 void child_wait_init(void); |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
34 void child_wait_deinit(void); |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 |
3e8f847f68a4
Added API for waiting child processes.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 #endif |