summaryrefslogtreecommitdiff
path: root/cesar/mac/sar/src
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/mac/sar/src
parentb3953ff3980e79225bff40018f201858dbc620b3 (diff)
cesar/mac/sar: move the sar_pb_stats option in sar & avoid global variable, ref #2666
Diffstat (limited to 'cesar/mac/sar/src')
-rw-r--r--cesar/mac/sar/src/sar.c16
-rw-r--r--cesar/mac/sar/src/sar_pb_stats.c28
2 files changed, 26 insertions, 18 deletions
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;
}
}