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 データベースにリモート接続する方法のチュートリアル
ウェブサイトの構築では、HTML と CSS に関するさまざまな問題に常に遭遇します。ウェブサイト ...
目次ケーススタディアカウント残高を更新する直接更新楽観的ロック方式ロックフリーソリューションキューイ...
CSS の将来は非常に楽しみです。一方では、まったく新しいページ レイアウト方法であり、他方では、ク...
この記事では、アンカー配置を実現するためのVue +要素UIの具体的なコードを例として紹介します。具...
インターフェースの役割:インターフェース (英語: interface) の機能は、簡単に言えば、コ...
コンピュータを使用すると、システム内に大量のゴミが生成されます。最も一般的なケースは、同じファイルが...
REPLACE構文REPLACE(String,from_str,to_str)つまり、String...
el-form フォームにルールを追加します。データにルールを定義する定義されたルールをel-for...
マスタースレーブレプリケーションがなぜ必要なのでしょうか? 1. 複雑な業務システムでは、SQL 文...
<script> タグHTML5では、スクリプトには次の属性があります: async、d...
目次序文1. Iceraven ブラウザ (Firefox) (Android) 2. (アンドロイ...
関連記事: CentOS7でyumを使用してDockerをインストールするDockerを使ってWin...
目次(I) Workbenchを使用してデータベースを操作する①データベースを作成する② データベー...
Centos7はyumを使用してMySQLをインストールし、リモート接続を実現する方法です。MySQ...
コンテナの起動コマンドを取得する方法コンテナはすでに作成されていますが、その起動パラメータ(データが...