色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > MISC(雜項)設備驅(qū)動

MISC(雜項)設備驅(qū)動 時間:2018-09-27      來源:未知

@misc是特殊的字符設備(讓一些特殊的字符設備驅(qū)動的編寫變得更簡單)

1) miscdevice結構體來描述一個misc設備

2) MISC_MAJOR == 10 (主設備號固定), 次設備號不同。

3) 雙向鏈表list_head 來管理設備

4) const char* name是/dev中設備文件的名稱

@misc子系統(tǒng)其他特點:

1) misc子系統(tǒng)能自動生成設備節(jié)點。

@實現(xiàn)misc子系統(tǒng)驅(qū)動主要流程:

1) 定義

@struct miscdevice misc;

2) 初始化(@結構體參考頭文件:include/linux/miscdevice.h)

misc.minor = MISC_DYNAMIC_MINOR; //255,讓系統(tǒng)動態(tài)分配次設備號

misc.name = "misc_name";

struct file_operations fops = {

.owner = THIS_MODULE,

};

misc.fops = &fops;

3) 注冊

misc_register

4) 注銷

misc_deregister

############

@雜項設備的次設備號的取值一般為255,讓系統(tǒng)自動分配,其他值可能不能使用,或者會出錯。

示例代碼如下:

###########

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
 
#include <linux/fs.h>l
#include <linux/miscdevice.h>

MODULE_LICENSE("GPL");

#define DebugPrint() printk("---DebugPrint--- %s:%s--%d\n",__FILE__,__func__,__LINE__)

int misc_open (struct inode * ip, struct file * fp)

{

DebugPrint();

return 0;

}

int misc_close (struct inode * ip, struct file * fp)

{

DebugPrint();

return 0;

}

ssize_t misc_read (struct file * fp, char __user * buf, size_t n, loff_t * f)

{

DebugPrint();

return 0;

}

ssize_t misc_write (struct file *fp, const char __user *buf, size_t n, loff_t * f)

{

DebugPrint();

return 0;

}

struct file_operations misc_demo_fops={

.owner = THIS_MODULE,

.open =misc_open,

.release= misc_close,

.read = misc_read,

.write= misc_write,

};

struct miscdevice misc_demo={

.minor = MISC_DYNAMIC_MINOR,

.name ="misc_demo",

.fops = &misc_demo_fops,

};

static int __init misc_demo_init(void)

{

int ret=0;

DebugPrint();

ret = misc_register(&misc_demo);

if(ret != 0)

{

DebugPrint();

printk("misc_register error\n");

return ret;

}

return 0;

}

static void __exit misc_demo_exit(void)

{

DebugPrint();

misc_deregister(&misc_demo);

return ;

}

module_init(misc_demo_init);

module_exit(misc_demo_exit);

##############

Makefile參考:

##############

ifneq ($(KERNELRELEASE),)

obj-m:=misc_demo.o

else

KERNELDIR =/lib/modules/$(uname -r)/build/

PWD = $(pwd)

modules:

make -C $(KERNELDIR) M=$(PWD) modules

clean:

make -C $(KERNELDIR) M=$(PWD) clean

endif

########

注意:樓主使用的開發(fā)環(huán)境是ubuntu14.2,編譯鏈是gcc4.6.4

上一篇:純CSS3實現(xiàn)3D正方形360度旋轉(zhuǎn)

下一篇:扁平化圖標長投影

熱點文章推薦
華清學員就業(yè)榜單
高薪學員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

主站蜘蛛池模板: 欧美熟妇与小伙性欧美交 | 在线精品免费视频无码的 | 国产偷抇久久精品a片蜜臀a | 久久丫精品国产亚洲AV不卡 | 日本三级无码中文字幕DVD | 亲子乱AV一区二区三区 | 爽到高潮漏水大喷视频 | 大桥久未无码吹潮在线观看 | 免费观看很黄很色裸乳视频网站 | aⅴ日本亚洲欧洲免费天堂 中文字幕乱码亚洲无线码 欧美最猛性xxxxx69 | 亚洲香蕉成人AV网站在线观看 | 香蕉精品亚洲二区在线观看 | 亚洲AV无码片在线播放仙踪林 | 亚洲综合欧美在线一区在线播放 | 国产欧美性成人精品午夜 | 日本一区精品久久久久影院 | 中文字幕无码免费不卡视频 | 美女高潮潮喷出白浆视频 | 一女被两男桶进去A片免费 日本欧美在线 | 无码av大香线蕉伊人久久 | 双乳奶水饱满少妇视频 | 国产精品一区在线免费观看 | 中文亚洲欧美 | 国产精品国产免费无码专区不卡 | 国产五码在线观看 | JAPANESE无码中文字幕 | 波多野结衣视频在线播放 | 在线观看成人免费视频不卡 | 中文字幕亚洲男人的天堂网络 | 国产精品看高国产精品不卡 | 中文字幕第50页 | 中文字幕无码日韩专区免费 | 亚洲国产成人av在线观看 | 未满十八18禁止免费无码网站 | 和小三爽到喷水h | 国产成人黄色网址 | 99久久国产综合精品SWAG | 蜜桃视频无码区在线观看 | 办公室强伦片免费看 | 亚洲 欧洲 无码 在线观看 | 久久久久香蕉国产线看观看伊 |