日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux内核开发函数详解

發布時間:2025/4/14 linux 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux内核开发函数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MKDEV

功能 ? 將主、次設備號轉換成dev_t類型 主設備號 major 次設備號 minor


頭文件
定義在<linux/cdev.h>中的宏
MKDEV(int major,int minor)


宏定義
#define MKDEV(major,minor) (((major) << MINORBITS) | (minor))


參數
major為主設備號
minor為次設備號


返回值
成功執行返回dev_t類型的設備編號


注解:
1 Linux設備號


主設備號用來表示一個特定的驅動程序。次設備號用來表示使用該驅動程序的各
設備。例如一個嵌入式系統,有兩個LED指示燈,LED燈需要獨立的打開或者關閉。那么
,可以寫一個LED燈的字符設備驅動程序,可以將其主設備號注冊成5號設備,次設備號
分別為1和2。這里,次設備號就分別表示兩個LED燈。


主設備號相同的設 備是同類設備(使用同一個驅動程序)。
有些設備是對實際存在的物理硬件的抽象,有些設備則是內核自身提供的功能(不依賴于特定的物理硬件,又稱為"虛擬設備")。
每個設備在 /dev 目錄下都有一個對應的文件(節點)。
可以通過 cat /proc/devices 命令查看當前已經加載的設備驅動程序的主設備號。
內核能夠識別的所有設備都記錄在源碼樹下的 documentation/devices.txt 文件中。
在 /dev 目錄下除了字符設備和塊設備節點之外還通常還會存在:fifo管道、socket、軟/硬連接、目錄。這些東西沒有主/次設備號。


copy_to_user

作用:從內核區中讀取數據到用戶區
簡述:
#include <linux/uaccess.h>
unsigned long copy_to_user(void __user *to, const void *from, unsigned long n);
如果數據拷貝成功,則返回零;否則,返回沒有拷貝成功的數據字節數。
*to是用戶空間的指針,
*from是內核空間指針,
n表示從內核空間向用戶空間拷貝數據的字節數


注解:
1 __user宏
__user宏簡單告訴編譯器(通過 noderef)不應該解除這個指針的引用(因為在當前地址空間中它是沒有意義的)。?


(void __user *)arg 指的是arg值是一個用戶空間的地址,不能直接進行拷貝等,要使用例如copy_from_user,copy_to_user等函數。
默認是內核空間,因為這是驅動,是在內核空間運行的。

總結

以上是生活随笔為你收集整理的Linux内核开发函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。