国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > 嵌入式學(xué)習(xí)筆記:創(chuàng)建設(shè)備文件詳解

嵌入式學(xué)習(xí)筆記:創(chuàng)建設(shè)備文件詳解 時(shí)間:2018-09-27      來源:未知

1 自動創(chuàng)建設(shè)備文件創(chuàng)建設(shè)備文件類

#define class_create(owner, name)

設(shè)備可以有多個(gè)子設(shè)備,class_create這個(gè)宏相當(dāng)于創(chuàng)建一

個(gè)子設(shè)備的一個(gè)父類,通過它來創(chuàng)建多個(gè)子設(shè)備 owner :模塊本身 THIS_MODULE name : name

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

創(chuàng)建設(shè)備文件

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

dev_t devt, void *drvdata, const char

*fmt, ...)

class :通過 class_create 創(chuàng)建的設(shè)備文件類指針 parent :父設(shè)備,一般NULL

devt :設(shè)備號,包含主設(shè)備號和次設(shè)備號 drvdata :私有數(shù)據(jù)

fmt :設(shè)備文件名

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

失敗時(shí)需要用 ERR_PTR 函數(shù)判斷

銷毀設(shè)備文件

void device_destroy(struct class *class, dev_t devt)

class :設(shè)備文件類指針

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

銷毀設(shè)備文件類

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

設(shè)備類查看

ls /sys/class/xxxxx

ls /dev/xxx

2 區(qū)分設(shè)備文件 struct inode {

......

dev_ti_rdev; inode結(jié)構(gòu)體保存的設(shè)備號

......

void

*i_private; inode 的私有數(shù)據(jù)

}

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

dmesg | tail -20

3 ioctl

命令碼構(gòu)建,內(nèi)核使用32位表達(dá)了4種信息 dir:讀寫,size:

ioctl第三個(gè)參數(shù)時(shí)類型所占的字節(jié)數(shù)

,type(可以做命令的一個(gè)分段,類似于使用枚舉的錯(cuò)誤碼分段), nr:命令碼

*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 :信號量結(jié)構(gòu)體指針

val :信號量持有資源個(gè)數(shù)

down 申請資源,當(dāng)沒有資源時(shí),休眠等待,不可中斷 extern void down(struct semaphore *sem)

down_interruptible 申請資源,當(dāng)沒有資源時(shí),休眠等待,可中

extern int __must_check down_interruptible(struct semaphore *sem)

up 釋放資源

extern void up(struct semaphore *sem)

6 原子變量

ATOMIC_INIT(0) 初始化

atomic_dec_and_test 減1并測試,為0返回true,否則返回

false

atomic_inc 加1

7 自旋鎖

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

上一篇:嵌入式學(xué)習(xí)筆記:什么叫驅(qū)動模塊,這里告訴你

下一篇:嵌入式學(xué)習(xí)筆記:gcc和gdb學(xué)習(xí)總結(jié)

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

回到頂部