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 データベースにリモート接続する方法のチュートリアル
現在のトランザクションはどの履歴バージョンを読み取ることができますか?読み取りビューは、トランザクシ...
ドキュメント オブジェクト モデル (DOM) は、プログラムがドキュメントのコンテンツ、構造、およ...
序文ページを共有するときに、ブラウザの戻るボタンをクリックしてプロジェクトのホームページに戻り、訪問...
目次序文配列.プロトタイプ.includes文法パラメータ戻り値例配列プロトタイプの削減文法パラメー...
1. DOCTYPE は必須です。ブラウザは宣言した DOCTYPE に基づいてページのレンダリング...
前提条件: Mac、zsh がインストールされ、bash のときに mysql がダウンロードされ、...
実際の業務や面接では、「配列の重複排除」の問題によく遭遇します。以下は、js を使用して実装された配...
1. フローティング方式を使用する効果画像: コードは次のとおりです: (.content の高さは...
NFSが提供するサービスマウント: サーバー上で /usr/sbin/rpc.mountd サーボ ...
暗号化と復号化は、通信のセキュリティを確保するための重要な手段です。すでに多くの暗号化アルゴリズムが...
概要Docker 自体の現在のデフォルト ネットワークについては、単一ホスト上の異なる Docker...
次のコードを index.html などのデフォルトのホームページ ファイルとして保存し、ルート デ...
問題は次のとおりです。mysql -uroot -p コマンドを入力しましたが、パスワードを忘れてし...
MySQL のインストールについてはインターネット上に多くの記事がありますが、今日ノート PC にイ...
1. ネストされたルーティングはサブルーティングとも呼ばれます。実際のアプリケーションでは、通常、ネ...