udevの組み込みに関するドキュメントはありますか?

udevの組み込みに関するドキュメントはありますか?

udevのマニュアルページには、特定のルールオプションを使用してudevプログラム自体に組み込まれている「組み込み」コマンドを呼び出すことができることがいくつかあります。しかし、udevの組み込み関数の機能と使用方法を明確に説明する参照文書が見つかりませんでした。

成功せずにオンラインで検索しました。これらの組み込みコマンドに関する詳細情報を提供する参考資料があるかどうかを知っている人はいますか?

答え1

実行すると、udevadm test-builtin --help各コマンドの簡単な説明とともに組み込みコマンドが一覧表示されます。

udevadm test-builtin --help
udevadm test-builtin [オプション] コマンド DEVPATH

組み込みコマンドをテストします。

  -h --help このメッセージを印刷
  -V --version プログラムのバージョンを印刷します。

注文する:
  blkidファイルシステムとパーティションの検出
  btrfs btrfs ボリューム管理
  hwdbハードウェアデータベース
  input_id 入力デバイス属性
  キーボードキーボードスキャンコードとキーマッピング
  kmodカーネルモジュールローダ
  net_id ネットワークデバイス属性
  net_setup_link ネットワークリンクの設定
  path_id は永続デバイスパスを形成します。
  usb_id USB デバイスのプロパティ
  uaccess 管理装置ノード・ユーザー ACL

残念ながら、ご存知のように、組み込み機能の使用はマニュアルで簡単に説明されています。
実際の例は、システムで利用可能なファイル(以下)にあります。これには次の内容が含まれています。50-udev-default.rules/lib/udev/rules.d/

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb"
SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id"
ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}"

答え2

残念ながら、この情報はマニュアルページにありますが、読み方を知っていても(以下を参照)、この情報を見つけるのが難しくなります。

しかし、オープンソースの利点は、ソースコードを読み取ることができることです。見たらudev-builtin.csystemd/source ファイルはリポジトリ内にudevあり、デフォルトC言語の知識、次のコードスニペットを見つけることができます。既存のすべての組み込みタイプをマッピングする構造。

static const struct udev_builtin *builtins[_UDEV_BUILTIN_MAX] = {
#if HAVE_BLKID
        [UDEV_BUILTIN_BLKID] = &udev_builtin_blkid,
#endif
        [UDEV_BUILTIN_BTRFS] = &udev_builtin_btrfs,
        [UDEV_BUILTIN_HWDB] = &udev_builtin_hwdb,
        [UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id,
        [UDEV_BUILTIN_KEYBOARD] = &udev_builtin_keyboard,
#if HAVE_KMOD
        [UDEV_BUILTIN_KMOD] = &udev_builtin_kmod,
#endif
        [UDEV_BUILTIN_NET_ID] = &udev_builtin_net_id,
        [UDEV_BUILTIN_NET_LINK] = &udev_builtin_net_setup_link,
        [UDEV_BUILTIN_PATH_ID] = &udev_builtin_path_id,
        [UDEV_BUILTIN_USB_ID] = &udev_builtin_usb_id,
#if HAVE_ACL
        [UDEV_BUILTIN_UACCESS] = &udev_builtin_uaccess,
#endif
};

これにはstructすべての組み込みタイプが含まれており、そのタイプに基づいてソースファイルをマップします。例:

関連:

答え3

わかりません。より良いものが見つからない場合は、ソースコードで直接使用できる組み込み機能を調べてみてください。 「udev-builtin」で始まるファイルを探します。

https://github.com/systemd/systemd/tree/master/src/udev

関連情報