Commit c56a3b18 authored by Takashi Iwai's avatar Takashi Iwai

ALSA: Update the documentation for changes of proc files

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 02f4865f
...@@ -5518,34 +5518,41 @@ struct _snd_pcm_runtime { ...@@ -5518,34 +5518,41 @@ struct _snd_pcm_runtime {
]]> ]]>
</programlisting> </programlisting>
</informalexample> </informalexample>
For the raw data, <structfield>size</structfield> field must be
set properly. This specifies the maximum size of the proc file access.
</para> </para>
<para> <para>
The callback is much more complicated than the text-file The read/write callbacks of raw mode are more direct than the text mode.
version. You need to use a low-level I/O functions such as You need to use a low-level I/O functions such as
<function>copy_from/to_user()</function> to transfer the <function>copy_from/to_user()</function> to transfer the
data. data.
<informalexample> <informalexample>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
static long my_file_io_read(struct snd_info_entry *entry, static ssize_t my_file_io_read(struct snd_info_entry *entry,
void *file_private_data, void *file_private_data,
struct file *file, struct file *file,
char *buf, char *buf,
unsigned long count, size_t count,
unsigned long pos) loff_t pos)
{ {
long size = count; if (copy_to_user(buf, local_data + pos, count))
if (pos + size > local_max_size)
size = local_max_size - pos;
if (copy_to_user(buf, local_data + pos, size))
return -EFAULT; return -EFAULT;
return size; return count;
} }
]]> ]]>
</programlisting> </programlisting>
</informalexample> </informalexample>
If the size of the info entry has been set up properly,
<structfield>count</structfield> and <structfield>pos</structfield> are
guaranteed to fit within 0 and the given size.
You don't have to check the range in the callbacks unless any
other condition is required.
</para> </para>
</chapter> </chapter>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment