久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 學習筆記 > 嵌入式學(xue)習筆記(ji):創建設備文件詳(xiang)解

嵌入(ru)式學習筆記:創建設備文(wen)件(jian)詳(xiang)解(jie) 時間(jian):2018-09-27      ;來(lai)源(yuan):未知

1 自動創(chuang)建設(she)備文件創(chuang)建設(she)備文件類

#define class_create(owner, name)

設備可(ke)以有多個子設備,class_create這(zhe)個宏相當于創(chuang)建一

個(ge)子(zi)(zi)設(she)備(bei)的一個(ge)父(fu)類(lei),通(tong)過(guo)它來創建多個(ge)子(zi)(zi)設(she)備(bei) owner :模塊本身(shen) THIS_MODULE name : name

返回值 : struct class 類型指針, 出錯:NULL,成功:有(you)效的struct class指針

創建設備文(wen)件

struct device *device_create(struct class *class, struct device *parent,

dev_t devt, void *drvdata, const char

*fmt, ...)

class :通過 class_create 創建的設(she)備文件類指針 parent :父設(she)備,一般(ban)NULL

devt :設(she)備(bei)(bei)號,包(bao)含主設(she)備(bei)(bei)號和次設(she)備(bei)(bei)號 drvdata :私有數據

fmt :設備文件名

 返回值:Returns &struct device pointer on success, or ERR_PTR() on error.

失敗時(shi)需要用 ERR_PTR 函數判斷

銷毀(hui)設備文件(jian)

 void device_destroy(struct class *class, dev_t devt)

class :設備(bei)文(wen)件類指(zhi)針

devt :設備號,包含主設備號和次(ci)設備號

銷(xiao)毀設備文件類(lei)

extern void class_destroy(struct class *cls); cls :設備文件類指針(zhen)

設備類查看

ls /sys/class/xxxxx

ls /dev/xxx

2 區分設(she)備(bei)文件 struct inode {

......

dev_ti_rdev; inode結構體保存的設備號

......

void

*i_private; inode 的(de)私(si)有(you)數據(ju)

}

ptintk("open device num majour : %d , min min : %d\r\n", MAJOR(pNode->i_rdev), MINOR(pNode->i_rdev)

dmesg | tail -20

3 ioctl

命令碼構建,內核使(shi)用32位表達了(le)4種信息 dir:讀寫,size:

ioctl第三個參數時類型所占(zhan)的字節數

,type(可以做(zuo)命(ming)令(ling)的(de)一個分段(duan),類似于使用枚舉(ju)的(de)錯誤碼分段(duan)), nr:命(ming)令(ling)碼

*0xE0000000DIR

*0x80000000DIR = WRITE

*0x40000000DIR = READ

*0x20000000DIR = NONE

* 0x3FFF0000 SIZE (overlaps NONE bit)

* 0x0000FF00 TYPE

* 0x000000FF NR (CMD)

4 互斥鎖

# define mutex_init(mutex)

mutex :要初始化的鎖,注意傳的是 struct mutex 類型指

mutex_lock

mutex_unlock

5 信號量

static inline void sema_init(struct semaphore *sem, int val) sem :信(xin)號量結(jie)構體(ti)指針

val :信號(hao)量持(chi)有資源個數

down 申請資源(yuan)(yuan),當沒有資源(yuan)(yuan)時,休眠(mian)等待(dai),不(bu)可中斷 extern void down(struct semaphore *sem)

down_interruptible 申請資源(yuan),當(dang)沒有資源(yuan)時,休眠等待,可中

extern int __must_check down_interruptible(struct semaphore *sem)

up 釋放資源

extern void up(struct semaphore *sem)

6 原子(zi)變量(liang)

ATOMIC_INIT(0) 初始化

atomic_dec_and_test 減(jian)1并測試,為0返(fan)回true,否(fou)則(ze)返(fan)回

false

atomic_inc 加1

7 自旋鎖

spin_lock_init(&g_SpinLock); 初始化(hua) spin_lock(&g_SpinLock); 加鎖 spin_unlock(&g_SpinLock); 解鎖

上一篇:嵌入式學習筆記:什么叫驅動模塊,這里告訴你

下一篇:嵌入式學習筆記:gcc和gdb學習總結

熱點文(wen)章推(tui)薦(jian)
華清(qing)學員就業榜單
高薪(xin)學員(yuan)經驗分(fen)享
熱點新(xin)聞(wen)推薦
前臺專(zhuan)線(xian):010-82525158 企業培訓(xun)洽談專(zhuan)線:010-82525379 院校合作洽談(tan)專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部