시스템 콜 추가 에 관해서 여쭤볼게 있습니다.:)

realcns의 이미지

제가 시스템 콜을 추가 하는걸 연습하다가 문뜩 이런 궁굼해져서요..

사실 시스템 콜을 추가했던게 책보고 따라했던 거라서 제데로 이해못하고 그냥 흉내만 하는가 싶어서요..;;

ENTRY(sys_call_table)
.long SYMBOL_NAME(sys_ni_syscall) /* 0 - old "setup()" system call*/
.long SYMBOL_NAME(sys_exit)
.long SYMBOL_NAME(sys_fork)
.long SYMBOL_NAME(sys_read)
.long SYMBOL_NAME(sys_write)
.long SYMBOL_NAME(sys_open) /* 5 */
.long SYMBOL_NAME(sys_close)
.long SYMBOL_NAME(sys_waitpid)
.long SYMBOL_NAME(sys_creat)
.long SYMBOL_NAME(sys_link)
.long SYMBOL_NAME(sys_unlink) /* 10 */
.long SYMBOL_NAME(sys_execve)
.long SYMBOL_NAME(sys_chdir)

혹시 이부분에서 저 .long SYMBOL_NAME 이 무엇을 뜻하는지 아세요 ?^^?
.long SYMBOL_NAME >>대략 심볼 네임은 이해하겠는데요.. 상직적이름..핫.^^; 그런데 저 .long은 뭘까요? 저것도 그냥 unistd.h에 등록할때 앞에 sys_가 예전부터 전해내려오던거라 의미없이 붙는건가요?

distosid의 이미지

일단 주변에 책이 없어서 확실친 않겠지만요,

저도 .long의 의미는 잘 모르겠으나. (여태껏 신경을 안써서 그런건지, 알았는데 까먹은 건지)
혹시 인터럽트 번호를 지칭하는 type이 아닐까 합니다. (사견)

sys_ 라는 접두사는 시스템 콜에 관용적으로 붙이는 것이라기 보다는
필수적으로 붙이는 것이라는 말이 좀 더 정화한 것 같군요.
예를들어 fork(2) 를 했을 경우, 결국 시스템콜 테이블 상의 sys_fork에만 대응이 되는 것이죠.

기억이 가물가물 :oops:

아무튼 확실한 건, 아래의 책에 모든 해답이 나와 있다는 것이지요. :lol:

O'Reilly
Understanding the Linux Kernel
By Daniel P. Bovet, Marco Cesati

Tony의 이미지

.long SYMBOL_NAME(sys_chdir)

.long 은 long 타입을 1개 선언하겠다는 의미. 즉 포인터하나크기를 잡겠다는거고
그 값은 SYMBOL_NAME(sys_chdir) 이런걸 쓰겠다는 의미.
SYMBOL_NAME(sys_chdir)은 sys_chdir이라는 symbol을 사용하는 녀석의
주소를 가져온다는 의미. 즉 이경우는 sys_chdir이라는 함수의 시작주소를
의미하지요. 결국 전체적으로 syscall entry부터 순서대로 각각 함수들의 주소를
적어놓게자는소리지요.

RTFM 어셈블러 메뉴얼보면 이정도는 다 나와있습니다.

realcns의 이미지

큰 도움이 되었습니다 .:) 감사합니다 ..
^^*

모든 OS를 사용해보자~!!
-놀고먹는백수가 되고 싶은 사람-

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.