From 9abcfe6c2dbeeb5098c5e41c727265525e7d01b4 Mon Sep 17 00:00:00 2001 From: liamstask Date: Wed, 14 Apr 2010 16:07:34 +0000 Subject: * 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 --- demos/ARM7-AT91SAM7X-LWIP-GCC/lwip/arch/sys_arch.c | 24 +++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'demos/ARM7-AT91SAM7X-LWIP-GCC/lwip') 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) { -- cgit v1.2.3