task.c

来自「wimax BS simulation code,implemented und」· C语言 代码 · 共 100 行

C
100
字号
/* * 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 + =
减小字号Ctrl + -
显示快捷键?