From 4f534f57328b3dd6fbe5db23fc2132dd55c35787 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Thu, 13 Oct 2011 15:38:49 -0700 Subject: [PATCH] add statistic counters to determine the usage of sys_arch.c --- lwip/src/arch/sys_arch.c | 59 ++++++++++++++++++++++++++++--------- lwip/src/include/lwipopts.h | 2 +- 2 files changed, 46 insertions(+), 15 deletions(-) diff --git a/lwip/src/arch/sys_arch.c b/lwip/src/arch/sys_arch.c index 594cf38d..b305ad72 100644 --- a/lwip/src/arch/sys_arch.c +++ b/lwip/src/arch/sys_arch.c @@ -101,8 +101,11 @@ sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, */ void sys_sem_free(sys_sem_t* sem) { - sem->valid = FALSE; - sem_destroy(&sem->sem); + if (BUILTIN_EXPECT(sem != NULL, 1)) { + sem->valid = FALSE; + SYS_STATS_DEC(sem.used); + sem_destroy(&sem->sem); + } } /* sys_sem_valid(): returns if semaphore is valid @@ -110,16 +113,29 @@ void sys_sem_free(sys_sem_t* sem) */ int sys_sem_valid(sys_sem_t* sem) { + if (BUILTIN_EXPECT(sem == NULL, 0)) + return FALSE; return sem->valid; } /* sys_sem_new(): creates a new semaphre with given count. * This semaphore becomes valid */ -err_t sys_sem_new(sys_sem_t* sem, u8_t count) +err_t sys_sem_new(sys_sem_t* s, u8_t count) { - sem->valid = TRUE; - return sem_init(&sem->sem, count); + int err; + + if (BUILTIN_EXPECT(!s, 0)) + return ERR_VAL; + + err = sem_init(&s->sem, count); + if (err < 0) + return ERR_VAL; + + SYS_STATS_INC_USED(sem); + s->valid = TRUE; + + return ERR_OK; } /* sys_sem_set_invalid(): this semapohore becomes invalid @@ -158,6 +174,8 @@ u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeout) */ int sys_mbox_valid(sys_mbox_t * mbox) { + if (BUILTIN_EXPECT(mbox == NULL, 0)) + return FALSE; return mbox->valid; } @@ -182,8 +200,11 @@ u32_t sys_arch_mbox_fetch(sys_mbox_t * mbox, void **msg, u32_t timeout) */ void sys_mbox_free(sys_mbox_t* mbox) { - mbox->valid = FALSE; - mailbox_ptr_destroy(&mbox->mailbox); + if (BUILTIN_EXPECT(mbox != NULL, 1)) { + mbox->valid = FALSE; + SYS_STATS_DEC(mbox.used); + mailbox_ptr_destroy(&mbox->mailbox); + } } /* sys_arch_mbox_tryfetch(): poll for new data in mailbox @@ -192,7 +213,6 @@ void sys_mbox_free(sys_mbox_t* mbox) u32_t sys_arch_mbox_tryfetch(sys_mbox_t* mbox, void** msg) { int ret = mailbox_ptr_tryfetch(&mbox->mailbox, msg); - if (ret) return SYS_MBOX_EMPTY; return 0; @@ -201,12 +221,20 @@ u32_t sys_arch_mbox_tryfetch(sys_mbox_t* mbox, void** msg) /* sys_mbox_new(): create a new mailbox with a minimum size of "size" * */ -err_t sys_mbox_new(sys_mbox_t* mbox, int size) +err_t sys_mbox_new(sys_mbox_t* mb, int size) { - LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_new: create mailbox with the minimum size: %d\n", size)); + int err; + + //LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_new: create mailbox with the minimum size: %d\n", size)); + if (BUILTIN_EXPECT(!mb, 0)) + return ERR_VAL; - mbox->valid = TRUE; - return mailbox_ptr_init(&mbox->mailbox); + mb->valid = TRUE; + SYS_STATS_INC_USED(mbox); + err = mailbox_ptr_init(&mb->mailbox); + if (err) + return ERR_MEM; + return ERR_OK; } /* sys_mbox_set_invalid(): set the given mailbox to invald @@ -261,9 +289,12 @@ void sys_mutex_unlock(sys_mutex_t* mutex) /* sys_mutex_new(): create a new mutex * */ -err_t sys_mutex_new(sys_mutex_t * mutex) +err_t sys_mutex_new(sys_mutex_t * m) { - sem_init(mutex, 1); + if (BUILTIN_EXPECT(!m, 0)) + return ERR_VAL; + SYS_STATS_INC_USED(mutex); + sem_init(m, 1); return ERR_OK; } diff --git a/lwip/src/include/lwipopts.h b/lwip/src/include/lwipopts.h index e3de59e0..4bd362be 100644 --- a/lwip/src/include/lwipopts.h +++ b/lwip/src/include/lwipopts.h @@ -235,7 +235,7 @@ #define DHCP_DEBUG LWIP_DBG_OFF #define ETHARP_DEBUG LWIP_DBG_OFF #define TCPIP_DEBUG LWIP_DBG_OFF -#define SYS_DEBUG LWIP_DBG_OFF +#define SYS_DEBUG LWIP_DBG_ON #define RAW_DEBUG LWIP_DBG_OFF #define MEM_DEBUG LWIP_DBG_OFF #define IP_DEBUG LWIP_DBG_OFF