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 データベースにリモート接続する方法のチュートリアル
序文MySQL は、2016 年もデータベースの人気において力強い成長傾向を維持し続けました。 My...
目次1. DHCP サービス (動的ホスト構成プロトコル) 1. 背景2. 概要3. 利点4.DHC...
多くの友人は、フロントエンドを学習するときに、ボックス モデルがデフォルトで正方形であることに気付き...
各ブラウザの select タグのプロパティと各ブラウザのサポートが多少異なるため、各ブラウザでの選...
プロジェクトシナリオ: Vueプロジェクトを実行したらインデントエラーが出ました。ideaコンパイラ...
webpack を使用してシングルページのプログラムを構築することは非常に一般的ですが、実際の開発で...
1. Dockerをインストールします。参考URL: Docker 入門インストールチュートリアル ...
前回の記事では、Docker を使用して Laravel アプリケーションをデプロイする方法について...
まず、Linux システムで実行されているノード プロセスはプロセスを強制終了できないことを紹介しま...
背景要件:ビジネスがどんどん大きくなると、サーバーの数も増え、さまざまなアクセスログ、アプリケーショ...
1. はじめにまず、1 台のマシンで複数のインスタンスを使用する理由という質問に答える必要があります...
コンテナ間の通信1. コンテナのネットワーク共有このモードの Docker コンテナはネットワーク ...
HTTP圧縮とは場合によっては、比較的大きなメッセージ データがクライアントとサーバー間で送信され、...
123WORDPRESS.COM では、FileZilla のダウンロード リンクを提供しています:...
この記事では、参考のために、ミニプログラムでカスタムのマルチレベル単一選択および複数選択機能を実装す...