?? mouse.c
字號:
/* * linux/kernel/chr_drv/mouse.c * * Generic mouse open routine by Johan Myreen * * Based on code from Linus * * Teemu Rantanen's Microsoft Busmouse support and Derrick Cole's * changes incorporated into 0.97pl4 * by Peter Cervasio (pete%q106fm.uucp@wupost.wustl.edu) (08SEP92) * See busmouse.c for particulars. * * Made things a lot mode modular - easy to compile in just one or two * of the mouse drivers, as they are now completely independent. Linus. */#include <linux/fs.h>#include <linux/errno.h>#include <linux/mouse.h>#include <linux/config.h>#include <linux/kernel.h>#include <linux/major.h>/* * note that you can remove any or all of the drivers by undefining * the minor values in <linux/mouse.h> */extern struct file_operations bus_mouse_fops;extern struct file_operations psaux_fops;extern struct file_operations ms_bus_mouse_fops;extern struct file_operations atixl_busmouse_fops;extern unsigned long bus_mouse_init(unsigned long);extern unsigned long psaux_init(unsigned long);extern unsigned long ms_bus_mouse_init(unsigned long);extern unsigned long atixl_busmouse_init(unsigned long);static int mouse_open(struct inode * inode, struct file * file){ int minor = MINOR(inode->i_rdev); switch (minor) {#ifdef CONFIG_BUSMOUSE case BUSMOUSE_MINOR: file->f_op = &bus_mouse_fops; break;#endif#if defined CONFIG_PSMOUSE || defined CONFIG_82C710_MOUSE case PSMOUSE_MINOR: file->f_op = &psaux_fops; break;#endif#ifdef CONFIG_MS_BUSMOUSE case MS_BUSMOUSE_MINOR: file->f_op = &ms_bus_mouse_fops; break;#endif#ifdef CONFIG_ATIXL_BUSMOUSE case ATIXL_BUSMOUSE_MINOR: file->f_op = &atixl_busmouse_fops; break;#endif default: return -ENODEV; } return file->f_op->open(inode,file);}static struct file_operations mouse_fops = { NULL, /* seek */ NULL, /* read */ NULL, /* write */ NULL, /* readdir */ NULL, /* select */ NULL, /* ioctl */ NULL, /* mmap */ mouse_open, NULL /* release */};unsigned long mouse_init(unsigned long kmem_start){#ifdef CONFIG_BUSMOUSE kmem_start = bus_mouse_init(kmem_start);#endif#if defined CONFIG_PSMOUSE || defined CONFIG_82C710_MOUSE kmem_start = psaux_init(kmem_start);#endif#ifdef CONFIG_MS_BUSMOUSE kmem_start = ms_bus_mouse_init(kmem_start);#endif#ifdef CONFIG_ATIXL_BUSMOUSE kmem_start = atixl_busmouse_init(kmem_start);#endif if (register_chrdev(MOUSE_MAJOR,"mouse",&mouse_fops)) printk("unable to get major %d for mouse devices\n", MOUSE_MAJOR); return kmem_start;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -