发新话题
打印

【求助】driver_register后,怎样从用户程序中使用驱动程序?

【求助】driver_register后,怎样从用户程序中使用驱动程序?

各位大侠,最近我在研究一个驱动程序,就是IBM 的RDAC 它如下:
static int __init mppLnx_vhba_init(void)
{
   int error;
error = device_register(&mppLnx_primary_device);
   if(error)
   {
      goto cleanup_primary;
   }

error = bus_register(&mppLnx_mppv_bus);
   if(error)
   {
      goto cleanup_bus;
   }

error = driver_register(&mppLnx_mppvbus_driver);
   if(error)
   {
      goto cleanup_driver;
   }

   error = device_register(&mppLnx_mppvadapter0);
   if(error)
   {
      goto cleanup_adapter;
   }
}
注册了几个设备和驱动程序,他们的结构为:
#define MPPLNX_MPP_PRIMARY_DEVICE_NAME "mppvirtual"

static struct device mppLnx_primary_device = {
   .bus_id = MPPLNX_MPP_PRIMARY_DEVICE_NAME,
   .release = mppLnx_primary_device_release,
};
/*
* the virtual mpp bus
*/
#define MPPLNX_MPP_VBUS_NAME  "mppvbus"

static struct bus_type mppLnx_mppv_bus = {
   .name = MPPLNX_MPP_VBUS_NAME,
   .match = mppLnx_mppvbus_match,
};
/*
*the virtual bus driver
*/
#define MPPLNX_MPP_VBUS_DRIVER_NAME "mppvdb"

static struct device_driver mppLnx_mppvbus_driver = {
   .name = MPPLNX_MPP_VBUS_DRIVER_NAME,
   .bus = &mppLnx_mppv_bus,
   .probe = mppLnx_mppvbus_driver_probe,
   .remove = mppLnx_mppvbus_driver_remove,
};

#define MPPLNX_VADAPTER_NAME  "mppadapter0"

static struct device mppLnx_mppvadapter0 = {
   .bus_id = MPPLNX_VADAPTER_NAME,
   .bus = &mppLnx_mppv_bus,
   .parent = &mppLnx_primary_device,
   .release = mppLnx_mppvadapter0_release,
};
请问:从用户角度,怎么使用这个整个驱动程序(与字符驱动程序里的open,close等不一样哈)。他们调用(或触发)哪个函数?      

TOP

这个……
驱动程序一般都会注册设备,直接open设备就好啦……      
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。

TOP

发新话题