int init_module(void) { rt_bits_init(&bits, 0xFFFF0000); rt_task_init(&task0, fun0, 0, STACK_SIZE, 0, 0, 0); rt_task_init(&task1, fun1, 0, STACK_SIZE, 0, 0, 0); rt_task_init(&task, fun, 0, STACK_SIZE, 0, 0, 0); rt_set_oneshot_mode(); start_rt_timer(nano2count(SLEEP_TIME)); rt_task_resume(&task0); rt_task_resume(&task1); rt_task_resume(&task); return 0; }
BITS* __rt_bits_init(unsigned long mask){ BITS * bits; bits = rt_malloc(sizeof(BITS)); if(bits == 0) return 0; memset(bits,0,sizeof(BITS)); rt_bits_init(bits,mask); return bits; }
RTAI_SYSCALL_MODE void *rt_bits_init_u(unsigned long name, unsigned long mask) { BITS *bits; if (rt_get_adr(name)) { return NULL; } if ((bits = rt_malloc(sizeof(BITS)))) { rt_bits_init(bits, mask); if (rt_register(name, bits, IS_BIT, current)) { return bits; } else { rt_free(bits); } } return NULL; }
RTAI_SYSCALL_MODE BITS *rt_named_bits_init(const char *bits_name, unsigned long mask) { BITS *bits; unsigned long name; if ((bits = rt_get_adr(name = nam2num(bits_name)))) { return bits; } if ((bits = rt_malloc(sizeof(SEM)))) { rt_bits_init(bits, mask); if (rt_register(name, bits, IS_BIT, 0)) { return bits; } rt_bits_delete(bits); } rt_free(bits); return NULL; }