update linux port
add cpu delay function
This commit is contained in:
@@ -59,7 +59,6 @@ extern k_task_t *k_next_task;
|
|||||||
|
|
||||||
__PORT__ void _handle_tick_signal();
|
__PORT__ void _handle_tick_signal();
|
||||||
__PORT__ void _handle_context_switch();
|
__PORT__ void _handle_context_switch();
|
||||||
__PORT__ void _delay_ms(uint32_t ms);
|
|
||||||
__PORT__ void _suspend_thread(pthread_t thread_id);
|
__PORT__ void _suspend_thread(pthread_t thread_id);
|
||||||
__PORT__ void _resume_thread(pthread_t thread_id);
|
__PORT__ void _resume_thread(pthread_t thread_id);
|
||||||
__PORT__ void _wait_resume();
|
__PORT__ void _wait_resume();
|
||||||
@@ -70,6 +69,7 @@ __PORT__ void _suspend_task(k_task_t *task);
|
|||||||
__PORT__ void _resume_task(k_task_t *task);
|
__PORT__ void _resume_task(k_task_t *task);
|
||||||
__PORT__ void _install_signal(int sig,void (*func)(int));
|
__PORT__ void _install_signal(int sig,void (*func)(int));
|
||||||
__PORT__ void _filter_signal(sigset_t *sigset);
|
__PORT__ void _filter_signal(sigset_t *sigset);
|
||||||
|
__PORT__ uint64_t _get_time_ms(void);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
sigset_t signal_mask;
|
sigset_t signal_mask;
|
||||||
@@ -80,6 +80,8 @@ interrupt_manager _int_manager={
|
|||||||
.count = 0
|
.count = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static uint64_t tick_ms = 0;
|
||||||
|
|
||||||
__PORT__ void port_int_disable(void)
|
__PORT__ void port_int_disable(void)
|
||||||
{
|
{
|
||||||
sigset_t signal_mask,*manager_mask=NULL;
|
sigset_t signal_mask,*manager_mask=NULL;
|
||||||
@@ -132,7 +134,7 @@ __PORT__ void port_sched_start(void)
|
|||||||
_resume_task(k_curr_task);
|
_resume_task(k_curr_task);
|
||||||
|
|
||||||
while(1){
|
while(1){
|
||||||
_delay_ms(1000);
|
_wait_resume();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,6 +188,14 @@ __PORT__ void port_systick_priority_set(uint32_t prio)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__PORT__ void port_delay_ms(uint32_t ms)
|
||||||
|
{
|
||||||
|
uint64_t start_time = _get_time_ms();
|
||||||
|
do{
|
||||||
|
usleep(100);
|
||||||
|
}while((_get_time_ms() - start_time) < ms);
|
||||||
|
}
|
||||||
|
|
||||||
__PORT__ void _filter_signal(sigset_t *sigset)
|
__PORT__ void _filter_signal(sigset_t *sigset)
|
||||||
{
|
{
|
||||||
sigdelset(sigset,SIGINT);
|
sigdelset(sigset,SIGINT);
|
||||||
@@ -195,18 +205,7 @@ __PORT__ void _filter_signal(sigset_t *sigset)
|
|||||||
|
|
||||||
__PORT__ uint64_t _get_time_ms(void)
|
__PORT__ uint64_t _get_time_ms(void)
|
||||||
{
|
{
|
||||||
struct timeval timer;
|
return (tick_ms);
|
||||||
gettimeofday( &timer, NULL );
|
|
||||||
|
|
||||||
return (1000 * timer.tv_sec + timer.tv_usec/1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
__PORT__ void _delay_ms(uint32_t ms)
|
|
||||||
{
|
|
||||||
uint64_t start_time = _get_time_ms();
|
|
||||||
do{
|
|
||||||
usleep(100);
|
|
||||||
}while((_get_time_ms() - start_time) < ms);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__PORT__ void _install_signal(int sig,void (*func)(int))
|
__PORT__ void _install_signal(int sig,void (*func)(int))
|
||||||
@@ -225,6 +224,7 @@ __PORT__ void _install_signal(int sig,void (*func)(int))
|
|||||||
|
|
||||||
__PORT__ void _handle_tick_signal()
|
__PORT__ void _handle_tick_signal()
|
||||||
{
|
{
|
||||||
|
tick_ms ++;
|
||||||
if(tos_knl_is_running()) {
|
if(tos_knl_is_running()) {
|
||||||
tos_knl_irq_enter();
|
tos_knl_irq_enter();
|
||||||
tos_tick_handler();
|
tos_tick_handler();
|
||||||
|
@@ -93,6 +93,8 @@ __PORT__ void port_systick_priority_set(uint32_t prio); //ok
|
|||||||
|
|
||||||
__PORT__ pthread_t port_create_thread(void *arg);
|
__PORT__ pthread_t port_create_thread(void *arg);
|
||||||
|
|
||||||
|
__PORT__ void port_delay_ms(uint32_t ms);
|
||||||
|
|
||||||
#if TOS_CFG_TICKLESS_EN > 0u
|
#if TOS_CFG_TICKLESS_EN > 0u
|
||||||
|
|
||||||
__PORT__ void port_systick_resume(void);
|
__PORT__ void port_systick_resume(void);
|
||||||
|
Reference in New Issue
Block a user