summaryrefslogtreecommitdiff
path: root/cesar/interface
diff options
context:
space:
mode:
authorlaranjeiro2009-04-06 14:45:23 +0000
committerlaranjeiro2009-04-06 14:45:23 +0000
commit0afb4103e4a2ee7e2d091d8f6e16589555a23ccc (patch)
tree041169b304cabced97d517c6a2fc84407dccc0ef /cesar/interface
parentce9a97099d9d062c8c6e47962a9cb54bcd5281e3 (diff)
interface:
Replaced the circular buffer by a mailbox. git-svn-id: svn+ssh://pessac/svn/cesar/trunk@4415 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar/interface')
-rw-r--r--cesar/interface/inc/context.h12
-rw-r--r--cesar/interface/interface.h4
-rw-r--r--cesar/interface/src/interface.c17
3 files changed, 7 insertions, 26 deletions
diff --git a/cesar/interface/inc/context.h b/cesar/interface/inc/context.h
index 9c2c863be1..9361ef188b 100644
--- a/cesar/interface/inc/context.h
+++ b/cesar/interface/inc/context.h
@@ -16,7 +16,7 @@
#include <cyg/kernel/kapi.h>
#include <cyg/hal/hal_arch.h>
#include "hle/hle.h"
-#include "lib/circular_buffer.h"
+#include "lib/mbox.h"
#include "mac/common/config.h"
#include "interface/interface.h"
@@ -30,7 +30,7 @@
#define INTERFACE_THREAD_STACK CYGNUM_HAL_STACK_SIZE_TYPICAL
-#define INTERFACE_THREAD_PRIORITY 9
+#define INTERFACE_THREAD_PRIORITY 9
struct interface_t
{
@@ -63,12 +63,8 @@ struct interface_t
interface_beacon_add_cb_t beacon_add_cb;
/** beacon user data. */
void *beacon_user_data;
-
- /** Buffer management. */
- u8 *buffer_list[INTERFACE_BUFFER_LIST_NUM_SLOTS];
- circular_buffer_t buffers;
-
- cyg_mutex_t buffer_mutex;
+ /** Buffer mailbox. */
+ mbox_t buffers_mbox;
/** Thread. */
cyg_thread thread;
diff --git a/cesar/interface/interface.h b/cesar/interface/interface.h
index 675e46e598..2e1a642257 100644
--- a/cesar/interface/interface.h
+++ b/cesar/interface/interface.h
@@ -23,10 +23,6 @@
#include "interface/interface_module.h"
#include "interface/forward.h"
-/** Allocate 2 buffers for sniffer sub-module
- * and 1 buffer for fcall sub-module. */
-#define INTERFACE_BUFFER_LIST_NUM_SLOTS 3
-
/**
* Function to call when the interface receives a new MME.
* \param ctx the interface context
diff --git a/cesar/interface/src/interface.c b/cesar/interface/src/interface.c
index 7cdb0b49fc..b7815f4548 100644
--- a/cesar/interface/src/interface.c
+++ b/cesar/interface/src/interface.c
@@ -101,11 +101,7 @@ interface_init (hle_t *hle, cl_t *cl, sar_t *sar, mac_config_t
&interface_global);
#endif /* CONFIG_INTERFACE_FCALL */
- circular_buffer_init (&interface_global.buffers,
- interface_global.buffer_list,
- INTERFACE_BUFFER_LIST_NUM_SLOTS);
-
- cyg_mutex_init (&interface_global.buffer_mutex);
+ mbox_init (&interface_global.buffers_mbox);
// Integrate the HLE.
hle_init_interface_cb (hle,
@@ -416,17 +412,12 @@ interface_buffer_add (interface_t *ctx, u8 *buffer)
void
interface_buffer_work_add (interface_t *ctx, u8 *buffer)
{
- bool added;
dbg_assert (ctx);
dbg_assert (buffer);
dbg_assert (ctx->buffer_add_cb);
- /* Lock the mutex. */
- cyg_mutex_lock (&ctx->buffer_mutex);
- added = circular_buffer_add (&ctx->buffers, buffer);
- dbg_assert (added);
- cyg_mutex_unlock (&ctx->buffer_mutex);
+ mbox_put (&ctx->buffers_mbox, (mbox_node_t *) buffer);
}
/**
@@ -440,9 +431,7 @@ interface_buffer_work_get (interface_t *ctx)
u8 *buffer;
dbg_assert (ctx);
- cyg_mutex_lock (&ctx->buffer_mutex);
- buffer = circular_buffer_get (&ctx->buffers);
- cyg_mutex_unlock (&ctx->buffer_mutex);
+ buffer = (u8*) mbox_get (&ctx->buffers_mbox);
return buffer;
}