static int sound_release(struct inode *inode, struct file *file) { int dev = iminor(inode); lock_kernel(); DEB(printk("sound_release(dev=%d)\n", dev)); switch (dev & 0x0f) { case SND_DEV_CTL: module_put(mixer_devs[dev >> 4]->owner); break; case SND_DEV_SEQ: case SND_DEV_SEQ2: sequencer_release(dev, file); break; case SND_DEV_MIDIN: MIDIbuf_release(dev, file); break; case SND_DEV_DSP: case SND_DEV_DSP16: case SND_DEV_AUDIO: audio_release(dev, file); break; default: printk(KERN_ERR "Sound error: Releasing unknown device 0x%02x\n", dev); } unlock_kernel(); return 0; }
static int sound_release(struct inode *inode, struct file *file) { int dev = MINOR(inode->i_rdev); DEB(printk("sound_release(dev=%d)\n", dev)); switch (dev & 0x0f) { case SND_DEV_STATUS: case SND_DEV_CTL: break; #ifdef CONFIG_SEQUENCER case SND_DEV_SEQ: case SND_DEV_SEQ2: sequencer_release(dev, file); break; #endif #ifdef CONFIG_MIDI case SND_DEV_MIDIN: MIDIbuf_release(dev, file); break; #endif #ifdef CONFIG_AUDIO case SND_DEV_DSP: case SND_DEV_DSP16: case SND_DEV_AUDIO: audio_release(dev, file); break; #endif default: printk(KERN_ERR "Sound error: Releasing unknown device 0x%02x\n", dev); } in_use--; #ifdef CONFIG_MODULES notifier_call_chain(&sound_locker, 0, 0); lock_depth--; #endif return 0; }