1. Linuxカーネルドライバモジュールの仕組み 静的ロードでは、ドライバモジュールをカーネルにコンパイルし、カーネルの起動時にロードします。動的ロードでは、ドライバモジュールを ko としてコンパイルし、カーネルの起動時にロードします。 2. カーネルドライバを書く #include <linux/module.h> #include <linux/init.h> 静的 int __init test_init(void) { return 0; // 成功を示すには 0 を返し、モジュールのロードを終了するには負の数を返します} //__init カーネルがドライバーを初期化した後、この関数のコード命令空間を解放します static void __exit test_exit(void) { .... } //__exit は、この関数がドライバーがアンインストールされたときにのみ使用され、使用後に解放されることを指定します。module_init(test_init); //モジュール初期化関数として test_init を指定します。module_exit(test_exit); //モジュール終了アンインストール関数として test_exit を指定します。MODULE_LICENSE("GPL"); //サポートされているプロトコルを指定します。MODULE_AUTHOR("Author"); MODULE_DESCRIPTION("説明"); MODULE_VERSION("バージョン"); #define __init __section(.init.text) #define __initdata __section(.init.data) char __initdata buf[] = "hello world"; #define __exitdata __section(.exit.data) #define __exit __section(.exit.text) ///////////// モジュール情報を表示するには テスト 1768 0 - ライブ 0xbf03c000 モジュール名、使用メモリサイズ、呼び出し回数、有効性、モジュールが配置されているメモリアドレス すべてのモジュールを表示するには 3. ドライバモジュールのMakefile
4. ドライバーの出力メッセージを確認する /var/log/メッセージを調べる /var/log/メッセージを追跡する 5. Printk レベル制御 /usr/src/kernels/2.6.18-194.el5-i686/include/linux/kernel.h <linux/カーネル.h> #define KERN_EMERG "<0>" /* システムは使用不可です */ #define KERN_ALERT "<1>" /* すぐにアクションを実行する必要があります */ #define KERN_CRIT "<2>" /* クリティカルコンディション */ #define KERN_ERR "<3>" /* エラー条件 */ #define KERN_WARNING "<4>" /* 警告条件 */ #define KERN_NOTICE "<5>" /* 正常だが重要な状態 */ #define KERN_INFO "<6>" /* 情報 */ #define KERN_DEBUG "<7>" /* デバッグレベルのメッセージ */ デフォルトのレベルは 使用方法:
printk関数で使用されるレベルが現在の 出力レベルを変更する 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。 以下もご興味があるかもしれません:
|
<<: ログインインターセプションを実装するためのVueルーティング
>>: Linux システムで MySQL データベースにリモート接続する方法のチュートリアル
目次1. ES 構文のゲッターとセッター2. ES構文でのdefineProperty 3. Vue...
序文一般的なビジネス シナリオでは、検索ボックスへの入力が完了した後、検索データを取得するために関連...
上図のように、パディング値は時計回り(右上、右下)の複合属性であり、パディングの内側の余白がボックス...
順序なしリストでは、順序なしリストのシンボルは各リストの前に表示されるドットです。順序付きリスト o...
問題を見つける最近、プロジェクトで問題が発生しました。接続が多すぎるため、「接続が多すぎます」という...
目次序文関連資料成果を達成する実装手順序文Openlayer には独自の拡張プラグイン ol-ext...
毎日jQueryプラグイン - カルーセルチャートを実装するためのjQueryプラグイン。参考までに...
ウェブサイト体験の分類1. 感覚体験:快適性を重視した視聴覚体験をユーザーに提供します。 2. イン...
この質問をされたとき、私は無知で頭が真っ白になりました。もちろん、正しく答えられませんでした。私はず...
クッキーこれはクライアント ブラウザの状態を保存するための標準的な方法です。Cookie はブラウザ...
圧縮パッケージのインストールは、mysql-5.7 以降、大幅に変更されました。この記事では、mys...
React Router を理解したいなら、まず歴史を理解する必要があります。より具体的には、Rea...
MySQLをインストールする6つの手順(インストールパッケージのみがインストール場所を選択できます)...
MySQL は、SQL 解析とクエリ最適化のプロセスを通じて SQL を実行します。パーサーは SQ...
PostgreSQL はコンパイルされインストールされるため、起動時に起動するように設定する必要があ...