초보적인 질문..................
글쓴이: jswoo21 / 작성시간: 수, 2012/10/24 - 4:09오후
우분투 12.04에서
커널을 3.2.28로 업데이트 했는데요..
원래 기본 헤더파일 경로가 /usr/include로 알고있는데요..
지금 모듈프로그래밍으로 간단한 과제하고있는데요..
헤더파일 인클루드할때 경로가
/usr/src/linux-3.2.28/include로 적용이되는거 같아요..
즉 업데이트한 커널소스 아래의 include로 된거같은데요..
지금 모듈프로그래밍하면서 getpgid, getsid 함수가 필요한데...
이게 /usr/include/unistd.h에 있더라구요..
#include
#include
...
뭐 어떻게해도 안되더라구요...
메이크파일 경로 추가해봐도 안되고..
어떻게해야되죠?ㅜ
Forums:
'모듈프로그래밍' 이라는게 커널 드라이버 모듈을
'모듈프로그래밍' 이라는게 커널 드라이버 모듈을 만들고 있다는 뜻이라면,
그게 정상이고 바른 길로 가고 있는 상태입니다.
혹시라도 /usr/src/linux-3.2.28/include/ 외의 곳에 있는 헤더파일이 단 한 개라도 참조된다면,
완전 비정상이고 사마외도로 빠지신 겁니다.
커널에서 export 하지 않는 함수(symbol)는 사용하실 수 없습니다.
경우에 따라선 license 가 맞지 않는다면 export 된 symbol 조차도 참조하실 수 없습니다.
음..
man setpgid 해보시면 아시겠지만.. 이것은 module programming에서 사용할 수 있는 함수가 아닙니다. 아마 SETPGID(2) 라고 나올텐데요. 이게 의미하는 바에 대해서는 한번 직접 찾아보시기 바랍니다.
위에 다른 분이 말씀드린 것처럼 kernel module programming을 하시고 계신 거라면 error가 나는게 맞습니다. Process의 pgid를 얻는게 목적이시라면, google에서 task_struct에 대해서 검색해보시는 건 어떨지요.
Web에서 편리하게 접근할 수 있는 방법도 있구요.
http://lxr.linux.no/
직접 커널 소스를 받으셔서 cscope + ctags 조합으로 쉽게 탐색도 할 수 있습니다.
아마 쉽게 하실 수 있을 것으로 생각됩니다 :)
句日新, 日新 日新 又日新.
task_struct에서 pid는 쉽게 찾을수
task_struct에서 pid는 쉽게 찾을수 있었는데요...
pgid가 어디에 저장되는질 몰라서 저 함수들을 쓰려한거였습니다..
sid의 경우엔 sessionid라는 변수에 저장되는것 같긴한데..
모듈프로그래밍시 해당 함수 사용이 안된다면..
task_struct에서 pgid 저장되는 부분을 찾아야겟네요ㅜ
감사합니다.
음..
그럼 이런건 어떨까요? :)
http://lxr.linux.no/linux+v3.6.3/kernel/sys.c#L1155
句日新, 日新 日新 又日新.
getpgid getsid 함수 호출에 문제가
getpgid getsid 함수 호출에 문제가 있어서
링크걸어주신것처럼 직접 파일 내에 해당 함수 구현해서 해봤었는데..
그부분에서도 문제가 발생했었어요...ㅜ
일단 task_struct에서 pgid랑 sid 저장되는 부분으로 의심되는 변수들 추적해서
출력해봤는데
출력시킨 pgid랑 sid가 자리수가 상당하네요;;
잘못찾은듯싶네요.........ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ
어쨋든 감사합니다!
댓글 달기