void taskM ( void ) { rt_sem_p(&xenomai_semaphore, TM_INFINITE); // wait for synch print_pri(&taskMed, "TaskM started\n"); rt_task_sleep(TIME_UNIT); print_pri(&taskMed, "TaskM starting work\n"); busy_wait_ms(5*TIME_UNIT_MS); print_pri(&taskMed, "TaskM complete\n"); }
void taskH ( void ) { rt_sem_p(&xenomai_semaphore, TM_INFINITE); // wait for synch print_pri(&taskHigh, "TaskH started\n"); rt_task_sleep(2*TIME_UNIT); rt_mutex_acquire(&resMut,NULL); // lock resource print_pri(&taskHigh, "TaskH locked resource\n"); rt_task_sleep(2*TIME_UNIT); rt_mutex_release(&resMut); // unlock the resource print_pri(&taskHigh, "TaskH released resource\n"); }
void taskL ( void ) { rt_sem_p(&xenomai_semaphore, TM_INFINITE); // wait for synch print_pri(&taskLow, "TaskL started\n"); rt_mutex_acquire(&resMut,NULL); // lock resource print_pri(&taskLow, "TaskL locked resource\n"); busy_wait_ms(3*TIME_UNIT_MS); print_pri(&taskLow, "TaskL completed work\n"); print_pri(&taskLow, "TaskL released resource\n"); rt_mutex_release(&resMut); // release resource }
void task_function(void* data) { //rt_sem_p(sem, TM_INFINITE); print_pri(NULL,(char) data); //rt_sem_v(sem); }
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); }
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); }
void task_L(void* data) { rt_sem_p(&syncsem,TM_INFINITE); rt_sem_p(&semA,TM_INFINITE); int prio = rt_task_set_priority(NULL,99); rt_printf("L : I got A\n"); busy_wait_ms(3); rt_sem_p(&semB,TM_INFINITE); busy_wait_ms(3); print_pri(NULL,(char) data); rt_sem_v(&semB); rt_sem_v(&semA); }
void print_procs(char *name, int arity) { dident d = enter_dict(name, arity); if (d == D_UNKNOWN) { p_fprintf(current_output_,"No such did"); ec_newline(current_output_); } else if (! d->procedure) { p_fprintf(current_output_,"No procedures"); ec_newline(current_output_); } else { pri *pd; for (pd=d->procedure; pd; pd=pd->nextproc) print_pri(pd); } }