그래서 동적으로 모듈을 초기화 할 때 버퍼를 할당하려고합니다. 버퍼는 사용자 공간 프로그램이 상호 작용하는 데이터를 저장하므로 항상 범위에 있어야합니다.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