Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c56a3b18 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: Update the documentation for changes of proc files



Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 02f4865f
Loading
Loading
Loading
Loading
+17 −10
Original line number Diff line number Diff line
@@ -5518,34 +5518,41 @@ struct _snd_pcm_runtime {
]]>
        </programlisting>
      </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>
      The callback is much more complicated than the text-file
      version. You need to use a low-level I/O functions such as
      The read/write callbacks of raw mode are more direct than the text mode.
      You need to use a low-level I/O functions such as
      <function>copy_from/to_user()</function> to transfer the
      data.

      <informalexample>
        <programlisting>
<![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,
                              struct file *file,
                              char *buf,
                              unsigned long count,
                              unsigned long pos)
                              size_t count,
                              loff_t pos)
  {
          long size = count;
          if (pos + size > local_max_size)
                  size = local_max_size - pos;
          if (copy_to_user(buf, local_data + pos, size))
          if (copy_to_user(buf, local_data + pos, count))
                  return -EFAULT;
          return size;
          return count;
  }
]]>
        </programlisting>
      </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>

  </chapter>