summaryrefslogtreecommitdiffstats
path: root/src/providers/child_common.h
diff options
context:
space:
mode:
authorPavel Zuna <pzuna@redhat.com>2011-10-20 13:26:18 -0400
committerStephen Gallagher <sgallagh@redhat.com>2011-12-19 11:38:35 -0500
commit6a9bdb6289bb374d203861cef16f312185725cbc (patch)
treecdd97cbecd2b4f60268bc8df55e798565f0b1626 /src/providers/child_common.h
parent1c9d778a0410cdbf516eed7d61acf214ce92067a (diff)
downloadsssd-6a9bdb6289bb374d203861cef16f312185725cbc.tar.gz
sssd-6a9bdb6289bb374d203861cef16f312185725cbc.tar.xz
sssd-6a9bdb6289bb374d203861cef16f312185725cbc.zip
Add common SIGCHLD handling for providers.
Diffstat (limited to 'src/providers/child_common.h')
-rw-r--r--src/providers/child_common.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/providers/child_common.h b/src/providers/child_common.h
index 22a77dbbe..1e9f1b6c1 100644
--- a/src/providers/child_common.h
+++ b/src/providers/child_common.h
@@ -45,6 +45,31 @@ struct io_buffer {
size_t size;
};
+/* COMMON SIGCHLD HANDLING */
+typedef void (*sss_child_fn_t)(int pid, int wait_status, void *pvt);
+
+struct sss_sigchild_ctx;
+struct sss_child_ctx;
+
+/* Create a new child context to manage callbacks */
+errno_t sss_sigchld_init(TALLOC_CTX *mem_ctx,
+ struct tevent_context *ev,
+ struct sss_sigchild_ctx **child_ctx);
+
+errno_t sss_child_register(TALLOC_CTX *mem_ctx,
+ struct sss_sigchild_ctx *sigchld_ctx,
+ pid_t pid,
+ sss_child_fn_t cb,
+ void *pvt,
+ struct sss_child_ctx **child_ctx);
+
+void sss_child_handler(struct tevent_context *ev,
+ struct tevent_signal *se,
+ int signum,
+ int count,
+ void *siginfo,
+ void *private_data);
+
/* Callback to be invoked when a sigchld handler is called.
* The tevent_signal * associated with the handler will be
* freed automatically when this function returns.