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 データベースにリモート接続する方法のチュートリアル
序文プロジェクトのリリースでは、常に特定の状況に応じたパッケージ化が必要です。Angular CLI...
多くのプロジェクトでは、中央に灰色の分割線があり、両側に分割線がないグリッド表示の機能を実装する必要...
目次特徴保存戦略自己増加の決定自動増分値の変更実行プロセス問題点自動増分ロックロック戦略バッチ挿入の...
目次概要静的型チェックコードスタイルチェック(Linter)パッケージマネージャーモジュールローダー...
目次序文DockerファイルDockerfile とは何ですか? Dockerfile 構文Spri...
書き換えモジュールは ngx_http_rewrite_module モジュールです。その主な機能は...
この記事では、ローカル yum ソースを使用して CentOS 上に LAMP 環境を構築する方法に...
1. CSS、jQuery、Canvasを使用してアニメーションを作成する1. キャンバス利点: ...
1. IE8 の getElementById は id のみをサポートし、name はサポートしま...
クイックリーディングSQL ステートメントを監視する必要があるのはなぜか、監視方法と監視手段について...
gzip は、Linux システムでファイルの圧縮と解凍によく使用されるコマンドです。このコマンドで...
エラーを報告するApache\Nginx サービスは正常に起動しましたが、MySQL は起動に失敗し...
MYSQLは大文字と小文字を区別します言葉を見れば信じられます。タイトルを見れば内容がわかります。 ...
コラムを更新してからどれくらい経ったでしょうか?半年ですか?今年の後半は、まさに離陸、つまり文字通り...
目次1. バックアップ1.1 万全の準備1.2 追加の準備2 バックアップとリカバリ2.1 データの...