int __rtai_shm_init (void) { #if USE_UDEV_CLASS if ((shm_class = class_create(THIS_MODULE, "rtai_shm")) == NULL) { printk("RTAI-SHM: cannot create class.\n"); return -EBUSY; } if (CLASS_DEVICE_CREATE(shm_class, MKDEV(MISC_MAJOR, RTAI_SHM_MISC_MINOR), NULL, "rtai_shm") == NULL) { printk("RTAI-SHM: cannot attach class.\n"); class_destroy(shm_class); return -EBUSY; } #endif if (misc_register(&rtai_shm_dev) < 0) { printk("***** UNABLE TO REGISTER THE SHARED MEMORY DEVICE (miscdev minor: %d) *****\n", RTAI_SHM_MISC_MINOR); return -EBUSY; } #ifdef CONFIG_RTAI_MALLOC #ifdef CONFIG_RTAI_MALLOC_VMALLOC rt_register(GLOBAL_HEAP_ID, rtai_global_heap_adr, rtai_global_heap_size, 0); rt_smp_linux_task->heap[GLOBAL].heap = &rtai_global_heap; rt_smp_linux_task->heap[GLOBAL].kadr = rt_smp_linux_task->heap[GLOBAL].uadr = rtai_global_heap_adr; #else printk("***** WARNING: GLOBAL HEAP NEITHER SHARABLE NOR USABLE FROM USER SPACE (use the vmalloc option for RTAI malloc) *****\n"); #endif #endif return set_rt_fun_entries(rt_shm_entries); }
int __rtai_mbx_init (void) { rt_poll_ofstfun[RT_POLL_MBX_RECV].topoll = recv_blocks; rt_poll_ofstfun[RT_POLL_MBX_SEND].topoll = send_blocks; return set_rt_fun_entries(rt_mbx_entries); }
int __rtai_bits_init(void) { return set_rt_fun_entries(rt_bits_entries); }
int __rtai_msg_queue_init(void) { printk(KERN_INFO "RTAI[rtai_msgq]: loaded.\n"); return set_rt_fun_entries(rt_msg_queue_entries); }