私はtinymixユーティリティを使用してカーネル空間の代わりに、ユーザ空間からtinymixコントロールを設定するには、カーネルからサウンドカードのノード/dev/snd/controlC0
にアクセスしたい運動をしています。今私はtinymixユーティリティの流れから、実行の開始時に、内部でカーネルのsnd_ctl_open()
関数を呼び出すユーザ空間からmixer_open()
関数を呼び出すことがわかりました。私はカーネルから同じことをしなければなりません。同じ機能を呼び出す必要があります。私が直面している問題は、機能snd_ctl_open()
が引数を持っていることですstruct inode *inode, struct file *file
。だから私のモジュールのノードのinode情報をどのように入手できますか?カーネルからユーザー空間で作成されたノードにアクセスする方法は?
ファイルmixer.c
はexternal/tinyalsa/mixer.c
でAndroidのAOSPコードの中に配置されます。 snd_ctl_open()
は、Linuxカーネルのsound/core/control.c
にあります。
私が言及した上で作業を行うことができますビルドカーネルAPI filp_open()
の1が見つかりましたが、ファイルシステムのみマウントした後、それを使用することができます。私は、ファイルシステムがマウントされる前にノードをオープンしたい。要するに
、私の目標は、私は、ファイルシステムをマウントする前にカーネルからデバイスノードにアクセスしたり、開くことができる方法を理解することです。
このインタフェースは、カーネル空間から使用されるものではありません。なぜあなたはtinymixをカーネルに移動させる必要があると思いますか? –
返事をありがとう、私の目標は、カーネルからパンダボードのオーディオを有効にすることです。オーディオを有効にするには、モジュールからのサウンドパスを有効にするために、いくつかのミキサー設定を設定する必要があります。ここでミキサーの設定をするには、カーネルからデバイスノード/ dev/snd/controlC0にアクセスする必要があります。もう1つのことは、私はカーネルからtinymix自体を使いたくないということです。自分のモジュールでtinymixによって実行されたタスクを複製したいだけです。 – Hemant
マシンドライバでこれを行うことができないのはなぜですか? –