typedef struct _snd_pcm_ops {
int (*open)(snd_pcm_substream_t *substream);
int (*close)(snd_pcm_substream_t *substream);
int (*ioctl)(snd_pcm_substream_t *substream, unsigned int cmd, void *arg);
int (*hw_params)(snd_pcm_substream_t *substream, snd_pcm_hw_params_t *params);
int (*hw_free)(snd_pcm_substream_t *substream);
int (*prepare)(snd_pcm_substream_t *substream);
int (*trigger)(snd_pcm_substream_t *substream, int cmd);
snd_pcm_uframes_t (*pointer)(snd_pcm_substream_t *substream);
int (*copy)(snd_pcm_substream_t *substream, int channel, snd_pcm_uframes_t pos,
void __user *buf, snd_pcm_ufreams_t count);
struct page *(*page)(snd_pcm_substream_t *substream, unsigned long offset);
int (*mmap)(snd_pcm_substream_t *substream, struct vm_area_struct *vma);
int (*ack)(snd_pcm_substream_t *substream);
} snd_pcm_ops_t;