summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author[email protected] <[email protected]>2012-03-22 05:57:54 +0000
committer[email protected] <[email protected]>2012-03-22 05:57:54 +0000
commitb6c1ebf4235134192fda6f7350268847c872e00e (patch)
tree43023a07f37b9d3b0eefc89f64c48b44b6f6151b /src
parent3b805a81378d90f99f10c6dcb307bcd45500aec3 (diff)
add RT_PRINTF_PRECISION in kservice.c; fix re-schedule issue in IPC control function.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2003 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'src')
-rw-r--r--src/ipc.c9
-rw-r--r--src/kservice.c9
2 files changed, 14 insertions, 4 deletions
diff --git a/src/ipc.c b/src/ipc.c
index 058d6c2a3f..0105b1dc00 100644
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -469,6 +469,8 @@ rt_err_t rt_sem_control(rt_sem_t sem, rt_uint8_t cmd, void *arg)
/* enable interrupt */
rt_hw_interrupt_enable(level);
+ rt_schedule();
+
return RT_EOK;
}
@@ -1153,6 +1155,8 @@ rt_err_t rt_event_control(rt_event_t event, rt_uint8_t cmd, void *arg)
/* enable interrupt */
rt_hw_interrupt_enable(level);
+ rt_schedule();
+
return RT_EOK;
}
@@ -1597,7 +1601,6 @@ rt_err_t rt_mb_control(rt_mailbox_t mb, rt_uint8_t cmd, void *arg)
/* resume all waiting thread */
rt_ipc_list_resume_all(&(mb->parent.suspend_thread));
-
/* also resume all mailbox private suspended thread */
rt_ipc_list_resume_all(&(mb->suspend_sender_thread));
@@ -1609,6 +1612,8 @@ rt_err_t rt_mb_control(rt_mailbox_t mb, rt_uint8_t cmd, void *arg)
/* enable interrupt */
rt_hw_interrupt_enable(level);
+ rt_schedule();
+
return RT_EOK;
}
@@ -2144,6 +2149,8 @@ rt_err_t rt_mq_control(rt_mq_t mq, rt_uint8_t cmd, void *arg)
/* enable interrupt */
rt_hw_interrupt_enable(level);
+ rt_schedule();
+
return RT_EOK;
}
diff --git a/src/kservice.c b/src/kservice.c
index 2a6733b141..694cc735fa 100644
--- a/src/kservice.c
+++ b/src/kservice.c
@@ -20,6 +20,9 @@
#include <rtthread.h>
#include <rthw.h>
+/* use precision */
+#define RT_PRINTF_PRECISION
+
/**
* @addtogroup KernelService
*/
@@ -754,11 +757,11 @@ static rt_int32_t vsnprintf(char *buf, rt_size_t size, const char *fmt, va_list
#endif
/* get the conversion qualifier */
qualifier = 0;
- if (*fmt == 'h' || *fmt == 'l'
#ifdef RT_PRINTF_LONGLONG
- || *fmt == 'L'
+ if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L')
+#else
+ if (*fmt == 'h' || *fmt == 'l')
#endif
- )
{
qualifier = *fmt;
++ fmt;