register_chrdev

register_chrdev可獲取一個或多個設備編號

基本介紹

  • 外文名:register_chrdev
  • 功能:獲取一個或多個設備編號
  • 性質:函式
  • 函式:你不能存取請求的區域
功能簡介,核心代碼,應用程式代碼,

功能簡介

使用register_chrdev註冊字元設備
int register_chrdev(unsignedintmajor,constchar*name,structfile_operations*fops);
其中參數major如果等於0,則表示採用系統動態分配的主設備號;不為0,則表示靜態註冊。
註銷字元設備可以使用unregister_chrdev函式。
int unregister_chrdev(unsignedintmajor,constchar*name);
在linux2.6版本裡面:
register_chrdev_region是register_chrdev的升級版本,
unregist_chrdev_region是unregister_chrdev的升級版本。
使用register_chrdev_region()比register_chrdev()多了一步,就是想核心註冊添加cdev設備的步驟。
另外在2.6核心中使用module_init()和module_exit()來作為模組的入口和出口,而老版本中使用init_module()和cleanup_module()來作為模組的入口和出口。

核心代碼

staticunsignedcharsimple_inc=0;
staticunsignedchardemoBuffer[256];
int simple_open(structinode*inode,structfile*filp)
{
if(simple_inc>0) return-ERESTARTSYS;
simple_inc++;
return0;
}
int simple_release(structinode*inode,structfile*filp)
{
simple_inc--;
return0;
}
ssize_t simple_read(structfile*filp,char__user*buf,size_tcount,loff_t*f_pos)
{
/*把數據複製到應用程式空間*/
if(copy_to_user(buf,demoBuffer,count))
{
count=-EFAULT;
}
returncount;
}
ssize_t simple_write(structfile*filp,constchar__user*buf,size_tcount,loff_t*f_pos)
{
/*把數據複製到核心空間*/

相關詞條

熱門詞條

聯絡我們