void *low_prio_rt_thread(void *arg) { struct thread *t = (struct thread *)arg; while (!thread_quit(t)) { while_not_flag(LOW_START_CYCLE, t) rt_nanosleep(1 * NS_PER_MS); debug(DBG_INFO, "low try mutex\n"); pthread_mutex_lock(&pi_mutex); debug(DBG_INFO, "low grab mutex\n"); write_flag(MED_START_WORK); rt_nanosleep(1 * NS_PER_MS); while_not_flag(LOW_DROP_MUTEX, t) { //printf("!"); fflush(NULL); rt_nanosleep(1); } debug(DBG_INFO, "low drop mutex\n"); low_drop_time = rt_gettime(); pthread_mutex_unlock(&pi_mutex); while_not_flag(END_OF_CYCLE, t) { //printf("@"); fflush(NULL); rt_nanosleep(1 * NS_PER_MS); }
void clear_flag() { write_flag(ADDR00, 0); }
void send_flag(int addr, int cmd) { write_flag(addr, cmd); }