--- kqemu/kmod.c 2005-02-10 15:09:09.000000000 -0700 +++ qemu/kqemu/kmod.c 2005-02-13 18:19:14.833684304 -0700 @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -34,6 +35,9 @@ int page_alloc_count; #endif +struct class_simple *kqemu_class; +int kqemu_major; + /* lock the page at virtual address 'user_addr' and return its page index. Return -1 if error */ unsigned long CDECL kqemu_lock_user_page(unsigned long user_addr) @@ -297,9 +301,12 @@ ret = register_chrdev(KQEMU_MAJOR, "kqemu", &kqemu_fops); if (ret < 0) { - printk("kqemu: could not get major %d\n", KQEMU_MAJOR); + printk("kqemu: could not get major\n"); return ret; } + kqemu_major = ret; + kqemu_class = class_simple_create(THIS_MODULE, "kqemu"); + class_simple_device_add(kqemu_class, MKDEV(kqemu_major,0), NULL, "kqemu"); printk("KQEMU installed, max_instances=%d max_locked_mem=%dkB.\n", KQEMU_MAX_INSTANCES, max_locked_pages * 4); @@ -308,5 +315,7 @@ void cleanup_module(void) { - unregister_chrdev(KQEMU_MAJOR, "kqemu"); + class_simple_device_remove(MKDEV(kqemu_major,0)); + class_simple_destroy(kqemu_class); + unregister_chrdev(kqemu_major, "kqemu"); }