1,194
社区成员
发帖
与我相关
我的任务
分享
int main()
{
struct cfg_load ext_load; /* to load kernel extension */
struct cfg_dd ddcfg; /* to invoke driver config() */
char c, str[80];
int rc;
int major, minor = 0;
dev_t devno;
if((rc = odm_initialize()) == -1)
{
printf("odm_initialize error\n");
exit(1);
}
printf("\n Enter choice, (l)oad, (u)nload \n");
while((c = getchar()) < 'a' && c > 'z');
switch(c) {
case 'l':
ext_load.path = "sample_driver";
ext_load.libpath = NULL;
ext_load.kmid = 0;
if(sysconfig(SYS_KLOAD,
&ext_load, sizeof(struct cfg_load))) {
printf("Error in loading extension\n");
exit (1);
}
else
printf("Extension Successfully loaded, kmid is %d\n", ext_load.kmid);
major = genmajor("sample_driver");
printf("Major number: %d\n", major);
devno = makedev64(major, minor);
ddcfg.kmid = ext_load.kmid;
ddcfg.devno = devno;
ddcfg.cmd = CFG_INIT;
ddcfg.ddsptr = NULL;
ddcfg.ddslen = 0;
if (rc = sysconfig(SYS_CFGDD,
&ddcfg, sizeof(ddcfg))) {
printf("Error in configuring device %d %d\n", rc, errno);
exit (1);
}
major = genmajor("sample_driver");
printf("Major number: %d\n", major);
这地方返回-1。# ./config_mgr sample_driver
Enter choice, (l)oad, (u)nload
l
Extension Successfully loaded, kmid is 1354129408
Major number: -1
Error in configuring device -1 1073741823