[問題] 如何利用copy_to_user來完成kernel和user space的資料傳輸
我在 linux 的檔案系統 /dev/ 下新增一個節點(character device)
並且打算利用這個節點讓 user application 和 driver 進行資料的交換
假設 user application 利用 system call "read" 來讀取 driver 的資料
而我需要在 driver 之中, implement 相對應的 read function(假設它叫 dev_read)
function prototype 如下:
static ssize_t dev_read(struct file *filp, char *buff, size_t count, loff_t *f_pos)
假設我在 dev_read function 中有一個 structure 結構如下:
sturct A{
int flag;
char loop[10];
void *data;
}
其中 sturcture A 中的 data element,它是指標,並指向 struct B
sturct B{
int pollingmode;
void *event;
}
sturcture B 中的 event element,它也是指標,並指向 struct C
struct C{
char hook;
char ring_start;
char ring_end;
}
我的問題:假設我的資料存放在 hook、ring_start、ring_end、pollingmode 中,但我需要把整個 structure A
傳給 user application。由於 linux 的記憶體管理是有分 user space 和 kernel space 的,因此似乎需要利用
copy_to_user() 這個 API 來完成。但如何利用這個 API,讓這個層層 structure 的資料都能正確的被傳出去?:
:q
w
^X
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.222.86.34
推
09/29 13:02, , 1F
09/29 13:02, 1F
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章