Linux カーネル デバイス ドライバー proc ファイル システム ノート

Linux カーネル デバイス ドライバー proc ファイル システム ノート
/*****************
 * proc ファイルシステム********************/

(1)/procファイルシステムの特徴と/procファイルの説明

/proc ファイルシステムは、ソフトウェアによって作成される特別なファイルシステムです。カーネルはこれを使用して情報を外部にエクスポートします。/proc システムはメモリ内にのみ存在し、外部メモリ領域を占有しません。

/proc の下にある各ファイルはカーネル関数にバインドされており、ユーザーがファイルを読み取るとファイルの内容を動的に生成します。 /procファイルに書き込むことでカーネルパラメータを変更することもできます。

/proc ディレクトリ /proc/$pid の下のファイル分析、プロセス $pid に関する情報ディレクトリ。各プロセスには、/proc の下にプロセス番号にちなんで名付けられたディレクトリがあります。例: $>strings -f /proc/[0-9]*/cmdline

  • /proc/cmdline カーネル起動用のコマンドライン
  • /proc/cpuinfo タイプ、製造元、モデル、パフォーマンスなどのプロセッサ情報。
  • /proc/devices には、キャラクタ デバイスとブロック デバイスのメジャー番号と、それらの番号に割り当てられたデバイス名がリストされます。
  • /proc/dma は現在使用されている DMA チャネルを表示します。
  • /proc/filesystemsには、使用可能なファイルシステムの種類がリストされています。通常はカーネルに組み込まれていますが、モジュールを介して新しい種類を追加することもできます。
  • /proc/interrupts には、使用された割り込み番号、割り込み名、およびシステムの起動後にこれらの割り込みが発生した回数が表示されます。
  • /proc/ioports 現在使用されている I/O ポート。
  • /proc/kallsyms カーネル シンボル テーブル。新しいモジュールをインストールするとここに反映されます
  • /proc/kcore システムの物理メモリイメージ。物理メモリとまったく同じサイズですが、実際にはそれほど多くのメモリを占有しません。(覚えておいてください: /proc の下にあるものは、ファイルにコピーされない限り、ディスク領域を占有しません)
  • /proc/kmsg カーネル出力メッセージ。 syslog にも送信されます。
  • /proc/loadavg システムの平均負荷。最初の 3 つは過去 1 分、5 分、15 分の負荷で、その後に実行中のタスクの数とタスクの合計数、最後に最後に実行されたプロセス番号が続きます。
  • /proc/meminfo 物理メモリやスワップなどのメモリ使用量情報。
  • /proc/modules 現在ロードされているコアモジュール。
  • /proc/partitions システムに現在マウントされているハードディスクのパーティション情報
  • /proc/pci システム PCI バス情報
  • /proc/net ネットワーク プロトコルのステータス情報。
  • /proc/self /proc を参照するプログラムのプロセス ディレクトリへのシンボリック リンク。 2 つのプロセスが /proc を参照する場合、それらは異なる接続です。これは主に、プログラムが独自のプロセス ディレクトリを取得する場合に便利です。
  • /proc/slabinfo システム内のスラブキャッシュの割り当て情報
  • /proc/stat システムのステータス情報
  • /proc/swaps システムが使用するスワップ領域情報
  • /proc/sysrq-trigger は sysRq キーを開始するために使用されます $>echo 1 > sysrq-trigger
  • /proc/uptime システムが起動してアイドル状態になっている時間の長さ。稼働時間の使用
  • /proc/version カーネルバージョン

(2)/procファイルを自分で実装する

ヘッダーファイル<linux/proc_fs.h>をインクルードする必要があり、関数は/fs/proc/generic.cで定義されています。

a. /procの下にファイルを作成する

/proc の下に新しいファイルを作成するには、create_proc_read_entry を呼び出します。

構造体proc_dir_entry *create_proc_read_entry(
    定数char *名前、
    mode_t モード、 
    構造体proc_dir_entry *ベース、
    read_proc_t *read_proc、 
    void * データ)

b. /proc以下のファイルをアンインストールする

proc ファイルをアンインストールするには、remove_proc_entry を使用します。

void プロシージャエントリを削除します(
    定数char *名前、 
    構造体 proc_dir_entry *親);

c. データを返す関数を定義する

プロセスが /proc ファイルを読み取ると、カーネルはメモリ ページ (つまり、PAGE_SIZE バイトのメモリ ブロック) を割り当て、ドライバーはこのメモリ ページを通じてユーザー空間に書き込まれるデータを返します。

typedef int (read_proc_t)(char *page, char **start, off_t off,
int カウント、int *eof、void *データ);

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

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

<<:  Vueでブラウザ共有機能を呼び出す方法

>>:  MySQL でスロークエリログを有効にする方法

推薦する

Linux でのマルチスレッドにおけるフォークの紹介

目次質問:ケース(1)子スレッドを作成する前にフォークするケース(2)子スレッドを作成した後にフォー...

Tomcat が非同期サーブレットを実装する方法の詳細な説明

序文これまでの Tomcat シリーズの記事を通じて、私のブログを読んでいる学生は Tomcat に...

MySQL スロークエリを通じて MySQL のパフォーマンスを最適化する方法

アクセス数が増えると、MySQL データベースへの負荷が増大します。MySQL アーキテクチャを使用...

ファイルアップロードスタイルの詳細を実装するjs

目次1. 概要2. オブジェクト作成のパラメータ3. 監視例4. 使用方法5. ソースコード1. 概...

MySQL UNION演算子の基本知識ポイント

MySQL UNION 演算子このチュートリアルでは、MySQL UNION 演算子の構文と例を紹介...

Docker-compose インストール db2 データベース操作

db2 データベースをホストマシンに直接インストールするのは面倒で、ユーザーや権限を巻き込むのも不便...

IEではボタンが両側に伸びる

ボタン (input, button) を記述すると、IE では次のようになります。単語数が増えると...

フォームを送信した後、別のファイルに移動する

<br />質問:特定のファイルにジャンプするには、HTML でどのように記述すればよい...

MySQLデータベースの追加、削除、変更操作の詳細な説明

データの挿入テーブル名(列名1、列名2、列名3)の値(値1、値2、値3)に挿入します。ユーザーに(u...

HTML でのアンカータグの使用例の共有

アンカータグの使用法:同じドキュメント内の特定の場所にリンクすることをアンカー リンクと呼びます。ア...

jsはテーブルの追加と削除の操作を動的に実装します

この記事の例では、jsでテーブルを動的に追加および削除するための具体的なコードを参考までに共有してい...

HTML におけるメタの役割について (インターネットから収集および分類)

W3Cschoolではこのように説明しています<meta> 要素は、検索エンジン向けの説...

MySQL データベース内の数十億のデータを素早くクリーンアップする方法

今日、ディスクアラーム例外を受け取りました。50G ディスクが爆発しました。分析と解決のプロセスは次...

jQuery キャンバスで画像検証コード例を描画する

この記事では、jQuery Canvasの描画画像検証コードの具体的なコードを例として紹介します。具...

MySQLインデックスの簡単な分析

データベース インデックスは、テーブル操作の速度を向上させることを目的としたデータ構造です。高速なラ...