aboutsummaryrefslogtreecommitdiffstats
path: root/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip
diff options
context:
space:
mode:
authorliamstask <liamstask@35acf78f-673a-0410-8e92-d51de3d6d3f4>2010-04-14 16:07:34 +0000
committerliamstask <liamstask@35acf78f-673a-0410-8e92-d51de3d6d3f4>2010-04-14 16:07:34 +0000
commit9abcfe6c2dbeeb5098c5e41c727265525e7d01b4 (patch)
treef4c96fa8e74d6473f407fab83f251fb4f8ca58a5 /demos/ARM7-AT91SAM7X-LWIP-GCC/lwip
parentc4060993193ff2fa2cf153df16d41b01f4c7689e (diff)
downloadChibiOS-9abcfe6c2dbeeb5098c5e41c727265525e7d01b4.tar.gz
ChibiOS-9abcfe6c2dbeeb5098c5e41c727265525e7d01b4.tar.bz2
ChibiOS-9abcfe6c2dbeeb5098c5e41c727265525e7d01b4.zip
* add more stats tracking to lwip sys_arch.c - in doing so, check for failed allocations
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1866 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'demos/ARM7-AT91SAM7X-LWIP-GCC/lwip')
-rw-r--r--demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/arch/sys_arch.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/arch/sys_arch.c b/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/arch/sys_arch.c
index c164a7a4e..517bfba03 100644
--- a/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/arch/sys_arch.c
+++ b/demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/arch/sys_arch.c
@@ -56,6 +56,7 @@
#include "lwip/opt.h"
#include "lwip/mem.h"
#include "lwip/sys.h"
+#include "lwip/stats.h"
#include "arch/cc.h"
#include "arch/sys_arch.h"
@@ -67,13 +68,20 @@ void sys_init(void) {
sys_sem_t sys_sem_new(u8_t count) {
sys_sem_t sem = chHeapAlloc(NULL, sizeof(Semaphore));
- chSemInit(sem, (cnt_t)count);
+ if (sem == 0) {
+ SYS_STATS_INC(sem.err);
+ }
+ else {
+ chSemInit(sem, (cnt_t)count);
+ SYS_STATS_INC(sem.used);
+ }
return sem;
}
void sys_sem_free(sys_sem_t sem) {
chHeapFree(sem);
+ SYS_STATS_DEC(sem.used);
}
void sys_sem_signal(sys_sem_t sem) {
@@ -95,16 +103,22 @@ u32_t sys_arch_sem_wait(sys_sem_t sem, u32_t timeout) {
}
sys_mbox_t sys_mbox_new(int size) {
- sys_mbox_t mbox;
-
- mbox = chHeapAlloc(NULL, sizeof(Mailbox) + sizeof(msg_t) * size);
- chMBInit(mbox, (void *)(((uint8_t *)mbox) + sizeof(Mailbox)), size);
+
+ sys_mbox_t mbox = chHeapAlloc(NULL, sizeof(Mailbox) + sizeof(msg_t) * size);
+ if (mbox == 0) {
+ SYS_STATS_INC(mbox.err);
+ }
+ else {
+ chMBInit(mbox, (void *)(((uint8_t *)mbox) + sizeof(Mailbox)), size);
+ SYS_STATS_INC(mbox.used);
+ }
return mbox;
}
void sys_mbox_free(sys_mbox_t mbox) {
chHeapFree(mbox);
+ SYS_STATS_DEC(mbox.used);
}
void sys_mbox_post(sys_mbox_t mbox, void *msg) {