/* * Copyright (C) 2002 Steve Schmidtke * Licensed under the GPL */ #include #include #include #include "hostaudio.h" #include "user_util.h" #include "kern_util.h" #include "user.h" #include "os.h" /* /dev/dsp file operations */ ssize_t hostaudio_read_user(struct hostaudio_state *state, char *buffer, size_t count, loff_t *ppos) { #ifdef DEBUG printk("hostaudio: read_user called, count = %d\n", count); #endif return(os_read_file(state->fd, buffer, count)); } ssize_t hostaudio_write_user(struct hostaudio_state *state, const char *buffer, size_t count, loff_t *ppos) { #ifdef DEBUG printk("hostaudio: write_user called, count = %d\n", count); #endif return(os_write_file(state->fd, buffer, count)); } int hostaudio_ioctl_user(struct hostaudio_state *state, unsigned int cmd, unsigned long arg) { #ifdef DEBUG printk("hostaudio: ioctl_user called, cmd = %u\n", cmd); #endif return(os_ioctl_generic(state->fd, cmd, arg)); } int hostaudio_open_user(struct hostaudio_state *state, int r, int w, char *dsp) { #ifdef DEBUG printk("hostaudio: open_user called\n"); #endif state->fd = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0); if(state->fd < 0) { printk("hostaudio_open_user failed to open '%s', err = %d\n", dsp, -state->fd); return(state->fd); } return(0); } int hostaudio_release_user(struct hostaudio_state *state) { #ifdef DEBUG printk("hostaudio: release called\n"); #endif if(state->fd >= 0){ os_close_file(state->fd); state->fd = -1; } return(0); } /* /dev/mixer file operations */ int hostmixer_ioctl_mixdev_user(struct hostmixer_state *state, unsigned int cmd, unsigned long arg) { #ifdef DEBUG printk("hostmixer: ioctl_user called cmd = %u\n",cmd); #endif return(os_ioctl_generic(state->fd, cmd, arg)); } int hostmixer_open_mixdev_user(struct hostmixer_state *state, int r, int w, char *mixer) { #ifdef DEBUG printk("hostmixer: open_user called\n"); #endif state->fd = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0); if(state->fd < 0) { printk("hostaudio_open_mixdev_user failed to open '%s', " "err = %d\n", mixer, state->fd); return(state->fd); } return(0); } int hostmixer_release_mixdev_user(struct hostmixer_state *state) { #ifdef DEBUG printk("hostmixer: release_user called\n"); #endif if(state->fd >= 0){ os_close_file(state->fd); state->fd = -1; } return 0; } /* * Overrides for Emacs so that we follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically * adjust the settings for this buffer only. This must remain at the end * of the file. * --------------------------------------------------------------------------- * Local variables: * c-file-style: "linux" * End: */