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