パッチ方面に現実トウヒ
struct dev なソレにアクセスできる場合、dev_* 使ってね、とのこと。
とりあえず vme なドライバ方面の対応を、って考えてるのですが、struct device 型を属性としてもってる構造体の配列がグローバルに定義されてたりして。
struct image_desc { void *kern_buf; /* Buffer address in kernel space */ dma_addr_t pci_buf; /* Buffer address in PCI address space */ unsigned long long size_buf; /* Buffer size */ struct mutex mutex; /* Mutex for locking image */ struct device *device; /* Sysfs device */ struct vme_resource *resource; /* VME resource */ int users; /* Number of current users */ }; static struct image_desc image[VME_DEVS];
これ、添字は minor 番号らしいです。
例えば以下の場合は添字が取得できているので
static int vme_user_open(struct inode *inode, struct file *file) { int err; unsigned int minor = MINOR(inode->i_rdev); mutex_lock(&image[minor].mutex); /* Allow device to be opened if a resource is needed and allocated. */ if (minor < CONTROL_MINOR && image[minor].resource == NULL) { printk(KERN_ERR "No resources allocated for device\n");
printk は以下なカンジで置き換えよ、ということになるのかな。
dev_err(image[minor].device, "No resources allocated for device\n");
基本的に minor 番号が引数とかで取得可能な場合は dev_* で置きかえなさい、ということになるんかな。と思ったら struct vme_dev という型が出てくる時も同様の対応が必要なのかな。
struct vme_dev { int num; struct vme_bridge *bridge; struct device dev; struct list_head drv_list; struct list_head bridge_list; };
うう、でも属性に値が入ってるかどうかはアレだな。これ、初期化な手続きの引数として渡されてます。