모듈에서 open, write 함수를 사용 할 수 있나요?

achiven의 이미지

사용 할 수 있을 것 같은데..
안돼네요..
모듈 프로그래밍을 하고 insmod 시키면 다음과 같은 에러가 납니다.
unresolved symbol open <- open 함수 에러
어떻게 하면 모듈에서 일반 파일을 읽어 들일 수 있을까요?

kslee80의 이미지

검색을 해 보시는게 좋을 듯 싶네요.
커널 모듈 프로그래밍 관련해서 자주 나오는 질문입니다.

P.S.) 결과만 미리 이야기해 드리자면, 커널 모듈에서 open/write 를 사용할 수 있습니다.
방식이 조금 틀려서 그렇죠..

hie의 이미지

unresolved symbol open

작성하신 코드중에 open이라는 함수를 사용하였는데.. 그 함수에 대한
정보가 없다는 이야기입니다. User Land에서의 코딩과 별반 차이는
없지만( 지극히 개인적인 생각 ), 사용 가능한 API인지 먼저 확인을
해 보십시요.
achiven의 이미지

void ReadFile(char *Filename, int StartPos)
{
struct file *filp;
char *Buffer;
mm_segment_t oldfs;
int BytesRead;

Buffer = kmalloc(4096,GFP_KERNEL);
if (Buffer==NULL)
return;

filp = filp_open(Filename,00,O_RDONLY);
if (IS_ERR(filp)||(filp==NULL))
return; /* Or do something else */

if (filp->f_op->read==NULL)
return; /* File(system) doesn't allow reads */

/* Now read 4096 bytes from postion "StartPos" */
filp->f_pos = StartPos;
oldfs = get_fs();
set_fs(KERNEL_DS);
BytesRead = filp->f_op->read(filp,Buffer,4096,&filp->f_pos);
set_fs(oldfs);

/* Close the file */
fput(filp);

}

http://www.fenrus.demon.nl/kernel.html