首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux Oops (arm) help!解决思路

2012-02-11 
linux Oops (arm) help!!!Unable to handle kernel NULL pointer dereference at virtual address 0000003

linux Oops (arm) help!!!
Unable to handle kernel NULL pointer dereference at virtual address 00000034  
pgd = c3aec000  
[00000034] *pgd=33ad7031, *pte=00000000, *ppte=00000000  
Internal error: Oops: 17 [#1]  
last sysfs file: /sys/devices/virtual/vc/vcsa5/dev  
Modules linked in: virtual_bus1(+)  
CPU: 0 Not tainted (2.6.32.2-FriendlyARM #1)  
PC is at bus_add_device+0xbc/0x174  
LR is at bus_add_device+0x18/0x174  
pc : [<c018067c>] lr : [<c01805d8>] psr: 60000013  
sp : c3b0de90 ip : c3b0de90 fp : c3b0deb4  
r10: 00000000 r9 : c3b0c000 r8 : c04ab958  
r7 : 00000000 r6 : bf000188 r5 : bf000220 r4 : bf000180  
r3 : 00000000 r2 : c3b0de58 r1 : 00000000 r0 : bf000220  
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user  
Control: c000717f Table: 33aec000 DAC: 00000015  
Process insmod (pid: 718, stack limit = 0xc3b0c270)  
Stack: (0xc3b0de90 to 0xc3b0e000)  
de80: bf000180 bf000188 00000000 00000000  
dea0: c04ab958 c3b0c000 c3b0defc c3b0deb8 c017ef40 c01805d0 00000000 00000000  
dec0: c3b0dee4 c3b0ded0 c014647c c014745c bf000180 bf000180 c3b0c000 00000000  
dee0: bf003000 c0030088 c3b0c000 00000000 c3b0df14 c3b0df00 c017f05c c017eb94  
df00: c04812a0 c3b0c000 c3b0df2c c3b0df18 bf003014 c017f050 c04812a0 c3b0c000  
df20: c3b0df7c c3b0df30 c002f32c bf003010 bf00014c 00000002 00000000 00000000  
df40: 00000000 000b8038 bf000258 00000000 00000edc 000b8038 bf000258 00000000  
df60: 00000edc c0030088 c3b0c000 00000000 c3b0dfa4 c3b0df80 c006e394 c002f300  
df80: c3b0dfa4 c3b0df90 00000005 00000069 bee66e74 00000080 00000000 c3b0dfa8  
dfa0: c002fee0 c006e2d8 00000005 00000069 000b8038 00000edc 000a3cd0 00000000  
dfc0: 00000005 00000069 bee66e74 00000080 bee66e78 000a3cd0 bee66e78 00000000  
dfe0: 00000001 bee66b24 0001852c 401c8984 60000010 000b8038 00000000 00000000  
Backtrace:  
[<c01805c0>] (bus_add_device+0x0/0x174) from [<c017ef40>] (device_add+0x3bc/0x4bc)  
 r9:c3b0c000 r8:c04ab958 r7:00000000 r6:00000000 r5:bf000188  
r4:bf000180  
[<c017eb84>] (device_add+0x0/0x4bc) from [<c017f05c>] (device_register+0x1c/0x20)  
[<c017f040>] (device_register+0x0/0x20) from [<bf003014>] (virtual_bus_init+0x14/0x30 [v)
 r5:c3b0c000 r4:c04812a0  
[<bf003000>] (virtual_bus_init+0x0/0x30 [virtual_bus1]) from [<c002f32c>] (do_one_initca)
 r5:c3b0c000 r4:c04812a0  
[<c002f2f0>] (do_one_initcall+0x0/0x1dc) from [<c006e394>] (sys_init_module+0xcc/0x1fc)  


[<c006e2c8>] (sys_init_module+0x0/0x1fc) from [<c002fee0>] (ret_fast_syscall+0x0/0x28)  
 r7:00000080 r6:bee66e74 r5:00000069 r4:00000005  
Code: e1a00008 e89dabf0 e5953030 e2846008 (e5930034)  
---[ end trace 305c0d319c2b81f9 ]---  

This is my codes:
#include<linux/init.h>
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/fs.h>
#include<linux/device.h>


static int virtual_bus_mach(struct device *device,struct device_driver *driver)
{
  printk(KERN_INFO"virtual bus is maching the device and driver\n");
  return !strncmp(device->init_name,driver->name,strlen(driver->name));/*in the kernel 2.6.32 */
}

static int virtual_bus_release(struct device *device)

  printk(KERN_INFO"virtual bus is gone...\n");
  return 0;
}

struct bus_type virtual_bus_type={
.name="virtual_bus",
.match=virtual_bus_mach,
};
EXPORT_SYMBOL(virtual_bus_type);
struct device virtual_bus={
.parent=NULL,
.init_name="virtual_bus", /*in the kernel 2.6.32 */
.bus=&virtual_bus_type,
.release=virtual_bus_release,
};
EXPORT_SYMBOL(virtual_bus);
static int __init virtual_bus_init()
{
  int reg;
  reg=device_register(&virtual_bus);
  if(reg)
  {
  printk(KERN_INFO"can not register the virtual_bus");
  return reg;
  }
  return 0;  
}
static void __exit virtual_bus_exit()
{
  device_unregister(&virtual_bus);
  printk(KERN_INFO"virtual bus is gone..\n");
}
module_init(virtual_bus_init);
module_exit(virtual_bus_exit);

MODULE_AUTHOR("Z_XLONG");
MODULE_LICENSE("GPL");

*********************************************
please help me,,when i am insmoding the module,kernel print Oops.But ,I can not understand the meaning !!!!

[解决办法]

探讨
Bus is a special kind device. I think using this method is right.

热点排行