所以,我正试图动态地分配模块初始化的缓冲。缓冲需要始终处于范围,因为它存储了用户空间程序互动的数据。所以我的代码是:
static char* file_data
#define MAX_SIZE 256
.
.
.
{
file_data = kzalloc(MAX_SIZE, GFP_KERNEL)
.
.
.
}
然而当我做文件 size of file_ data
时,它总是返回 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;
}