Example #1
0
void __rtai_shm_exit (void)
{
	extern int max_slots;
	int slot;
	struct rt_registry_entry entry;

#ifdef CONFIG_RTAI_MALLOC_VMALLOC
	rt_drg_on_name_cnt(GLOBAL_HEAP_ID);
#endif
	for (slot = 1; slot <= max_slots; slot++) {
		if (rt_get_registry_slot(slot, &entry)) {
			if (abs(entry.type) >= PAGE_SIZE) {
				char name[8];
				while (_rt_shm_free(entry.name, entry.type));
				num2nam(entry.name, name);
				rt_printk("\nSHM_CLEANUP_MODULE releases: '%s':0x%lx:%lu (%d).\n", name, entry.name, entry.name, entry.type);
			}
		}
	}
	reset_rt_fun_entries(rt_shm_entries);
	misc_deregister(&rtai_shm_dev);
#if USE_UDEV_CLASS
	class_device_destroy(shm_class, MKDEV(MISC_MAJOR, RTAI_SHM_MISC_MINOR));
	class_destroy(shm_class);
#endif
	return;
}
Example #2
0
File: mbx.c Project: ArcEye/RTAI
void __rtai_mbx_exit (void)
{
	rt_poll_ofstfun[RT_POLL_MBX_RECV].topoll = NULL;
	rt_poll_ofstfun[RT_POLL_MBX_SEND].topoll = NULL;
	reset_rt_fun_entries(rt_mbx_entries);
}
Example #3
0
void __rtai_bits_exit(void)
{
	reset_rt_fun_entries(rt_bits_entries);
}
Example #4
0
void __rtai_msg_queue_exit(void)
{
	reset_rt_fun_entries(rt_msg_queue_entries);
	printk(KERN_INFO "RTAI[rtai_msgq]: unloaded.\n");
}