亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? writing-an-alsa-driver.tmpl

?? 優龍2410linux2.6.8內核源代碼
?? TMPL
?? 第 1 頁 / 共 5 頁
字號:
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN"><book><?dbhtml filename="index.html"><!-- ****************************************************** --><!-- Header  --><!-- ****************************************************** -->  <bookinfo>    <title>Writing an ALSA Driver</title>    <author>      <firstname>Takashi</firstname>      <surname>Iwai</surname>      <affiliation>        <address>          <email>tiwai@suse.de</email>        </address>      </affiliation>     </author>     <date>Mar. 6, 2004</date>     <edition>0.3.1</edition>    <abstract>      <para>        This document describes how to write an ALSA (Advanced Linux        Sound Architecture) driver.      </para>    </abstract>    <legalnotice>    <para>    Copyright (c) 2002-2004  Takashi Iwai <email>tiwai@suse.de</email>    </para>    <para>    This document is free; you can redistribute it and/or modify it    under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.     </para>    <para>    This document is distributed in the hope that it will be useful,    but <emphasis>WITHOUT ANY WARRANTY</emphasis>; without even the    implied warranty of <emphasis>MERCHANTABILITY or FITNESS FOR A    PARTICULAR PURPOSE</emphasis>. See the GNU General Public License    for more details.    </para>    <para>    You should have received a copy of the GNU General Public    License along with this program; if not, write to the Free    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,    MA 02111-1307 USA    </para>    </legalnotice>  </bookinfo><!-- ****************************************************** --><!-- Preface  --><!-- ****************************************************** -->  <preface id="preface">    <title>Preface</title>    <para>      This document describes how to write an      <ulink url="http://www.alsa-project.org/"><citetitle>      ALSA (Advanced Linux Sound Architecture)</citetitle></ulink>      driver. The document focuses mainly on the PCI soundcard.      In the case of other device types, the API might      be different, too. However, at least the ALSA kernel API is      consistent, and therefore it would be still a bit help for      writing them.    </para>    <para>    The target of this document is ones who already have enough    skill of C language and have the basic knowledge of linux    kernel programming.  This document doesn't explain the general    topics of linux kernel codes and doesn't cover the detail of    implementation of each low-level driver.  It describes only how is    the standard way to write a PCI sound driver on ALSA.    </para>    <para>      If you are already familiar with the older ALSA ver.0.5.x, you    can check the drivers such as <filename>es1938.c</filename> or    <filename>maestro3.c</filename> which have also almost the same    code-base in the ALSA 0.5.x tree, so you can compare the differences.    </para>    <para>      This document is still a draft version. Any feedbacks and    corrections, please!!    </para>  </preface><!-- ****************************************************** --><!-- File Tree Structure  --><!-- ****************************************************** -->  <chapter id="file-tree">    <title>File Tree Structure</title>    <section id="file-tree-general">      <title>General</title>      <para>        The ALSA drivers are provided in the two ways.      </para>      <para>        One is the the trees provided as a tarball or via cvs from the      ALSA's ftp site, and another is the 2.6 (or later) Linux kernel      tree. To synchronize both, the ALSA driver tree is split to      two different trees: alsa-kernel and alsa-driver. The former      contains purely the source codes for the Linux 2.6 (or later)      tree. This tree is designed only for compilation on 2.6 or      later environment. The latter, alsa-driver, contains many subtle      files for compiling the ALSA driver on the outside of Linux      kernel like configure script, the wrapper functions for older,      2.2 and 2.4 kernels, to adapt the latest kernel API,      and additional drivers which are still in development or in      tests.  The drivers in alsa-driver tree will be moved to      alsa-kernel (eventually 2.6 kernel tree) once when they are      finished and confirmed to work fine.      </para>      <para>        The file tree structure of ALSA driver is depicted below. Both        alsa-kernel and alsa-driver have almost the same file        structure, except for <quote>core</quote> directory. It's        named as <quote>acore</quote> in alsa-driver tree.         <example>          <title>ALSA File Tree Structure</title>          <literallayout>        sound                /core                        /oss                        /seq                                /oss                                /instr                /ioctl32                /include                /drivers                        /mpu401                        /opl3                /i2c                        /l3                /synth                        /emux                /pci                        /(cards)                /isa                        /(cards)                /arm                /ppc                /sparc                /usb                /pcmcia /(cards)                /oss          </literallayout>        </example>      </para>    </section>    <section id="file-tree-core-directory">      <title>core directory</title>      <para>        This directory contains the middle layer, that is, the heart      of ALSA drivers. In this directory, the native ALSA modules are      stored. The sub-directories contain different modules and are      dependent upon the kernel config.       </para>      <section id="file-tree-core-directory-oss">        <title>core/oss</title>        <para>          The codes for PCM and mixer OSS emulation modules are stored        in this directory. The rawmidi OSS emulation is included in        the ALSA rawmidi code since it's quite small. The sequencer        code is stored in core/seq/oss directory (see        <link linkend="file-tree-core-directory-seq-oss"><citetitle>        below</citetitle></link>).        </para>      </section>      <section id="file-tree-core-directory-ioctl32">        <title>core/ioctl32</title>        <para>          This directory contains the 32bit-ioctl wrappers for 64bit        architectures such like x86-64, ppc64 and sparc64. For 32bit        and alpha architectures, these are not compiled.         </para>      </section>      <section id="file-tree-core-directory-seq">        <title>core/seq</title>        <para>          This and its sub-directories are for the ALSA        sequencer. This directory contains the sequencer core and        primary sequencer modules such like snd-seq-midi,        snd-seq-virmidi, etc. They are compiled only when        <constant>CONFIG_SND_SEQUENCER</constant> is set in the kernel        config.         </para>      </section>      <section id="file-tree-core-directory-seq-oss">        <title>core/seq/oss</title>        <para>          This contains the OSS sequencer emulation codes.        </para>      </section>      <section id="file-tree-core-directory-deq-instr">        <title>core/seq/instr</title>        <para>          This directory contains the modules for the sequencer        instrument layer.         </para>      </section>    </section>    <section id="file-tree-include-directory">      <title>include directory</title>      <para>        This is the place for the public header files of ALSA drivers,      which are to be exported to the user-space, or included by      several files at different directories. Basically, the private      header files should not be placed in this directory, but you may      still find files there, due to historical reason :)       </para>    </section>    <section id="file-tree-drivers-directory">      <title>drivers directory</title>      <para>        This directory contains the codes shared among different drivers      on the different architectures.  They are hence supposed not to be      architecture-specific.      For example, the dummy pcm driver and the serial MIDI      driver are found in this directory. In the sub-directories,      there are the codes for components which are independent from      bus and cpu architectures.       </para>      <section id="file-tree-drivers-directory-mpu401">        <title>drivers/mpu401</title>        <para>          The MPU401 and MPU401-UART modules are stored here.        </para>      </section>      <section id="file-tree-drivers-directory-opl3">        <title>drivers/opl3 and opl4</title>        <para>          The OPL3 and OPL4 FM-synth stuff is found here.        </para>      </section>    </section>    <section id="file-tree-i2c-directory">      <title>i2c directory</title>      <para>        This contains the ALSA i2c components.      </para>      <para>        Although there is a standard i2c layer on Linux, ALSA has its      own i2c codes for some cards, because the soundcard needs only a      simple operation and the standard i2c API is too complicated for      such a purpose.       </para>      <section id="file-tree-i2c-directory-l3">        <title>i2c/l3</title>        <para>          This is a sub-directory for ARM L3 i2c.        </para>      </section>    </section>    <section id="file-tree-synth-directory">        <title>synth directory</title>        <para>          This contains the synth middle-level modules.        </para>        <para>          So far, there is only Emu8000/Emu10k1 synth driver under        synth/emux sub-directory.         </para>    </section>    <section id="file-tree-pci-directory">      <title>pci directory</title>      <para>        This and its sub-directories hold the top-level card modules      for PCI soundcards and the codes specific to the PCI BUS.      </para>      <para>        The drivers compiled from a single file is stored directly on      pci directory, while the drivers with several source files are      stored on its own sub-directory (e.g. emu10k1, ice1712).       </para>    </section>    <section id="file-tree-isa-directory">      <title>isa directory</title>      <para>        This and its sub-directories hold the top-level card modules      for ISA soundcards.       </para>    </section>    <section id="file-tree-arm-ppc-sparc-directories">      <title>arm, ppc, and sparc directories</title>      <para>        These are for the top-level card modules which are      specific to each given architecture.       </para>    </section>    <section id="file-tree-usb-directory">      <title>usb directory</title>      <para>        This contains the USB-audio driver. On the latest version, the      USB MIDI driver is integrated together with usb-audio driver.       </para>    </section>    <section id="file-tree-pcmcia-directory">      <title>pcmcia directory</title>      <para>        The PCMCIA, especially PCCard drivers will go here. CardBus      drivers will be on pci directory, because its API is identical      with the standard PCI cards.       </para>    </section>    <section id="file-tree-oss-directory">      <title>oss directory</title>      <para>        The OSS/Lite source files are stored here on Linux 2.6 (or      later) tree. (In the ALSA driver tarball, it's empty, of course :)       </para>    </section>  </chapter><!-- ****************************************************** --><!-- Basic Flow for PCI Drivers  --><!-- ****************************************************** -->  <chapter id="basic-flow">    <title>Basic Flow for PCI Drivers</title>    <section id="basic-flow-outline">      <title>Outline</title>      <para>        The minimum flow of PCI soundcard is like the following:        <itemizedlist>          <listitem><para>define the PCI ID table (see the section          <link linkend="pci-resource-entries"><citetitle>PCI Entries          </citetitle></link>).</para></listitem>           <listitem><para>create <function>probe()</function> callback.</para></listitem>          <listitem><para>create <function>remove()</function> callback.</para></listitem>          <listitem><para>create pci_driver table which contains the three pointers above.</para></listitem>          <listitem><para>create <function>init()</function> function just calling <function>pci_module_init()</function> to register the pci_driver table defined above.</para></listitem>          <listitem><para>create <function>exit()</function> function to call <function>pci_unregister_driver()</function> function.</para></listitem>        </itemizedlist>      </para>    </section>    <section id="basic-flow-example">      <title>Full Code Example</title>      <para>        The code example is shown below. Some parts are kept      unimplemented at this moment but will be filled in the      succeeding sections. The numbers in comment lines of      <function>snd_mychip_probe()</function> function are the      markers.         <example>          <title>Basic Flow for PCI Drivers Example</title>          <programlisting><![CDATA[  #include <sound/driver.h>  #include <linux/init.h>  #include <linux/pci.h>  #include <linux/slab.h>  #include <sound/core.h>  #define SNDRV_GET_ID  #include <sound/initval.h>  // module parameters (see "Module Parameters")  static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;  static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;  static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;  // definition of the chip-specific record  typedef struct snd_mychip mychip_t;  struct snd_mychip {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性一区二区| 一区二区三区中文字幕| 国产精品久久久久久久久晋中 | 日韩一区二区三区在线观看| 国产无人区一区二区三区| 亚洲午夜久久久久久久久电影网 | 91啪九色porn原创视频在线观看| 日韩欧美激情一区| 一区二区高清在线| 成人黄色电影在线| 久久久精品黄色| 国产一区二区三区av电影| 91精品国产手机| 偷拍与自拍一区| 日本高清成人免费播放| 日韩伦理电影网| 不卡av免费在线观看| 日本一二三四高清不卡| 国产一区二区在线观看免费| 欧美一区二区三区的| 亚洲国产精品欧美一二99| 在线免费观看日本一区| 亚洲激情图片qvod| 色婷婷久久99综合精品jk白丝| 国产精品女人毛片| 不卡一区二区在线| 国产精品家庭影院| av爱爱亚洲一区| 中文字幕一区视频| 91色视频在线| 一区二区三区精品视频在线| 色婷婷亚洲婷婷| 亚洲h精品动漫在线观看| 欧美日韩一本到| 视频一区免费在线观看| 日韩写真欧美这视频| 奇米色777欧美一区二区| 91麻豆精品国产91久久久资源速度 | 亚洲精品视频在线| 欧美在线制服丝袜| 日韩精品91亚洲二区在线观看| 欧美久久一二区| 久久er99热精品一区二区| 精品国产免费久久| 国产成人午夜99999| 国产精品欧美极品| 在线看国产一区| 日本在线不卡一区| 久久久久亚洲综合| 色系网站成人免费| 午夜国产精品影院在线观看| 欧美一区二区三区婷婷月色| 美国十次综合导航| 国产精品久线在线观看| 91在线观看一区二区| 亚洲国产日韩精品| 欧美mv日韩mv亚洲| www.日韩精品| 天天av天天翘天天综合网 | 久久国产精品第一页| 国产日产亚洲精品系列| 色哟哟精品一区| 久久国产乱子精品免费女| 国产精品欧美久久久久一区二区| 欧美日韩中文字幕一区| 国产精品白丝jk白祙喷水网站| 一区二区三区在线观看欧美| 日韩一卡二卡三卡国产欧美| 99re66热这里只有精品3直播 | 91麻豆高清视频| 麻豆精品一区二区三区| 亚洲男人的天堂在线aⅴ视频| 欧美精品粉嫩高潮一区二区| 丰满岳乱妇一区二区三区| 亚洲国产成人porn| 国产精品久久看| 日韩欧美一级片| 在线区一区二视频| 成人av午夜电影| 久久精品国产77777蜜臀| 亚洲美腿欧美偷拍| 国产欧美久久久精品影院| 欧美日韩视频第一区| 91在线观看下载| 国产在线一区观看| 蜜臀av性久久久久蜜臀av麻豆| 亚洲另类一区二区| 国产精品情趣视频| 久久香蕉国产线看观看99| 欧美日韩国产精品成人| 99国产精品国产精品久久| 韩国三级中文字幕hd久久精品| 五月婷婷欧美视频| 亚洲午夜三级在线| 亚洲精品日产精品乱码不卡| 欧美国产一区二区| 久久精品综合网| 精品久久人人做人人爰| 欧美一级在线观看| 欧美日韩亚洲综合一区二区三区| 色综合中文字幕国产| 成人avav影音| 99精品视频一区二区三区| 国产jizzjizz一区二区| 国产精品一区专区| 精品中文字幕一区二区小辣椒| 日韩成人免费电影| 日本免费在线视频不卡一不卡二| 亚洲一区二区在线免费观看视频| 亚洲精品国产无天堂网2021| 成人欧美一区二区三区白人| 国产精品天美传媒| 亚洲欧洲美洲综合色网| 亚洲女人****多毛耸耸8| 国产精品白丝在线| 亚洲视频一区二区免费在线观看| 亚洲同性同志一二三专区| 亚洲色图视频免费播放| 亚洲综合一区二区三区| 亚洲一区二区三区小说| 性欧美疯狂xxxxbbbb| 日韩精品亚洲专区| 国产中文字幕一区| 成人小视频免费观看| 精品欧美一区二区三区精品久久| 欧美va在线播放| 久久久久9999亚洲精品| 国产精品视频线看| 一区二区三区国产豹纹内裤在线 | 免费精品99久久国产综合精品| 石原莉奈一区二区三区在线观看| 91精品免费观看| 欧美电视剧在线看免费| 久久九九影视网| 国产精品久久久久9999吃药| 亚洲乱码国产乱码精品精的特点| 亚洲网友自拍偷拍| 看电视剧不卡顿的网站| 懂色av一区二区三区蜜臀| 91最新地址在线播放| 欧美三级中文字幕在线观看| 日韩视频免费观看高清完整版| 久久久亚洲高清| 一区二区三国产精华液| 免费看欧美美女黄的网站| 国产成人鲁色资源国产91色综| 日本福利一区二区| 亚洲精品一区二区三区福利| 一区视频在线播放| 日韩电影一区二区三区| 粉嫩久久99精品久久久久久夜| 91热门视频在线观看| 精品久久99ma| 一区二区免费在线| 免费观看在线色综合| av高清久久久| 欧美变态口味重另类| 亚洲精品中文字幕乱码三区| 久久se这里有精品| 欧美午夜电影在线播放| 欧美激情中文字幕| 人人狠狠综合久久亚洲| 91麻豆国产福利在线观看| 精品久久久久久久久久久久久久久久久 | 亚欧色一区w666天堂| 国产成人av一区| 日韩一区二区影院| 亚洲精品国产精品乱码不99| 韩日av一区二区| 欧美日本视频在线| 亚洲激情欧美激情| 成人午夜大片免费观看| 日韩三级在线观看| 亚洲国产欧美日韩另类综合 | 69精品人人人人| 亚洲欧洲综合另类| 不卡av在线网| 中文字幕第一区二区| 国产一区二区导航在线播放| 91精品欧美综合在线观看最新| 一区二区在线观看视频| 不卡的av电影| 国产精品免费人成网站| 国产精品1区2区| 国产三级欧美三级| 国产一区三区三区| 精品国产乱码久久| 久久99精品久久只有精品| 91精品婷婷国产综合久久性色| 亚洲一区二区欧美激情| 色婷婷久久久久swag精品| 国产精品第13页| 972aa.com艺术欧美| 国产精品人人做人人爽人人添| 国内精品伊人久久久久av影院| 欧美一区二区三区视频在线| 青青草国产成人av片免费| 欧美日韩成人综合在线一区二区| 亚洲 欧美综合在线网络| 欧美高清视频一二三区|