From: Adrian M. <ad...@mc...> - 2001-12-02 18:00:46
|
On Sunday 02 Dec 2001 4:18 pm, Adrian McMenamin wrote: > Well, maybe I should be writing ARM code after all - but I'm still going to > give the SH4 stuff one more try and I have a question which I wonder if > someone might help me with. > > In the dsp write the code currently does this... > > static ssize_t aica_audio_do_write(struct file *file, > const char *buffer, > size_t count, > loff_t *ppos) > { > > aica_dev_t *devc=file->private_data; > > //really want to write? > if (!(file->f_mode & FMODE_WRITE)) return -EINVAL; > > > //now output this to the selected channel > > //fill a chunk of the sound memory with the contents of the buffer > aica_halt_channel(devc->channel); //halt anything playing there already > int offset = 0xf000; > if (copy_from_user((void*)(0xa0800000 + offset), (const void*) buffer, > count)) > { > DEBGM("Failed to copy memory bufferfrom user space\n"); > return -EFAULT; > } > > . > . > . > . > ...........Lots of code.......... > . > > > return count; > > } > > Now, is it right to just copy a lump of memory over from user space in this > way? > > I haven't specifically allocated a buffer inside the sound RAM area - just > claimed it for the kernel when initiating the module and assumed that it's > there - the function doesn't fail in the sense that the -EFAULT error is > never reported, but does that mean it has actually worked? > > Should I be allocating a buffer first and copying the data from user space > into that? > > Perhaps I am just clutching at straws. > My own tests suggest this to be the case :-< |