사용 할 수 있을 것 같은데.. 안돼네요.. 모듈 프로그래밍을 하고 insmod 시키면 다음과 같은 에러가 납니다. unresolved symbol open <- open 함수 에러 어떻게 하면 모듈에서 일반 파일을 읽어 들일 수 있을까요?
검색을 해 보시는게 좋을 듯 싶네요. 커널 모듈 프로그래밍 관련해서 자주 나오는 질문입니다.
P.S.) 결과만 미리 이야기해 드리자면, 커널 모듈에서 open/write 를 사용할 수 있습니다. 방식이 조금 틀려서 그렇죠..
unresolved symbol open
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
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
Re: 자주 나오는 질문인것 같은데...
검색을 해 보시는게 좋을 듯 싶네요.
커널 모듈 프로그래밍 관련해서 자주 나오는 질문입니다.
P.S.) 결과만 미리 이야기해 드리자면, 커널 모듈에서 open/write 를 사용할 수 있습니다.
방식이 조금 틀려서 그렇죠..
unresolved symbol
작성하신 코드중에 open이라는 함수를 사용하였는데.. 그 함수에 대한
정보가 없다는 이야기입니다. User Land에서의 코딩과 별반 차이는
없지만( 지극히 개인적인 생각 ), 사용 가능한 API인지 먼저 확인을
해 보십시요.
찾았습니다... 4시간 검색해서 해결봤어요..
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
댓글 달기