2011-12-08 5 views
5

libudevを使用して特定のデバイスを監視したいと考えています。具体的には、リムーバブルストレージ(USBハードドライブ、USBキー、SDカードなど)を監視したいと思います。libudev APIを使用すると、そのデバイスの親の「サブシステム」と「devtype」を知っているデバイスを見つけることができます。私は自分のコンピュータでデバイスを試してみましたが、udevadmを使ってすべてのストレージタイプに 'block' - > 'scsi'のデバイスサブシステムがあることがわかりましたが、devtypeにはこれらのデバイスがありません。どこかのリファレンスとして使うことができるdevtypeとサブシステムのリスト、またはdevtypeを調べるためのより良い方法がありますか?udevでデバイスを特定する方法

+0

あなたはdevtypesおよびサブシステムのためのグローバル参照を見つけましたか? –

答えて

5

サブシステムの一覧はls /sys/class/ で取得できますが、デバイスの種類についてはわかりません。私はあなたがこれを得ることができると思います:

ls -l /sys/class/scsi_disk/ 
total 0 
lrwxrwxrwx 1 root root 0 2011-12-07 21:20 0:0:0:0 -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0 
cat /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device/vendor 
ATA  
cat /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device/model 
ST9500325AS 

デバイスディレクトリ内の他のファイルを試すことができます。

実際に私はあなたが必要だと思う:

cat /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device/type 
0 

cat /usr/include/scsi/scsi.h | grep TYPE_ 
#define TYPE_DISK   0x00 
#define TYPE_TAPE   0x01 
#define TYPE_PROCESSOR  0x03 /* HP scanners use this */ 
#define TYPE_WORM   0x04 /* Treated as ROM by our system */ 
#define TYPE_ROM   0x05 
#define TYPE_SCANNER  0x06 
#define TYPE_MOD   0x07 /* Magneto-optical disk - 
#define TYPE_MEDIUM_CHANGER 0x08 
#define TYPE_ENCLOSURE 0x0d /* Enclosure Services Device */ 
#define TYPE_NO_LUN   0x7f 
+0

グローバルリファレンスはありませんか?あなたが与えた情報は本当に役に立ちますが、scsiのためだけです。私のカードリーダーはタイプブロック - > mmc ...などです。私はこのリンクを見つけましたが、より普遍的なものがあることを望んでいました:http://wiki.xfce.org/dev/thunar-volman-udev – Prismatic

+0

一貫した命名がないことを知っている。すべてのサブシステムは異なる方法で処理されます。しかし、あなたが見たいかもしれない/ lib/udev /にいくつかのヘルパープログラムがあります。 –

関連する問題