add rt_tick_set function
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1551 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
parent
0aa5ded9c1
commit
cfd580edf4
|
@ -63,6 +63,7 @@ void rt_object_put_sethook(void (*hook)(struct rt_object* object));
|
|||
*/
|
||||
void rt_system_tick_init(void);
|
||||
rt_tick_t rt_tick_get(void);
|
||||
void rt_tick_set(rt_tick_t tick);
|
||||
void rt_tick_increase(void);
|
||||
rt_tick_t rt_tick_from_millisecond(rt_uint32_t ms);
|
||||
|
||||
|
|
15
src/clock.c
15
src/clock.c
|
@ -15,8 +15,10 @@
|
|||
* 2010-03-08 Bernard remove rt_passed_second
|
||||
* 2010-05-20 Bernard fix the tick exceeds the maximum limits
|
||||
* 2010-07-13 Bernard fix rt_tick_from_millisecond issue found by kuronca
|
||||
* 2011-06-26 Bernard add rt_tick_set function.
|
||||
*/
|
||||
|
||||
#include <rthw.h>
|
||||
#include <rtthread.h>
|
||||
|
||||
static rt_tick_t rt_tick;
|
||||
|
@ -51,6 +53,19 @@ rt_tick_t rt_tick_get()
|
|||
return rt_tick;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function will set current tick
|
||||
*/
|
||||
void rt_tick_set(rt_tick_t tick)
|
||||
{
|
||||
rt_base_t level;
|
||||
level = rt_hw_interrupt_disable();
|
||||
|
||||
rt_tick = tick;
|
||||
|
||||
rt_hw_interrupt_enable(level);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function will notify kernel there is one tick passed. Normally,
|
||||
* this function is invoked by clock ISR.
|
||||
|
|
|
@ -44,7 +44,11 @@ rt_err_t rt_get_errno(void)
|
|||
{
|
||||
rt_thread_t tid;
|
||||
|
||||
RT_DEBUG_NOT_IN_INTERRUPT;
|
||||
if(rt_interrupt_get_nest() != 0)
|
||||
{
|
||||
/* it's in interrupt context */
|
||||
return errno;
|
||||
}
|
||||
|
||||
tid = rt_thread_self();
|
||||
if (tid == RT_NULL) return errno;
|
||||
|
@ -61,7 +65,12 @@ void rt_set_errno(rt_err_t error)
|
|||
{
|
||||
rt_thread_t tid;
|
||||
|
||||
RT_DEBUG_NOT_IN_INTERRUPT;
|
||||
if(rt_interrupt_get_nest() != 0)
|
||||
{
|
||||
/* it's in interrupt context */
|
||||
errno = error;
|
||||
return;
|
||||
}
|
||||
|
||||
tid = rt_thread_self();
|
||||
if (tid == RT_NULL) { errno = error; return; }
|
||||
|
|
Loading…
Reference in New Issue