/* $Id: os2004beep.c,v 1.3 2004/12/23 12:47:14 kaiya Exp kaiya $ Device Driver for system speaker (Beep!) */ #define MOD_NAME "os2004" #define BEEP_PORT 0x0061 /* I/O port of system speaker */ // #define CONFIG_X86_L1_CACHE_SHIFT (5) #include #include #include static int xxx_open(struct inode *inode, struct file *file){ int minor; unsigned int data=0xff; minor = MINOR(inode->i_rdev); printk("<1>open <%s io driver>: minor = %d\n", MOD_NAME, minor); outb(data, BEEP_PORT); return(0); } static int xxx_release(struct inode *inode, struct file *file){ int minor; unsigned int data=0x0; minor = MINOR(inode->i_rdev); printk("<1>release <%s io driver>: minor = %d\n", MOD_NAME, minor); outb(data, BEEP_PORT); return(0); } static struct file_operations xxx_fops = { NULL, // owner NULL, // llseek NULL, // xxx_read, NULL, // xxx_write, NULL, // readdir NULL, // poll NULL, // xxx_ioctl, NULL, // mmap xxx_open, NULL, // flush xxx_release, NULL, // fsync NULL, // fasync NULL, // lock NULL, // readv NULL, // writev NULL, // sendpage NULL, // get_unmapped_area }; static int xxx_major; int init_module(void){ xxx_major = register_chrdev(0, MOD_NAME, &xxx_fops); printk("<1>os2004beep driver [%s] installed: major = %d\n", MOD_NAME, xxx_major); return(0); } void cleanup_module(void){ printk("<1>os2004beep driver [%s] uninstalled\n", MOD_NAME); unregister_chrdev(xxx_major, MOD_NAME); }