summaryrefslogtreecommitdiff
path: root/cesar
diff options
context:
space:
mode:
authorThierry Carré2011-10-13 14:22:38 +0200
committerThierry Carré2011-10-20 10:37:57 +0200
commit777d64e808fa7c4c903713dd84b69883e3e0fe11 (patch)
tree84dd804a3b6971ac7da0bfb0279dd7bb9f2e4c94 /cesar
parentb3953ff3980e79225bff40018f201858dbc620b3 (diff)
cesar/mac/sar: move the sar_pb_stats option in sar & avoid global variable, ref #2666
Diffstat (limited to 'cesar')
-rw-r--r--cesar/mac/sar/inc/sar_context.h1
-rw-r--r--cesar/mac/sar/inc/sar_pb_stats.h14
-rw-r--r--cesar/mac/sar/sar.h14
-rw-r--r--cesar/mac/sar/sar_pb_stats.h15
-rw-r--r--cesar/mac/sar/src/sar.c16
-rw-r--r--cesar/mac/sar/src/sar_pb_stats.c28
6 files changed, 55 insertions, 33 deletions
diff --git a/cesar/mac/sar/inc/sar_context.h b/cesar/mac/sar/inc/sar_context.h
index 2bf75e3834..ec3965b6de 100644
--- a/cesar/mac/sar/inc/sar_context.h
+++ b/cesar/mac/sar/inc/sar_context.h
@@ -132,6 +132,7 @@ struct sar_pb_stats_t
uint control_reg;
uint current_pb;
u8 current_stei_filter;
+ u8 enable;
};
typedef struct sar_pb_stats_t sar_pb_stats_t;
diff --git a/cesar/mac/sar/inc/sar_pb_stats.h b/cesar/mac/sar/inc/sar_pb_stats.h
index 9d5f2bdf6a..ce07b21ef9 100644
--- a/cesar/mac/sar/inc/sar_pb_stats.h
+++ b/cesar/mac/sar/inc/sar_pb_stats.h
@@ -160,6 +160,20 @@ sar_pb_stats_read_entry (sar_pb_stats_t *ctx, uint index);
void
sar_pb_stats_read_end (sar_pb_stats_t *ctx);
+/**
+ * Active the pb_stats module
+ * \param state Value found in internal.conf file.
+ */
+void
+sar_pb_stats_load_write (sar_pb_stats_t *ctx, u64 state);
+
+/**
+ * Feed back about the state of the module
+ * \return pointer on the answer which is 1 or 0.
+ */
+u8*
+sar_pb_stats_load_read (sar_pb_stats_t *ctx);
+
END_DECLS
#endif /*MAC_SAR_INC_SARPBSTATS_H_*/
diff --git a/cesar/mac/sar/sar.h b/cesar/mac/sar/sar.h
index 7e5d1416ab..7e76d2667d 100644
--- a/cesar/mac/sar/sar.h
+++ b/cesar/mac/sar/sar.h
@@ -387,6 +387,20 @@ sar_mfs_free_tx (sar_t *ctx, mfs_tx_t *mfs);
void
sar_mfs_free_rx (sar_t *ctx, mfs_rx_t *mfs);
+/**
+ * Callback which active the pb_stats module
+ * \param state Value found in internal.conf file.
+ */
+void
+sar_pb_stats_load_write_cb (u64 state);
+
+/**
+ * Callback which indicate if the module is activated
+ * \return state if not zero then the module is loaded
+ */
+u8*
+sar_pb_stats_load_read_cb (void);
+
END_DECLS
#endif /*MAC_SAR_SAR_H_*/
diff --git a/cesar/mac/sar/sar_pb_stats.h b/cesar/mac/sar/sar_pb_stats.h
index 0abdfa3d06..28f48b9824 100644
--- a/cesar/mac/sar/sar_pb_stats.h
+++ b/cesar/mac/sar/sar_pb_stats.h
@@ -82,21 +82,6 @@ sar_read_pb_stats_entry (sar_t *ctx, uint index);
void
sar_read_pb_stats_end (sar_t *ctx);
-
-/**
- * Callback which active the pb_stats module
- * \param state Value found in internal.conf file.
- */
-void
-sar_pb_stats_load_write_cb (u64 state);
-
-/**
- * Callback which indicate if the module is activated
- * \return state if not zero then the module is loaded
- */
-u8*
-sar_pb_stats_load_read_cb (void);
-
END_DECLS
#endif /*MAC_SAR_SARPBSTATS_H_*/
diff --git a/cesar/mac/sar/src/sar.c b/cesar/mac/sar/src/sar.c
index b5a3821ddd..2f78c3512d 100644
--- a/cesar/mac/sar/src/sar.c
+++ b/cesar/mac/sar/src/sar.c
@@ -524,6 +524,11 @@ sar_init (mac_store_t *mac_store, pbproc_t *pbproc, ca_t *ca, u32 seed)
#endif
#if CONFIG_SAR_PB_STATS
sar_pb_stats_init (&ctx->pb_stats);
+ lib_stats_set_stat_callback ("SAR_PB_STATS_LOAD",
+ (lib_stats_cb_r_t) sar_pb_stats_load_read_cb,
+ (lib_stats_cb_w_t) sar_pb_stats_load_write_cb,
+ LIB_STATS_1_BYTE,
+ LIB_STATS_DEBUG);
#endif
lib_rnd_init (&ctx->rnd_gen, seed ^ 0x19257164);
@@ -2215,3 +2220,14 @@ sar_read_pb_stats_end (sar_t *ctx)
#endif
}
+u8*
+sar_pb_stats_load_read_cb (void)
+{
+ return sar_pb_stats_load_read (&sar_global.pb_stats);
+}
+
+void
+sar_pb_stats_load_write_cb (u64 state)
+{
+ sar_pb_stats_load_write (&sar_global.pb_stats, state);
+}
diff --git a/cesar/mac/sar/src/sar_pb_stats.c b/cesar/mac/sar/src/sar_pb_stats.c
index fbecc17f81..ba634bd24f 100644
--- a/cesar/mac/sar/src/sar_pb_stats.c
+++ b/cesar/mac/sar/src/sar_pb_stats.c
@@ -21,9 +21,6 @@
#include "mac/sar/inc/sar.h"
#include <string.h>
-static blk_table_t **sar_pb_stats_table = NULL;
-static u8 sar_pb_stats_loaded = 0;
-
void
sar_pb_stats_init (sar_pb_stats_t *ctx)
{
@@ -32,33 +29,28 @@ sar_pb_stats_init (sar_pb_stats_t *ctx)
/* no filter on init */
ctx->current_stei_filter = PB_STATS_FILTER_DISABLE;
-
- sar_pb_stats_table = &ctx->table;
- lib_stats_set_stat_callback ("SAR_PB_STATS_LOAD",
- (lib_stats_cb_r_t) sar_pb_stats_load_read_cb,
- (lib_stats_cb_w_t) sar_pb_stats_load_write_cb,
- LIB_STATS_1_BYTE,
- LIB_STATS_DEBUG);
-
}
u8*
-sar_pb_stats_load_read_cb (void)
+sar_pb_stats_load_read (sar_pb_stats_t *ctx)
{
- return &sar_pb_stats_loaded;
+ /* Note : we aren't in dsr context */
+ dbg_assert (ctx);
+
+ return &ctx->enable;
}
void
-sar_pb_stats_load_write_cb (u64 state)
+sar_pb_stats_load_write (sar_pb_stats_t *ctx, u64 state)
{
- dbg_assert (sar_pb_stats_table);
+ dbg_assert (ctx);
/* Note : we aren't in dsr context */
- if ((*sar_pb_stats_table == NULL) && state)
+ if (!ctx->table && state)
{
- *sar_pb_stats_table = blk_table_init (sizeof(sar_pb_stats_entry_t),
+ ctx->table = blk_table_init (sizeof(sar_pb_stats_entry_t),
PB_STATS_NB_ENTRY);
- sar_pb_stats_loaded = 1;
+ ctx->enable = 1;
}
}