copy to user()函式分析

2021-06-07 15:19:07 字數 542 閱讀 8030

copy_to_user

()函式分析

在學習字元裝置驅動時,遇到乙個函式copy_to_user(),這個函式是在編寫驅動程式**的過程中經常遇到的乙個函式,它的功能是拷貝乙個資料塊從核心空間到使用者空間。

因為核心空間和使用者空間的記憶體不能直接相互訪問,才會出現這麼乙個函式。

它的實現如下:

static inline unsigned long __must_checkcopy_to_user(void __user *to, const void *from, unsigned long n)

if(access_ok(verify_write, to, n))

n= __copy_to_user(to, from, n);

returnn;

與常見的拷貝函式的思路一樣,上來先檢查引數的合法性,__copy_to_user這個函式才是真正的拷貝函式。通過這個函式可以知道,其實核心也沒什麼高明之處,實現的大體思路都是一樣的,只是細節方面人家做的更加到位。

**的好壞往往體現在細節。

OSTaskCreate()函式分析

int8u ostaskcreate void task void pd void p arg,os stk ptos,int8u prio 函式返回乙個8位的整型數,呼叫該函式需要四個引數。第乙個引數乙個指標,也就是使用者 的首位址,在平時使用中我們把自己建立的任務的名字作為這個引數就可以了 第三...

getopt函式分析

函式getopt主要用於拆分命令列引數,用這個函式就不自己寫命令列引數解析程式了,以下 摘自tcpdump原始碼,對這個函式比較感興趣,故對此進行分析注釋,因水平實在不敢恭維,不足之處希望能一起 函式getopt 有三個引數,nargc,nargv就是命令列傳過來的argc和argv字串ostr,它...

uCOS OSTaskCreate()函式分析

int8u ostaskcreate void task void pd void p arg,os stk ptos,int8u prio 函式返回乙個8位的整型數,呼叫該函式需要四個引數。第乙個引數乙個指標,也就是使用者 的首位址,在平時使用中我們把自己建立的任務的名字作為這個引數就可以了 第三...