📄 task.c
字号:
/* * This piece of code is totally free. If any pitfalls found, * please feel free to contact me at jetmotor@21cn.com * THANKS A LOT! */#include "task.h"#include "wxtimer.h"#include "wxsched.h"#include "prov.h"ringq_t tq_data_tx;ringq_t tq_logger;ringq_t tq_bst_tx;ringq_t tq_bst_rx;ringq_t tq_sig_rx;ringq_t tq_bwr_rx;sem_t sem_usched;sem_t sem_dsched;task_t tasks[TASK_BOTTOM];void init_task(){ wxtimer_init(); usched_init(); dsched_init(); tasks[TASK_TIMER].function = do_task_timer; tasks[TASK_TIMER].arg = NULL; tasks[TASK_PHY_TX].function = do_task_phy_tx; tasks[TASK_PHY_TX].arg = &prov; tasks[TASK_PHY_RX].function = do_task_phy_rx; tasks[TASK_PHY_RX].arg = &prov; tasks[TASK_UL_SCHED].function = do_task_ulsched; tasks[TASK_UL_SCHED].arg = NULL; tasks[TASK_DL_SCHED].function = do_task_dlsched; tasks[TASK_DL_SCHED].arg = NULL; tasks[TASK_BURST_DECODE].function = do_task_burst_decode; tasks[TASK_BURST_DECODE].arg = NULL; tasks[TASK_SIG].function = do_task_sig; tasks[TASK_SIG].arg = NULL; //tasks[TASK_CS_TX].function = do_task_cs_tx; //tasks[TASK_CS_TX].arg = NULL; //tasks[TASK_LOGGER].function = do_task_logger; //tasks[TASK_LOGGER].arg = NULL; ringq_init(&tq_data_tx); ringq_init(&tq_logger); ringq_init(&tq_bst_tx); ringq_init(&tq_bst_rx); ringq_init(&tq_sig_rx); ringq_init(&tq_bwr_rx); sem_init(&sem_dsched, 0, 0); sem_init(&sem_usched, 0, 0);}int start_task(){ int i, ret; for ( i = 0; i < TASK_BOTTOM; i++ ) { //if ( i == TASK_BURST_DECODE || i == TASK_SIG ) //continue; if ((ret = pthread_create(&(tasks[i].id), 0, tasks[i].function, tasks[i].arg)) != 0) return ret; } return 0;}void stop_task(){ int i; for ( i = 0; i < TASK_BOTTOM; i++ ) { pthread_cancel(tasks[i].id); pthread_join(tasks[i].id, 0); }}void term_task(){}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -