초보적인 질문..................

jswoo21의 이미지

우분투 12.04에서
커널을 3.2.28로 업데이트 했는데요..
원래 기본 헤더파일 경로가 /usr/include로 알고있는데요..
지금 모듈프로그래밍으로 간단한 과제하고있는데요..
헤더파일 인클루드할때 경로가
/usr/src/linux-3.2.28/include로 적용이되는거 같아요..
즉 업데이트한 커널소스 아래의 include로 된거같은데요..
지금 모듈프로그래밍하면서 getpgid, getsid 함수가 필요한데...
이게 /usr/include/unistd.h에 있더라구요..
#include
#include
...
뭐 어떻게해도 안되더라구요...
메이크파일 경로 추가해봐도 안되고..
어떻게해야되죠?ㅜ

bushi의 이미지

'모듈프로그래밍' 이라는게 커널 드라이버 모듈을 만들고 있다는 뜻이라면,
그게 정상이고 바른 길로 가고 있는 상태입니다.
혹시라도 /usr/src/linux-3.2.28/include/ 외의 곳에 있는 헤더파일이 단 한 개라도 참조된다면,
완전 비정상이고 사마외도로 빠지신 겁니다.

커널에서 export 하지 않는 함수(symbol)는 사용하실 수 없습니다.
경우에 따라선 license 가 맞지 않는다면 export 된 symbol 조차도 참조하실 수 없습니다.

freemckang의 이미지

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는 쉽게 찾을수 있었는데요...
pgid가 어디에 저장되는질 몰라서 저 함수들을 쓰려한거였습니다..
sid의 경우엔 sessionid라는 변수에 저장되는것 같긴한데..
모듈프로그래밍시 해당 함수 사용이 안된다면..
task_struct에서 pgid 저장되는 부분을 찾아야겟네요ㅜ
감사합니다.

freemckang의 이미지

그럼 이런건 어떨까요? :)

http://lxr.linux.no/linux+v3.6.3/kernel/sys.c#L1155

句日新, 日新 日新 又日新.

익명 사용자의 이미지

getpgid getsid 함수 호출에 문제가 있어서
링크걸어주신것처럼 직접 파일 내에 해당 함수 구현해서 해봤었는데..
그부분에서도 문제가 발생했었어요...ㅜ
일단 task_struct에서 pgid랑 sid 저장되는 부분으로 의심되는 변수들 추적해서
출력해봤는데
출력시킨 pgid랑 sid가 자리수가 상당하네요;;
잘못찾은듯싶네요.........ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ
어쨋든 감사합니다!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.