示例#1
0
文件: main.c 项目: eirikpre/TTK4147
void task_M(void* data)
{
	rt_sem_p(&syncsem,TM_INFINITE);
	rt_task_sleep_ms(1);
	//rt_sem_p(sem,TM_INFINITE);
	busy_wait_ms(5);
	print_pri(NULL,(char) data);
	//rt_sem_v(sem,TM_INFINITE);
}
示例#2
0
void medium(){
	rt_sem_p(&synca, TM_INFINITE);
	rt_task_sleep_ms(100);
	rt_printf("MEDIUM RUNNING\n");
	busy_wait_ms(100);
	busy_wait_ms(100);
	busy_wait_ms(100);
	busy_wait_ms(100);
	busy_wait_ms(100);
	rt_printf("MEDIUM FINISHED\n");
}
示例#3
0
void highFunc() {
	rt_sem_p(&sem, TM_INFINITE);
	rt_task_sleep_ms(200);
	rt_printf("High wants to lock resource\n");
	rt_mutex_acquire(&resourceMutex, TM_INFINITE);
	rt_printf("High locks resource\n");
	busy_wait_ms(100);
	busy_wait_ms(100);
	rt_printf("High unlocks resource\n");
	rt_mutex_release(&resourceMutex);
}
示例#4
0
void medFunc() {
	rt_sem_p(&sem, TM_INFINITE);
	rt_task_sleep_ms(100);
	rt_printf("med starts running\n");
	busy_wait_ms(100);
	busy_wait_ms(100);
	busy_wait_ms(100);
	busy_wait_ms(100);
	busy_wait_ms(100);
	rt_printf("med finished\n");
}
示例#5
0
文件: main.c 项目: eirikpre/TTK4147
void task_H(void* data)
{
	rt_sem_p(&syncsem,TM_INFINITE);
	rt_task_sleep_ms(1);
	rt_sem_p(&semB,TM_INFINITE);
	rt_printf("H : I got B\n");
	busy_wait_ms(1);
	rt_sem_p(&semA,TM_INFINITE);
	busy_wait_ms(2);
	print_pri(NULL,(char) data);
	rt_sem_v(&semB);
	rt_sem_v(&semA);
}
示例#6
0
void high(){
	rt_sem_p(&synca, TM_INFINITE);
	rt_task_sleep_ms(200);
	rt_printf("HIGH RUNNING\n");
	rt_sem_p(&semaphore, TM_INFINITE);
	//rt_mutex_acquire(&mutex, TM_INFINITE);
	rt_printf("HIGH AQUIRED LCOK\n");
	busy_wait_ms(100);
	busy_wait_ms(100);
	rt_printf("HIGH FINISHED\n");
	rt_sem_v(&semaphore);
	//rt_mutex_release(&mutex);
	
}
示例#7
0
文件: main.c 项目: eirikpre/TTK4147
int main(){
	mlockall(MCL_CURRENT | MCL_FUTURE);
	rt_print_auto_init(1);

	
	rt_sem_create(&semA, "A", 1, S_FIFO | S_PRIO);
	rt_sem_create(&semB, "B", 1, S_FIFO | S_PRIO);
	rt_sem_create(&syncsem, "ss", 0, S_FIFO);
	RT_TASK tasks[3];
	

	rt_task_create(tasks, "C", 0, 99, T_CPU(0)|T_JOINABLE);
	//rt_task_create(&(tasks[1]), "B", 0, 50, T_CPU(0));
	rt_task_create(tasks+2, "D", 0, 33, T_CPU(0));

	rt_task_start(&(tasks[0]),&task_H,(void*)'H'); 
	//rt_task_start(&(tasks[1]),&task_M,(void*)'M');
	rt_task_start(&(tasks[2]),&task_L,(void*)'L');
	 

	rt_task_shadow(NULL, "main", 0, 0);
	rt_task_sleep_ms(200);
	rt_sem_broadcast(&syncsem);
	//rt_task_sleep_ms(2000);

	rt_task_join(tasks);
	rt_task_join(tasks+2);
	rt_sem_delete(&semA);
	rt_sem_delete(&semB);

/*
	pthread_t disturbance[10];
	for (i=0; i<10; i++){
		pthread_create(&(disturbance[i]),NULL,&busy_wait,NULL);
	}
	
	for (i=0; i<10; i++){
		pthread_join(disturbance[i],NULL);
	}
*/

	return 0;
};