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.
diff --git a/openbsc/src/trau_mux.c b/openbsc/src/trau_mux.c
index 04febbd..9ff7001 100644
--- a/openbsc/src/trau_mux.c
+++ b/openbsc/src/trau_mux.c
@@ -55,10 +55,6 @@
 {
 	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 @@
 	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 @@
 	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");
+}