問題タブ [userspace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - ユーザー空間の ALSA PCM 再生デバイス
ユーザー空間で完全に動作する Linux PCM 再生デバイスを作成する方法を理解するのに苦労しています。アプリケーションが snd_pcm_open/snd_pcm_readi/writei を呼び出すとき、呼び出しがユーザー空間ドライバーで終了し、ユーザー空間ドライバーが初期化されたときに作成されたスレッドで pcm データが処理されるようにします。オーディオ プロセス スレッドは、pcm を HW に出力する実際の ALSA カーネル ドライバーを呼び出します。これは基本的に私が達成したいことです:
アプリケーション -> ALSA (pcmC1D0p) -> オーディオ処理スレッド (ユーザー空間) -> ALSA (pcmC0D0p) -> HW
プラグインを少し調べましたが、それが正しい方法かどうかわかりませんか? また、実際にプラグインを開始する方法がわかりませんか? .so ファイルをコンパイルしましたが、どこに配置すればよいのか、どのように/何がそれを呼び出すのかわからないのですか?
任意のポインタをいただければ幸いです。
linux - ユーザー空間とカーネル空間での null ポインター逆参照
ユーザー空間とカーネル空間で null ポインターを逆参照するとどうなりますか?
私の理解では、動作はコンパイラ、アーキテクチャなどに基づいています。
ただし、一般に、仮想メモリが割り当てられたすべてのユーザー空間プログラムに対して、ページテーブルを使用して仮想アドレスを物理アドレスに変換するためにページングが使用されます。
したがって、ユーザー空間でヌルポインターを逆参照している場合、そのアドレスは無効であるため、コンテキストスイッチが発生し、カーネルでは、このヌルポインター逆参照の割り込みに基づいて「セグメンテーション違反が発生するか、ページ障害エラーが発生します」。
カーネル空間:
NULL ポインターを逆参照すると、システムがクラッシュしたり、カーネルがその呼び出しから戻れなくなる可能性があります。
私の理解は正しいですか?またはその他の情報が不足している場合は、説明してください。
参考:「CでNULLポインタを逆参照するとOSはどうなるの?」ということで理解できました。
linux - PCIe ドライバー - ユーザー空間はどのようにアクセスしますか?
Linux 用の PCIe ドライバーを作成していますが、現在 DMA を使用していません。PCIe デバイスがユーザー空間から有効になったら、読み書きする方法を知る必要があります。
ドライバーでは、probe() で基本を行います。
しかし、ユーザー空間からこのメモリにアクセスして読み書きするにはどうすればよいでしょうか? PCIe ドライバーにファイル操作を追加しますか? pci_iomap からのメモリは、ユーザー空間コードが呼び出すことができる場所に表示されますか?
もしそうなら、場所は何ですか?
注: PCIe デバイスは、オーディオ、イーサネットなどの Linux サブシステムには接続されません。
sockets - Net-link ソケットのハングの問題
ユーザー空間からデータを継続的に送信し、カーネル空間からユーザー空間にメッセージを継続的にリダイレクトする Net-link Socket Over を作成したいと考えています。しかし、ハングします。ヘルプまたは解決策を提案してください。なぜこれが起こっているのか知っている人は、解決策を提供してください。
Kernel SPACEで使用したコードは
ユーザー空間のコードは
linux - Linux の一時停止/再開操作のユーザー空間通知
私は組み込み Linux プラットフォームに取り組んでいます。
「echo "mem" > /sys/power/state」を実行すると、システムがサスペンドします。
カーネルとドライバーは、サスペンド操作が近づいていることを認識できることを知っています。しかし、ユーザー空間のプロセスまたはアプリケーションが、システムが中断するという通知を受け取る可能性はありますか? どのように?
たとえば、デバイス ドライバによって開始アドレスが指定されたバッファに連続して「A」を書き込むアプリケーションがあります。システムが一時停止することをこのアプリケーションに通知して、このバッファーをすべて 'B' に置き換え、ドライバーが再開されたときにドライバーが認識するのはすべて 'B' になるようにすることは可能でしょうか?
どうもありがとう。
c - ユーザー空間のCでメモリマップされたデバイスをモックする
デバイス ラッピング ライブラリ (Linux) の効果的な単体テストを行うために、メモリ マップド デバイスを C でモックしたいと考えています。
これで、ファイル記述子をユーザー空間に入れることができることがわかりmmap
ました。これは、原則として、上記のデバイスのモックを表すことができます。
したがって、AFAICT、私の質問は次のようになります。ユーザー空間でmmap
、適切なコールバックによって読み取りと書き込みが処理され、操作できるファイル記述子を作成することは可能ですか?
または、おそらくこれは解決済みの問題であり、フックできる既知のカーネル ドライバーがありますか?