核心讀寫檔案

2021-07-01 22:36:22 字數 764 閱讀 3625

最近在安卓下實現乙個new feature的時候,需要在驅動中讀取sysfs中的乙個檔案的資料,經過計算後儲存到另乙個檔案中。

在kernel中讀寫檔案和在userspace下讀取檔案需要呼叫不同的inte***ce。

全域性變數:

#define file_path "/data/***x.cfg"

#define buf_size 128

char global_buf[buf_size];

struct file *fp;

讀函式:

static

int get_data_from_sysfs(const

char *path, char *buf)

fp->f_pos = 0;

fs = get_fs();

set_fs(kernel_ds);

fp->f_op->read(fp, buf, buf_size, &(fp->f_pos));

set_fs(fs);

filp_close(fp, null);

return

0;}

寫函式

static int update_data_to_sysfs(void)

函式原型中,fp->f_op->write和fp->f_op->read的第二個引數都是userspace下的資料,所以需要經過轉換成核心態可用的,呼叫完成後在轉換回使用者態。

核心中讀寫檔案

在使用者態,可以使用open,close,read,write等系統呼叫來訪問檔案。那麼核心中呢?使用filp open等函式進行操作,但是這些操作又有些需要注意的地方。在實際應用中,我們可以把系統執行的一些狀態記錄到記憶體中,但記憶體畢竟小,而且在系統重啟後,資料會丟失。那麼是否可以在核心中開啟乙...

linux核心讀寫檔案

在vfs的支援下,使用者態程序讀寫任何型別的檔案系統都可以使用read和write著兩個系統呼叫,但是在linux核心中沒有這樣的系統呼叫我們如何操作檔案呢?我們知道read和write在進入核心態之後,實際執行的是sys read 和sys write,但是檢視核心源 發現這些操作檔案的函式都沒有...

在linux核心中讀寫檔案

1.序曲 在使用者態,讀寫檔案可以通過read和write這兩個系統呼叫來完成 c庫函式實際上是對系統呼叫的封裝 但是,在核心態沒有這樣的系統呼叫,我們又該如何讀寫檔案呢?閱讀linux核心原始碼,可以知道陷入核心執行的是實際執行的是sys read和sys write這兩個函式,但是這兩個函式沒有...