a bugfix for mail queue and printf clipping switch
1. add TOS_CFG_LIBC_PRINTF_EN 1: enable printf to implement tos_kprintf when you call tos_kprintf(actually currently it's a MACRO rather than a function) , the libc will be invloved into the image, most of the time it means a larger image size. 0: disable printf, means tos_kprintf is defined as an empty MACRO most of the time, means you will not get a log output from the uart(currently we donnot have a console yet) but a smaller image size. 2. fix a bug of tos_mail_q and tos_priority_mail_q if we are post-ing a mail and there is[are] task[s] just pend-ing for the mail queue, the mail delivered to the pend-er will be a pointer, and probably it's a pointer to the local variable on the stack. Actually we should do a memcpy rather than a pointer assignment. for more details, see the patch.
This commit is contained in:
@@ -31,14 +31,14 @@
|
||||
|
||||
#define TOS_PTR_SANITY_CHECK(ptr) \
|
||||
do { \
|
||||
if (unlikely((ptr) == K_NULL)) { \
|
||||
if (unlikely(!(ptr))) { \
|
||||
return K_ERR_OBJ_PTR_NULL; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define TOS_PTR_SANITY_CHECK_RC(ptr, return_code) \
|
||||
do { \
|
||||
if (unlikely((ptr) == K_NULL)) { \
|
||||
if (unlikely(!(ptr))) { \
|
||||
return return_code; \
|
||||
} \
|
||||
} while(0)
|
||||
@@ -70,12 +70,18 @@
|
||||
#define TOS_OBJ_VERIFY_RC(obj, obj_type, return_code)
|
||||
#endif
|
||||
|
||||
#if TOS_CFG_LIBC_PRINTF_EN > 0u
|
||||
#define LIBC_PRINTF printf
|
||||
#else
|
||||
#define LIBC_PRINTF(...)
|
||||
#endif
|
||||
|
||||
// currently we use default microlib supplied by mdk
|
||||
#define tos_kprintf(...) printf(__VA_ARGS__);
|
||||
#define tos_kprintf(...) LIBC_PRINTF(__VA_ARGS__);
|
||||
|
||||
#define tos_kprintln(...) \
|
||||
printf(__VA_ARGS__); \
|
||||
printf("\n");
|
||||
LIBC_PRINTF(__VA_ARGS__); \
|
||||
LIBC_PRINTF("\n");
|
||||
|
||||
#define TOS_ASSERT_AUX(exp, function, line) \
|
||||
if (!(exp)) { \
|
||||
|
Reference in New Issue
Block a user