申請裝置號時兩個函式使用上的差異

2021-08-31 18:22:23 字數 976 閱讀 1761

一、linux上向系統申請裝置號的時候分為兩種情況

在已知裝置號的情況使用如下函式

函式原型如下:

int register_chrdev_region(dev_t from, unsigned count, const char *name);
from:裝置號

count:是你請求的連續裝置數量.

name:裝置的名字

,他會出現在sysfs中

缺點:裝置號有可能會衝突

2. 在裝置號未知的情況下使用如下函式:

函式原型如下:

int alloc_chrdev_region(dev_t *from, unsigned baseminor, unsigned count, const char *name);
from:裝置號

baseminor:次裝置號

count:是你請求的連續裝置數量.

name:裝置的名字

,他會出現在sysfs中

使用該函式會向系統動態申請未被占用的裝置號。函式呼叫成功之後,會把得到的裝置號放入第乙個引數from中。

優點:它會自動避開裝置號重複的衝突。

二、裝置號的釋放

釋放裝置號統一使用下面函式:

void unregister_chrdev_region(dev_t from, unsigned count);
from:裝置號

count:是你請求的連續裝置數量.

示例:

int ret;

static int globalmem_major = 250;

dev_t devno = mkdev(globalmem_major, 0);

/*該函式會根據主裝置號和次裝置號生成總裝置號*/

if (globalmem_major) else

函式的輸入變數為兩個指標時要注意兩個指標是否相等

下面時交換兩個數的函式 void swap int a,int b 當傳入的a和b的位址不是同乙個位址的情況下,函式正常工作 int a 1 int b 2 swap a,b 得到a 2,b 1當傳入的a和b的位址是同乙個位址的情況下,函式不正常工作 int a 1 swap a,a 得到a 0為什...

MySql計算兩個日期的時間差函式

第一種 timestampdiff函式,需要傳入三個引數,第乙個是比較的型別,可以比較frac second second minute hour day week month quarter或 year幾種型別,第二個和第三個引數是待比較的兩個時間,比較是後乙個時間減前乙個時間,具體用法如下 se...

MySql計算兩個日期的時間差函式

mysql計算兩個日期時間的差函式 第一種 timestampdiff函式,需要傳入三個引數,第乙個是比較的型別,可以比較frac second second minute hour day week month quarter或 year幾種型別,第二個和第三個引數是待比較的兩個時間,比較是後乙個...