読者です 読者をやめる 読者になる 読者になる

libudevで使う propertyを取得する

linux udev

libudevに関するメモ. まだ libudevの使い方がよくわからないのですが、
基本的には該当のデバイスの情報を取ってきて、次にデバイスの属性リストを
取得して、該当する属性があるとか、属性の値が期待するものかを確認する
というのが基本になるようです。

ソースコード

http://freedesktop.org/wiki/Software/systemd/


libudevは systemdの一部です。src/以下にあります。

イベントを監視

udevadmコマンドの minitorサブコマンドを使います。
オプションはいくらかありますが、今回は propertyオプションが適切です。
(helpには出ないが --envオプションも同じ効果があるようです。)

% udevadm monitor --property 2>&1

SDカードを挿抜したときのイベント

ここにある情報と libudevの APIに与えればデバイスの状態等を
知ることができるようである。まだまだわからないことが多いので、
いろいろ試していきたい。

KERNEL[164343.755516] add      /devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007 (mmc)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007
MMC_NAME=SD02G
MMC_TYPE=SD
MODALIAS=mmc:block
SEQNUM=3098
SUBSYSTEM=mmc
UDEV_LOG=3

KERNEL[164343.755684] add      /devices/virtual/bdi/179:0 (bdi)
ACTION=add
DEVPATH=/devices/virtual/bdi/179:0
SEQNUM=3099
SUBSYSTEM=bdi
UDEV_LOG=3

UDEV  [164343.756520] add      /devices/virtual/bdi/179:0 (bdi)
ACTION=add
DEVPATH=/devices/virtual/bdi/179:0
SEQNUM=3099
SUBSYSTEM=bdi
UDEV_LOG=3
USEC_INITIALIZED=164343756355

UDEV  [164343.756580] add      /devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007 (mmc)
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007
MMC_NAME=SD02G
MMC_TYPE=SD
MODALIAS=mmc:block
SEQNUM=3098
SUBSYSTEM=mmc
UDEV_LOG=3
USEC_INITIALIZED=164343756412

KERNEL[164343.757796] add      /devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0 (block)
ACTION=add
DEVNAME=mmcblk0
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0
DEVTYPE=disk
MAJOR=179
MINOR=0
SEQNUM=3100
SUBSYSTEM=block
UDEV_LOG=3

KERNEL[164343.757865] add      /devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/)
ACTION=add
DEVNAME=mmcblk0p1
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0/mmcblk0p1
DEVTYPE=partition
MAJOR=179
MINOR=1
SEQNUM=3101
SUBSYSTEM=block
UDEV_LOG=3

UDEV  [164343.844974] add      /devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0 (block)
ACTION=add
DEVLINKS=/dev/disk/by-id/mmc-SD02G_0xe550139a /dev/disk/by-path/pci-0000:0d:00.0
DEVNAME=/dev/mmcblk0
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0
DEVTYPE=disk
ID_DRIVE_FLASH_SD=1
ID_DRIVE_MEDIA_FLASH_SD=1
ID_NAME=SD02G
ID_PART_TABLE_TYPE=dos
ID_PATH=pci-0000:0d:00.0
ID_PATH_TAG=pci-0000_0d_00_0
ID_SERIAL=0xe550139a
MAJOR=179
MINOR=0
SEQNUM=3100
SUBSYSTEM=block
UDEV_LOG=3
USEC_INITIALIZED=164343844585

UDEV  [164343.934476] add      /devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0/mmcblk0p1 (block)
ACTION=add
DEVLINKS=/dev/disk/by-id/mmc-SD02G_0xe550139a-part1 /dev/disk/by-label/NO\x20NAME /dev/disk/by-path/pci-0000:0d:00.0-part1
DEVNAME=/dev/mmcblk0p1
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0/mmcblk0p1
DEVTYPE=partition
ID_DRIVE_FLASH_SD=1
ID_DRIVE_MEDIA_FLASH_SD=1
ID_FS_LABEL=NO_NAME
ID_FS_LABEL_ENC=NO\x20NAME
ID_FS_SEC_TYPE=msdos
ID_FS_TYPE=vfat
ID_FS_USAGE=filesystem
ID_FS_VERSION=FAT16
ID_NAME=SD02G
ID_PART_ENTRY_DISK=179:0
ID_PART_ENTRY_FLAGS=0x80
ID_PART_ENTRY_NUMBER=1
ID_PART_ENTRY_OFFSET=247
ID_PART_ENTRY_SCHEME=dos
ID_PART_ENTRY_SIZE=3985161
ID_PART_ENTRY_TYPE=0x6
ID_PART_TABLE_TYPE=dos
ID_PATH=pci-0000:0d:00.0
ID_PATH_TAG=pci-0000_0d_00_0
ID_SERIAL=0xe550139a
MAJOR=179
MINOR=1
SEQNUM=3101
SUBSYSTEM=block
UDEV_LOG=3
USEC_INITIALIZED=164343934061

KERNEL[164354.968897] remove   /devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0/mmcblk0p1 (block)
ACTION=remove
DEVNAME=mmcblk0p1
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0/mmcblk0p1
DEVTYPE=partition
MAJOR=179
MINOR=1
SEQNUM=3102
SUBSYSTEM=block
UDEV_LOG=3

KERNEL[164354.969134] remove   /devices/virtual/bdi/179:0 (bdi)
ACTION=remove
DEVPATH=/devices/virtual/bdi/179:0
SEQNUM=3103
SUBSYSTEM=bdi
UDEV_LOG=3

UDEV  [164354.969497] remove   /devices/virtual/bdi/179:0 (bdi)
ACTION=remove
DEVPATH=/devices/virtual/bdi/179:0
SEQNUM=3103
SUBSYSTEM=bdi
UDEV_LOG=3
USEC_INITIALIZED=164354969123

KERNEL[164354.970461] remove   /devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0 (block)
ACTION=remove
DEVNAME=mmcblk0
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0
DEVTYPE=disk
MAJOR=179
MINOR=0
SEQNUM=3104
SUBSYSTEM=block
UDEV_LOG=3

UDEV  [164354.970586] remove   /devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0/mmcblk0p1 (block)
ACTION=remove
DEVLINKS=/dev/disk/by-id/mmc-SD02G_0xe550139a-part1 /dev/disk/by-label/NO\x20NAME /dev/disk/by-path/pci-0000:0d:00.0-part1
DEVNAME=/dev/mmcblk0p1
DEVPATH=/devices/pci0000:00/0000:00:1c.4/0000:0d:00.0/mmc_host/mmc0/mmc0:0007/block/mmcblk0/mmcblk0p1
DEVTYPE=partition
ID_DRIVE_FLASH_SD=1
ID_DRIVE_MEDIA_FLASH_SD=1
ID_FS_LABEL=NO_NAME
ID_FS_LABEL_ENC=NO\x20NAME
ID_FS_SEC_TYPE=msdos
ID_FS_TYPE=vfat
ID_FS_USAGE=filesystem
ID_FS_VERSION=FAT16
ID_NAME=SD02G
ID_PART_ENTRY_DISK=179:0
ID_PART_ENTRY_FLAGS=0x80
ID_PART_ENTRY_NUMBER=1
ID_PART_ENTRY_OFFSET=247
ID_PART_ENTRY_SCHEME=dos
ID_PART_ENTRY_SIZE=3985161
ID_PART_ENTRY_TYPE=0x6
ID_PART_TABLE_TYPE=dos
ID_PATH=pci-0000:0d:00.0