所以我想在模块初始化时动态地分配一个缓冲区。缓冲区必须始终处于范围内,因为它存储用户空间程序与之交互的数据。因此,这里是我的代码: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