epoll() 함수를 사용하기위한 커널 컴파일 패치를 하려면 어떻게

goldedit의 이미지

안녕하세요.
문의 사항이 있어 질문 드립니다.

현제 진행되는 프로젝트에서 소켓 서버 프로그래밍을 위해
리눅스 서버 2.6 커널 로 컴파일 하여 구동 중에 있습니다.

소켓 종류중 epoll 이라는 함수를 지원하기 위해 커널 2.6으로 컴파일
한 것인데요...
이것이 2.6 커널로만 컴파일 해서 되는것이 아니라고들 하는데요..
epoll 함수가 지원 되도록 커널을 컴파일 하려면 패치후 컴파일을 해야 된다고 하는데 어떻게 해야 하는지 궁금합니다...

실제 epoll 함수를 사용하기 위한 샘플 소스 상에서는...
epoll 함수를 사용하기 위해 헤드 파일에...
#include <sys/epoll.h>
......
로 헤드 파일을 불러 오도록 되어 있거든요..

그리고 다른 분들 말로는 /usr/include/linux/epoll.h 파일이 존재 해야
된다고 하는데 epoll.h 라는 헤드 파일은 이 디렉토리에는 존재 하지 않습니다.

혹시나 하여 검색해본 결과 /usr/src/linux/include/config/epoll.h
에 해당 파일이 존재 하긴 합니다만..

찾은 파일에는 #define CONFIG_EPOLL 1 이 내용 외에는 아무런 내용이 없습니다..

커널 컴파일 시에 지원 되도록 하기위해 패치를 하려면 어떻게 해야 하는지. 패치 방법이나 등등 관련 문서나 사용 방법등을 알려주셨으면 합니다.
현제로서는 어떻게 해야 할지 모르겠네요...

수고하세요.

sylphong의 이미지

커널2.6이라면 패치는 필요없습니다..
epoll관련 함수는 epoll_create,epoll_ctl,epoll_wait함수가 있습니다만 user space에선 이 시스템콜을 그냥 호출할수는 없죠..함수의 프로토타입도 없을뿐더러 라이브러리도 없기때문입니다..
그래서 epoll패치를 제공하는 사이트에 보시면 epoll-lib라는 라이브러리가 제공되니 그걸 설치하시면 됩니다..

goldedit의 이미지

likesylph wrote:
그래서 epoll패치를 제공하는 사이트에 보시면 epoll-lib라는 라이브러리가 제공되니 그걸 설치하시면 됩니다..

아! 그렇군요...

-

sylphong의 이미지

http://www.xmailserver.org/linux-patches/nio-improve.html
이 사이트에 보시면 epoll패치와 epoll-lib가 있습니다. 설치법은 그냥 make install하면 될겁니다. 중간에 에러가 나면 http://www.xmailserver.org/libpcl.html 을 깔아보세요..

goldedit의 이미지

안녕하세요..
답변 주셔서 감사드립니다..
그런데 아래와 같은 메세지를 출력하며 설치가 안되네요

-----------------------------------------------------------------------
epoll-lib# make install
Makefile:76: .depend: 그런 파일이나 디렉토리가 없음
mkdep -f .depend -g -I- -I./include -I/usr/src/linux/include -DUNIX -D_DEBUG ./src/epoll.c
make: mkdep: 명령을 찾지 못했음
make: *** [.depend] 오류 127
-----------------------------------------------------------------------

-

sylphong의 이미지

apt-get install pmake
pmake안에 있습니다..

goldedit의 이미지

likesylph 님 감사 드립니다..

-

댓글 달기

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