所以我想在模塊初始化時動態地分配一個緩衝區。緩衝區必須始終處於範圍內,因爲它存儲用戶空間程序與之交互的數據。因此,這裏是我的代碼:kmalloc:只分配4個字節
static char* file_data
#define MAX_SIZE 256
.
.
.
{
file_data = kzalloc(MAX_SIZE, GFP_KERNEL)
.
.
.
}
然而,當我做sizeof file_data
它總是返回4.我在做什麼錯?
編輯:緩衝區存儲來自用戶空間程序的輸入,但4個字符都是可以存儲的。
size_t read_file(char* __user buf, size_t count)
{
unsigned int len = 0;
len = copy_to_user(buf, file_data, count);
return count;
}
ssize_t write_file(char* __user buf, size_t count)
{
if(count >= MAX_SIZE)
return -EINVAL;
copy_from_user(file_data, buf,count)
return count;
}
我想我正在學習什麼「動態分配」。我的假設是編譯器可以告訴我尺寸信息。我錯了。謝謝你們的答案! :) – Nathan