关于LINUX内核2.6.28驱动编写

[复制链接]
3001|0
 楼主| fe_arm 发表于 2009-7-15 14:19 | 显示全部楼层 |阅读模式
<br />我写的驱动模块,&nbsp;用&nbsp;device_create来建立设备文件,但ls&nbsp;/dev找不到相对应的myalloc设备,请大家帮忙看一下<br /><br />int&nbsp;__init&nbsp;memory_init(void)<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;res;<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;devno&nbsp;=&nbsp;MKDEV(MEM_MAJOR,&nbsp;0);<br /><br /><br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mem_spvm&nbsp;=&nbsp;(char&nbsp;*)vmalloc(MEM_MALLOC_SIZE);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(mem_spvm&nbsp;==&nbsp;NULL)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printk(KERN_INFO&quot;vmalloc&nbsp;failed!
&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;else<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printk(KERN_INFO&quot;vmalloc&nbsp;successfully!&nbsp;addr=0x%x
&quot;,&nbsp;(unsigned&nbsp;int)mem_spvm);<br /><br /><br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mem_cdev&nbsp;=&nbsp;cdev_alloc();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(mem_cdev&nbsp;==&nbsp;NULL)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printk(KERN_INFO&quot;cdev_alloc&nbsp;failed!
&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;cdev_init(mem_cdev,&nbsp;&mem_fops);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mem_cdev-&gtowner&nbsp;=&nbsp;THIS_MODULE;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mem_cdev-&gtops&nbsp;=&nbsp;&mem_fops;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;=&nbsp;cdev_add(mem_cdev,&nbsp;devno,&nbsp;1);<br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(res)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cdev_del(mem_cdev);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mem_cdev&nbsp;=&nbsp;NULL;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printk(KERN_INFO&quot;cdev_add&nbsp;error
&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;else<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printk(KERN_INFO&quot;cdev_add&nbsp;ok
&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br /><br />/*&nbsp;creating&nbsp;your&nbsp;own&nbsp;class&nbsp;*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;my_class&nbsp;=&nbsp;class_create(THIS_MODULE,&nbsp;&quot;myalloc&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(IS_ERR(my_class))&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printk(&quot;Err:&nbsp;failed&nbsp;in&nbsp;creating&nbsp;class.
&quot;);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />/*&nbsp;register&nbsp;your&nbsp;own&nbsp;device&nbsp;in&nbsp;sysfs,&nbsp;and&nbsp;this&nbsp;will&nbsp;cause&nbsp;udevd&nbsp;to&nbsp;create&nbsp;corresponding&nbsp;device&nbsp;node&nbsp;*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;device_create(my_class,&nbsp;NULL,&nbsp;MKDEV(MEM_MAJOR,0),&nbsp;NULL,&nbsp;&quot;myalloc&quot;,&nbsp;0);<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br /><br />}<br /><br />&nbsp;<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

124

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部