diff options
author | Harald Welte <laforge@gnumonks.org> | 2009-07-28 00:41:45 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2009-07-28 00:41:45 +0200 |
commit | 7bfc26749662e3a3227037cce4a24748343b50be (patch) | |
tree | 2bd0ad79d43b2e72407792d30cac97e5fb8f825d /openbsc/src/trau_mux.c | |
parent | b49248bf48b0856e3b156810681ea3fca44c728a (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/trau_mux.c')
-rw-r--r-- | openbsc/src/trau_mux.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/openbsc/src/trau_mux.c b/openbsc/src/trau_mux.c index 04febbd63..9ff7001d3 100644 --- a/openbsc/src/trau_mux.c +++ b/openbsc/src/trau_mux.c @@ -55,10 +55,6 @@ int trau_mux_map(const struct gsm_e1_subslot *src, { struct map_entry *me; - if (!tall_map_ctx) - tall_map_ctx = talloc_named_const(tall_bsc_ctx, 1, - "trau_map_entry"); - me = talloc(tall_map_ctx, struct map_entry); if (!me) return -ENOMEM; @@ -201,10 +197,6 @@ int trau_recv_lchan(struct gsm_lchan *lchan, u_int32_t callref) struct gsm_e1_subslot *src_ss; struct upqueue_entry *ue; - if (!tall_upq_ctx) - tall_upq_ctx = talloc_named_const(tall_bsc_ctx, 1, - "trau_upq_entry"); - ue = talloc(tall_upq_ctx, struct upqueue_entry); if (!ue) return -ENOMEM; @@ -243,3 +235,12 @@ int trau_send_lchan(struct gsm_lchan *lchan, struct decoded_trau_frame *tf) return subchan_mux_enqueue(mx, dst_e1_ss->e1_ts_ss, trau_bits_out, TRAU_FRAME_BITS); } + +static __attribute__((constructor)) void on_dso_load_trau_mux(void) +{ + tall_map_ctx = talloc_named_const(tall_bsc_ctx, 1, + "trau_map_entry"); + + tall_upq_ctx = talloc_named_const(tall_bsc_ctx, 1, + "trau_upq_entry"); +} |