参照元

説明

参考: private_data について

struct snd_pcm_ops にて与える PCM デバイス操作に使う関数群は、 引数として struct snd_pcm_substream * を受け取るものがほとんど。 この構造体からドライバ独自のデータを取り出す方法を調べた。

snd_pcm_substream 構造体は snd_pcm から、値を受け継いでいる。 詳細な関係については、下記を参照。

ALSA SoC Layer を使わない場合
-----
//ドライバ自身が行う
snd_pcm->private_data = ドライバ独自データ

ALSA SoC Layer を使う場合
-----
//soc_new_pcm() が行う
snd_pcm->private_data = 

共通
-----
//snd_pcm_attach_substream() が行うと思われる
snd_pcm_substream->private_data = snd_pcm->private_data

実装

struct snd_pcm {
        struct snd_card *card;
        struct list_head list;
        int device; /* device number */
        unsigned int info_flags;
        unsigned short dev_class;
        unsigned short dev_subclass;
        char id[64];
        char name[80];
        struct snd_pcm_str streams[2];
        struct mutex open_mutex;
        wait_queue_head_t open_wait;
        void *private_data;
        void (*private_free) (struct snd_pcm *pcm);
        bool internal; /* pcm is for internal use only */
        bool nonatomic; /* whole PCM operations are in non-atomic context */
#if defined(CONFIG_SND_PCM_OSS) || defined(CONFIG_SND_PCM_OSS_MODULE)
        struct snd_pcm_oss oss;
#endif
};

コメント


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS