cdevsw/bdevsw APIs enum devswtype { DEVBLK, DEVCHR }; void devsw_init(void); カーネル起動時に cdevsw/bdevsw 関係の初期化 void *devsw_get(int maj, enum devswtype type); デバイス番号からデバイススイッチを取得 void *devsw_lookup(XXX, enum devswtype type); XXX からデバイススイッチを取得。現状では cfdriver になるが、将来変更される可能性があるので、API 的には中身を意識しなくても済むようにする。 dev_t devsw_chr2blk_dev(dev_t chrdev); dev_t devsw_blk2chr_dev(dev_t blkdev); キャラクタ、ブロックの dev_t 相互変換 int devsw_attach(void *devsw, int *maj, enum devswtype type); デバイススイッチの追加 void devsw_detach(void *devsw, enum devswtype type); デバイススイッチの削除