我在linux-2.6.25的內核中編寫驅動實例,爲驅動自動創建設備節點時使用device_creat()
globalmem_class = class_create(THIS_MODULE, "globalmem_sys_class");
if (IS_ERR(globalmem_class))
return PTR_ERR(globalmem_class);
globalmem_class_dev = device_create(globalmem_class, NULL, MKDEV (globalmem_major,0),NULL, "globalmem_dev");
if (unlikely(IS_ERR(globalmem_class_dev)))
return PTR_ERR(globalmem_class_dev);
編譯的時候出現警告如下,當時就沒怎麼管,但是在insmod模塊時出現段錯誤沒辦法只好求助於谷歌大神,最後發現問題是linux在2.6的某個版本之後才使用device_creat這個函數,我這裏得使用class_device_creat纔行,具體哪個版本劃分的我就不太清楚了,反正2.6.25包括之前的肯定要使用帶class的函數咯,換了之後就ok啦,注意註銷的函數也是一樣,嘿嘿!!
後來找了下
在2.6.27中變爲:
device_create()
device_destroy()