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 をインストールし、中国語の単語セグメンターを構成する方法

推薦する

Apacheドメイン名設定の落とし穴の詳細な説明

私はApacheを使ったことがありません。仕事を始めてからはずっとnginxを使っていました(運用保...

データベース管理に役立つ 5 つの MySQL GUI ツール

MySQL には多くのデータベース管理ツールがあります。作業効率の向上に役立つ優れた GUI ツール...

鏡像効果を実現する JavaScript キャンバス

この記事では、JavaScriptキャンバスでミラーイメージ効果を実現するための具体的なコードを参考...

反応ルーティングでパラメータを渡すいくつかの方法についての簡単な説明

最初のパラメータ渡し方法は、動的ルーティングパラメータ渡しです。リンクのパス属性を設定することで、ル...

Vueのシンプルストアの詳しい説明

Vue におけるストアの最も単純な応用はグローバル ストレージです。ここでは、相互にジャンプするため...

CSS でのフィルタープロパティの使用に関する詳細な説明

フィルター属性は要素の視覚効果を定義しますぼかし画像にガウスぼかしを適用します。 「半径」の値は、ガ...

InnoDB タイプの MySql によるテーブル構造とデータの復元

前提条件: データベースを復元するために必要な .frm ファイルと .ibd ファイルを保存します...

nginx と Tencent Cloud の無料証明書を使用して https を作成する方法

httpsを取得する方法を勉強しています。最近、Tencent Cloud が提供する無料の SSL...

XHTML Web ページ チュートリアル

<br />この記事は主に、初心者にXHTMLの基本知識と、XHTMLとHTMLの違いを...

JavaScript の for/of、for/in の詳細な紹介

目次JavaScriptでは、 forループを記述する一般的な方法がいくつかあります。最初の、そして...

Win10環境にMysql5.7.23をインストールする際の問題点と落とし穴

たくさんのチュートリアルを読みましたが、うまくインストールできませんでした。しばらく試行錯誤した後、...

MySQL から Excel にテーブルデータをエクスポートする際の日時形式に関する簡単な説明

最近、MySQL を使用してテーブル データを Excel ファイルにエクスポートしました。MySQ...

Web 開発チュートリアル クロスドメイン ソリューションの詳細な説明

序文この記事では、主にWeb開発のためのクロスドメインソリューションを紹介し、参考と学習のために共有...

MySQLクエリ最適化: 100万件のデータに対するテーブル最適化ソリューション

1. 2つのクエリエンジン(myIsamエンジン)のクエリ速度InnoDB はテーブル内の特定の行数...

MySQL インストール プロンプト「詳細なヘルプについては NET HELPMSG 3534 と入力してください」の解決方法

今日、MySQL をインストールすると次のエラー メッセージが表示されます。 かなり長い時間ネットで...