RTAI_SYSCALL_MODE int rt_named_bits_delete(BITS *bits) { if (!rt_bits_delete(bits)) { rt_free(bits); } return rt_drg_on_adr(bits); }
RTAI_SYSCALL_MODE int rt_bits_delete_u(BITS *bits) { if (rt_bits_delete(bits)) { return -EFAULT; } rt_free(bits); return rt_drg_on_adr(bits); }
void cleanup_module(void) { while (atomic_read(&cleanup) < 3) { current->state = TASK_INTERRUPTIBLE; schedule_timeout(HZ/10); } stop_rt_timer(); rt_bits_delete(&bits); rt_task_delete(&task0); rt_task_delete(&task1); rt_task_delete(&task); }
int __rt_bits_delete(BITS *bits){ int result; if(bits == 0) return -1; result = rt_bits_delete(bits); rt_free(bits); return result; }
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; }