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 でスロークエリログを有効にする方法

推薦する

JavaScript における一般的な配列操作

目次1. 連結() 2. 結合() 3. プッシュ() 5. シフト() 6. シフト解除() 7....

IE8 と Chrome でテーブルの幅を修正する方法

IE8 や Chrome で上記の設定を使用すると、画面の最大幅に合わせて表示が統一され、各列の幅は...

JavaScript 組み込みの日付と時刻の書式設定のサンプル コード

1. 基礎知識(日付オブジェクトのメソッド) 😜 getFullYear() は年を表す4桁の数字を...

IE6 の select を div でカバーできないバグの解決方法

div を使用してマスクを作成したり、ポップアップ ウィンドウをシミュレートしたりします。ただし、I...

MySQL 条件付きクエリと使用法および優先順位の例の分析

この記事では、例を使用して、MySQL 条件クエリ and or の使用方法と優先順位を説明します。...

docker を使用して Spring Boot をデプロイし、Skywalking に接続する方法

目次1. 概要1. スカイウォーキング入門2. スカイウォーキング建築3. スカイウォーキングはどの...

Dockerfile 内の予約語命令の解析処理

目次1. Dockerfile とは何ですか? 2. Dockerfile構築プロセスの分析3. D...

C++ TpeScriptシリーズのジェネリックについて

目次1. テンプレート2. ジェネリック3. ジェネリック再帰4. デフォルトのジェネリックパラメー...

JSにおけるデータ型の正しい判定方法の例

目次序文typeof は型を正しく判別できますか? instanceof は型を正しく判別できますか...

MySQL の隠し列の詳細表示

目次1. 主キーが存在する2. 主キーはないが、一意のインデックスが存在する3. 共同主キーまたは共...

Bootstrap FileInputは画像アップロード機能を実装します

この記事の例では、Bootstrap FileInputの具体的なコードを共有して、画像アップロード...

JavaScript フロー制御 (ループ)

目次1. forループ2. 二重の for ループ3. whileループ4. dowhileループ5...

js 配列から重複を削除する 11 の方法

実際の業務や面接では、「配列の重複排除」の問題によく遭遇します。以下は、js を使用して実装された配...

CSS XTHML の記述標準とよくある問題の概要 (ページ最適化)

プロジェクトドキュメントディレクトリDiv+CSS 命名規則 - 4 - Div+css 命名規則 ...

JavaScriptのクローン作成についての簡単な説明

目次1. 浅いクローニング2. ディープクローニング1. 浅いクローニング浅いクローンでは配列やオブ...