問題タブ [linux-device-driver]
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-kernel - unregister_chrdev()呼び出しが成功したかどうかを確認する方法
[linux \ fs.h]からのunregister_chrdev()呼び出しは、成功した場合は0を返し、それ以外の場合は<0を返します。しかし現在、新しいカーネルバージョンでは、関数の戻り値がvoidに変更されているため、何も返されなくなりました。
質問:unregister_chrdev()呼び出しが成功したかどうかを確認する方法はありますか?
linux-kernel - /procを使用する場合と/devを使用する場合
デバイスドライバーではないカーネルモジュールを作成する必要があります。そのモジュールは、いくつかのユーザースペースプロセスと通信します。ioctl()を使用したくないので、/ procディレクトリにファイルを作成するか、/devディレクトリにデバイスファイルを作成する必要があります。
質問:/procと/devのどちらを使用するかを決定するにはどうすればよいですか。これは単なる判断の呼びかけですか、それともこれら2つを使用することについての書面による合意はありませんか。
linux - Linuxで「スピーカーサーバー」にオーディオをストリーミングする
ラップトップ (低品質のスピーカー) から Linux のはるかに優れたスピーカー (両方のコンピューター) を備えたデスクトップにすべてのオーディオをストリーミングする方法はありますか? これは、アプリケーションを透過的にするために alsa システムの下に収まる必要があるため、カーネル ドライバーである必要があると思います。
ありがとう、アンドリュー
linux-kernel - Linux キャラクタ ドライバで使用する正しいロック
私は単純なキャラクターデバイスドライバーを書いています。(カーネル 2.6.26) 複数の同時リーダーとライターが必要です。
内部構造への短いアクセスを同期するためにどのタイプのロックを使用するのが最適かわかりません。
どんなアドバイスでも大歓迎です
linux-kernel - ユーザー プログラムと Linux カーネル モジュール間の通信にはどのようなオプションがありますか?
私は Linux カーネル モジュール プログラミングの初心者です。これまで読んだ資料から、ユーザー プログラムがサービスを要求したり、Linux カーネル モジュールと通信したりする方法は 3 つあることがわかりました。
- /dev のデバイスファイル
- /proc ファイル システム内のファイル
- ioctl() 呼び出し
質問: ユーザー プログラムと Linux カーネル モジュール間の通信には、他にどのようなオプションがありますか?
c - netlink ソケットを使用してカーネルモジュールと通信するには?
netlink を使用してユーザー プロセスと通信する Linux カーネル モジュールを作成しようとしています。通信したいユーザープログラムはソケットを使用してのみ通信し、それを追加ioctl()
または何かに変更できないため、netlinkを使用しています。
問題は、その方法を理解できないことです。私はグーグルで検索しましたが、私が見つけたすべての例はこのような古いものであり、現在のカーネル バージョンでは無効になっています。this SO questionも見ましたが、ここのサンプルではソケット操作にlibnlを使用していますが、標準のソケット関数 (によって定義されています) に固執したいと思いますsys/socket.h
。それで、いくつかのチュートリアルやガイド、またはnetlinkのインターフェースと使用法を理解するのに役立つ何かに私を案内してくれる人がいますか. ユーザープログラムのソケットからカーネルのソケットへの接続を確立し、ユーザープロセスからカーネルにデータを送信し、カーネルから受信する方法の非常に基本的な例にすぎません。
また、カーネルコードを見るように言わないでください。私はすでにそれをやっていますが、それには多くの時間がかかり、あまり残っていません.
更新:
多くの試行錯誤の後、ユーザー プログラムからカーネルにメッセージを送信する次のコードがありますが、カーネルからユーザー プログラムへのメッセージ、つまり使用netlink_unicast()
が機能していません。機能しないだけでなく、呼び出しによってシステムがハングし、マシンを再起動する必要があります。誰かが見て、私が何をしているのか教えてもらえますか。このnetlink_unicast()
呼び出しは、次のコードでコメント化されています。カーネルからユーザー プログラムへのメッセージに対しては、コメントを解除する必要があります。
ユーザープログラム
カーネルコード
linux-kernel - SMBus を介したバッテリー状態へのアクセス/監視
現在、SMBus を介してバッテリーの状態を監視しようとしています。
バッテリーの状態を常に出力するコントロールボードと一緒にバッテリーを持っています。
この制御ボードは、I2C-USB モジュールを介してマザーボードに接続されます。
SMBus 接続を認識し、バッテリーの状態をユーザーに送信するプログラムを作成する必要があります。
私はスマート バッテリと I2C/SMBus を扱うことに関しては初心者であり、この問題にどのように対処すればよいか迷っています。
提案の助けをいただければ幸いです。ありがとう。
linux-kernel - sk_buffを解放するのは誰の責任ですか
関数ポインタを使用してネットリンクソケットを作成している間netlink_kernel_create()
、このソケットでメッセージが受信されたときに呼び出されるこの関数への引数として渡されます。このコールバック関数は、受信しsk_buff
たメッセージを含むasパラメーターを受け取ります。
私の質問は、これを解放するのは誰の責任sk_buff
ですか?
サンプルコード
#include <linux / module.h>
#include <net / sock.h>
#include <linux / netlink.h>
#include <linux / skbuff.h>#define NETLINK_USER 31
struct sock * nl_sk = NULL;
static void my_nl_recv_msg(struct sk_buff * skb){
}
static int __init hello_init(void){
}
linux-device-driver - Linux から USB ホスト コントローラー ドライバーを削除する
カーネルから USB ホスト コントローラー ドライバーを無効化/削除する方法を教えてください。カーネルから USB ドライバー モジュールをアンフックする方法はありますか。
Linux 2.6.24.7-r1116 / フェドラ
c - ユーザー空間への DMA バッファのマッピング
Linux-2.6.26 でデバイス ドライバーを作成しています。ドライバーからユーザー空間アプリケーションにデータを送信するために、dma バッファーをユーザー空間にマップしたいと考えています。それに関する良いチュートリアルを提案してください。
ありがとう