1. 程式人生 > >Linux核心空間和使用者空間傳遞資料

Linux核心空間和使用者空間傳遞資料

1.access_ok()
函式原型:int access_ok(int type,unsigned long addr,unsigned long size)
函式access_ok()用於檢查指定地址是否可以訪問。引數type為訪問方式,可以為VERIFY_READ(可讀),VERIFY_WRITE(可寫)。addr為要操作的地址,size為要操作的空間大小(以位元組計算)。函式返回1,表示可以訪問,0表示不可以訪問。

2.copy_to_user()和copy_from_user()
函式原型:unsigned long copy_to_user(void *to,const void *from,unsigned long len)
                  unsigned long copy_from_user(void *to,const void *from,unsigned long len)
這兩個函式用於核心空間與使用者空間的資料交換。copy_to_user()用於把資料從核心空間拷貝至使用者空間,copy_from_user()用於把資料從使用者空間拷貝至核心空間。第一個引數to為目標地址,第二個引數from為源地址,第三個引數len為要拷貝的資料個數,以位元組計算。這兩個函式在內部呼叫access_ok()進行地址檢查。返回值為未能拷貝的位元組數。