Linuxパラメータとは何ですか
linux param は、コマンド ライン パラメータを渡すために使用される「module_param」関数を指します。ユーザー モードでのプログラミングでは、カーネル モジュールのパス パラメータを作成するときに、「main()」パラメータを介してコマンド ライン パラメータを渡すことができます。 「module_param()」を通じて。
#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。
Linux param とは何ですか?
Linux ドライバーでの module_param の使用法
main 関数から始める
ユーザー モードでプログラムを作成するとき、誰もが main 関数の if パラメーターを使用してプログラムにデータを渡します
#include <stlib.h> #include <stdio.h> int main(int argc,char **argv) { exit(0); }</stdio.h></stlib.h>
ここで、argc はプログラムに渡されるパラメータの数、argv は渡されるパラメータ、最初のパラメータ argv[0] はパスを含む現在のファイルの名前であるため、パラメータの実際の数はプログラムに渡されるのは argc-1 です。
カーネル モジュールにパラメータを渡す
カーネル モジュールには main 関数がないため、モジュールにパラメータを渡すには module_param マクロ定義を使用します。
// 原型 #define module_param(name, type, perm) \ module_param_named(name, name, type, perm)
name: 受信パラメータ名
type: 受信パラメータのタイプ (byte、short、ushort、int、uint、long、ulong、charp、bool、invbool を含む)
perm: これはアクセス許可です。 sysfs 内のリソースへのアクセスについては、以下で詳しく説明します。次の権限タイプは主に uapi/linux/stat.h で定義されています
#define S_IRWXU 00700 // 用户读写可执行权限 #define S_IRUSR 00400 // 用户读权限 #define S_IWUSR 00200 // 用户写权限 #define S_IXUSR 00100 // 用户可执行权限 #define S_IRWXG 00070 // 用户组读写可执行权限 #define S_IRGRP 00040 // 用户组读权限 #define S_IWGRP 00020 // 用户组写权限 #define S_IXGRP 00010 // 用户组可执行权限 #define S_IRWXO 00007 // 其他人可读写执行权限 #define S_IROTH 00004 // 其他人可读权限 #define S_IWOTH 00002 // 其他人可写权限 #define S_IXOTH 00001 // 其他人可执行权限
モジュール コードの記述:
#include <linux> int num = 100; module_param(num,int,S_IRUSR); static int __init param_init(void) { printk("[%s] num = %d\r\n",__FUNCTION__,num); return 0; } static void __exit param_exit(void) { printk("[%s] num = %d\r\n",__FUNCTION__,num) } module_init(param_init); module_exit(param_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Chen");</linux>
Makefile ファイル:
ifneq ($(KERNELRELEASE),) obj-m:=param.o else KERNEL_DIR:=/lib/modules/$(shell uname -r)/build CURRENT_DIR:=$(shell pwd) ccflags-y:=-std=gnu99 -Wno-declaration-after-statement all: $(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) modules clean: $(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) clean endif
プログラムをコンパイルし、モジュールをインストールし、dmesg
モジュールをインストールすると、/sys/module フォルダーにモジュール名に対応するフォルダーが生成されますをクリックして、フォルダーに入ります
フォルダーを入力すると、フォルダー内のパラメーターフォルダーに前のプログラムの num があります。
この図から、カーネルがユーザーがアクセスできるようにファイル システム内に対応するファイルを生成し、モジュール内の module_param マクロ定義の perm がユーザーの読み取り専用を設定していることがわかります。許可なので、num ファイルの許可がそれに対応します。
もちろん、入力パラメータの値を変更するための書き込み権限を設定することもできます。変更後、カーネル モジュール内のパラメータは変更されますが、情報プロンプトは表示されません。
関連する推奨事項: 「Linux ビデオ チュートリアル 」
以上がLinuxパラメータとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









web.xmlファイルを開くには、次の方法を使用できます。テキストエディター(メモ帳やテキストエディットなど)を使用して、統合開発環境(EclipseやNetBeansなど)を使用してコマンドを編集できます(Windows:Notepad web.xml; Mac/Linux:Open -A Textedit Web.xml)

言語のマルチスレッドは、プログラムの効率を大幅に改善できます。 C言語でマルチスレッドを実装する4つの主な方法があります。独立したプロセスを作成します。独立して実行される複数のプロセスを作成します。各プロセスには独自のメモリスペースがあります。擬似マルチスレッド:同じメモリ空間を共有して交互に実行するプロセスで複数の実行ストリームを作成します。マルチスレッドライブラリ:pthreadsなどのマルチスレッドライブラリを使用して、スレッドを作成および管理し、リッチスレッド操作機能を提供します。 Coroutine:タスクを小さなサブタスクに分割し、順番に実行する軽量のマルチスレッド実装。

Linux Systemsに付属するPythonインタープリターを削除する問題に関して、多くのLinuxディストリビューションは、インストール時にPythonインタープリターをプリインストールし、パッケージマネージャーを使用しません...

Linuxは、サーバー管理、組み込みシステム、デスクトップ環境として最適です。 1)サーバー管理では、LinuxはWebサイト、データベース、アプリケーションをホストするために使用され、安定性と信頼性を提供します。 2)組み込みシステムでは、Linuxは柔軟性と安定性のため、スマートホームおよび自動車電子システムで広く使用されています。 3)デスクトップ環境では、Linuxは豊富なアプリケーションと効率的なパフォーマンスを提供します。

DebianLinuxは、その安定性とセキュリティで知られており、サーバー、開発、デスクトップ環境で広く使用されています。現在、DebianとHadoopとの直接的な互換性に関する公式の指示が不足していますが、この記事では、DebianシステムにHadoopを展開する方法について説明します。 Debianシステムの要件:Hadoop構成を開始する前に、DebianシステムがHadoopの最小動作要件を満たしていることを確認してください。これには、必要なJavaランタイム環境(JRE)とHadoopパッケージのインストールが含まれます。 Hadoop展開手順:Hadoopをダウンロードして解凍:公式ApachehadoopのWebサイトから必要なHadoopバージョンをダウンロードして解決します

GOを使用してOracleデータベースに接続するときにOracleクライアントをインストールする必要がありますか? GOで開発するとき、Oracleデータベースに接続することは一般的な要件です...

ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。
