aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/signal.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2009-07-28 00:41:45 +0200
committerHarald Welte <laforge@gnumonks.org>2009-07-28 00:41:45 +0200
commit7bfc26749662e3a3227037cce4a24748343b50be (patch)
tree2bd0ad79d43b2e72407792d30cac97e5fb8f825d /openbsc/src/signal.c
parentb49248bf48b0856e3b156810681ea3fca44c728a (diff)
move allocation of talloc contexts into link-time constructor
This is much more optimal than checking if the context exists every time we allocate the respective object.
Diffstat (limited to 'openbsc/src/signal.c')
-rw-r--r--openbsc/src/signal.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/openbsc/src/signal.c b/openbsc/src/signal.c
index 41352fb1a..bf5671ee1 100644
--- a/openbsc/src/signal.c
+++ b/openbsc/src/signal.c
@@ -39,9 +39,6 @@ int register_signal_handler(unsigned int subsys, signal_cbfn *cbfn, void *data)
{
struct signal_handler *sig_data;
- if (!tall_sigh_ctx)
- tall_sigh_ctx = talloc_named_const(NULL, 1, "signal_handler");
-
sig_data = talloc(tall_sigh_ctx, struct signal_handler);
if (!sig_data)
return -ENOMEM;
@@ -84,3 +81,8 @@ void dispatch_signal(unsigned int subsys, unsigned int signal, void *signal_data
(*handler->cbfn)(subsys, signal, handler->data, signal_data);
}
}
+
+static __attribute__((constructor)) void on_dso_load_signal(void)
+{
+ tall_sigh_ctx = talloc_named_const(NULL, 1, "signal_handler");
+}