Linux におけるドライバモジュールのパラメータ転送プロセスの分析

Linux におけるドライバモジュールのパラメータ転送プロセスの分析

ドライバーモジュールに渡すパラメータ名、タイプ、権限を宣言します。

module_param(変数名、タイプ、権限);

#include <linux/init.h>
#include <linux/module.h>

静的char *p_name = "Usr";
module_param(p_name, charp, S_IRUGO);
MODULE_PARM_DESC(p_name, "これはchar * 文字列です。");

静的 int __init hi_init(void)
{
  printk(KERN_INFO "Hi enter %s\n",p_name);
  0を返します。
}
モジュールを初期化します。

静的void __exit hi_exit(void)
{
  printk(KERN_INFO "Hi exit %s\n ",p_name);
}
モジュールを終了します。

モジュールAUTHOR("libra13179");
MODULE_LICENSE("GPL v2");
KVERS = $(シェル uname -r)

# カーネルモジュール
obj-m += hi.o

# モジュールのコンパイルのフラグを指定します。
#EXTRA_CFLAGS=-g -O0

ビルド: kernel_modules

カーネルモジュール:
  make -C /lib/modules/$(KVERS)/build M=$(CURDIR) モジュール
# @echo $(KVERS)

クリーン:
  make -C /lib/modules/$(KVERS)/build M=$(CURDIR) をクリーンにする

設定されていない場合はデフォルト値が使用されます。

root@lin-virtual-machine:/home/lin/hi# insmod ./hi.ko
root@lin-virtual-machine:/home/lin/hi# cat /var/log/syslog | grep Hi
...
7月25日 15:11:38 lin-virtual-machineカーネル: [ 203.238178] Hi enter Usr
...

設定を使用する場合

root@lin-virtual-machine:/home/lin/hi# insmod hi.ko p_name='God'

モジュールをロードすると、/sys/modules の下にモジュール フォルダーが生成され、そのフォルダーの下にパラメーター フォルダーが作成されます。

パラメータ名にちなんで名付けられたファイルノードが含まれており、たとえばp_nameに設定した値が格納されます。

root@lin-virtual-machine:/home/lin/hi# cat /sys/module/hi/parameters/p_name

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux カーネル デバイス ドライバーのメモリ管理に関する注意事項
  • Linux カーネル デバイス ドライバー カーネル時間管理に関する注意事項
  • Linux カーネル デバイス ドライバー キャラクタ デバイス ドライバー ノート
  • Linux カーネル デバイス ドライバー仮想ファイル システムに関する注意事項
  • Linux カーネル デバイス ドライバー カーネル デバッグ テクニカル ノート集
  • Linux カーネル デバイス ドライバー カーネル リンク リストの使用上の注意
  • Linux カーネル デバイス ドライバー proc ファイル システム ノート
  • Linuxカメラドライバの書き方の詳細説明

<<:  MySQL の 3 つの Binlog 形式の概要と分析

>>:  Docker に Solr 8.6.2 をインストールし、中国語の単語セグメンターを構成する方法

推薦する

VUE uni-app でよく使用される API についての簡単な説明

目次1. ルーティングとページジャンプ2. インターフェース要約する1. ルーティングとページジャン...

Dockerモードで起動したTomcatのホームページにアクセスすると404エラーが発生する

シナリオ: docker で tomcat を起動すると (Alibaba Cloud からダウンロ...

HTML チュートリアル: 順序付きリスト

<br />原文: http://andymao.com/andy/post/103.h...

Vueはechartを使用してラベルと色をカスタマイズします

この記事では、参考までに、echartを使用してタグと色をカスタマイズするVueの具体的なコードを紹...

MySQL 8.0.23のルートパスワードをリセットするための最適なソリューション

この方法は2021年2月7日に編集されました。私が使用しているバージョンは8.0.23です。事件の原...

XHTML CSS ページをプリンタ ページに変換する

以前は、Web ページのプリンタ対応バージョンを作成するには、印刷したときに見栄えがよくなるようにレ...

MySQLでユーザーを作成し、権限を管理する方法

1. ユーザーとパスワードの作成方法1. MySQLデータベースに入る mysql> mysq...

MySQL CHARとVARCHARの選択方法

目次VARCHAR 型と CHAR 型結論: VARCHAR 型と CHAR 型VARCHAR と ...

JSにおける合同と不等式、等式と不等式の問題について

目次一致と不一致一致するすべてが平等ではない平等と不平等等しい等しくない一致と不一致シンボルの両側の...

要素UIポップアップコンポーネントをカプセル化する手順

el-dialogをコンポーネントとしてカプセル化するelement-ui を使用する場合、ポップア...

要素ツリーコントロールは、ドロップダウンメニューとアイコンを統合します(ツリー+ドロップダウン+入力)

目次要件:実装手順:この記事では主に以下について説明します: カスタムツリーコントロール<el...

電子署名を実装するWeChatミニプログラム

この記事では、WeChatミニプログラムで電子署名を実装するための具体的なコードを参考までに紹介しま...

CSS3で背景画像にカラーマスクを追加する方法

以前、開発中に背景レイヤーにカラーマスクを追加する必要のあるプロジェクトに遭遇しました。ここでは、背...

データベースSQL SELECTクエリの仕組み

私たちは Web 開発者として、プロの DBA ではありませんが、データベースなしではやっていけませ...

MySQLクエリ制御ステートメントの詳細なグラフィック説明

mysql クエリ制御ステートメントフィールド重複排除 **キーワード: 明確** 構文: テーブル...