커널쓰레드 CPU 사용율, 제거방법.....

지나가는새의 이미지

module에 kernel_thread 루틴을 첨가 하려 합니다.

커널 스레드는 init_module에 다음과 같이 추가되어 있구요

kernel_thread( kte_thread_func, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND );

커널 스레드가 처음 인지라 테스트 겸 해서 스레드 코드는 다음과 같이 했습니다.

static void kte_thread_func( void* data )
{
    daemonize();

    while(1){
        schedule();
    }
 }

insmod 하면 잘 돌기는 하는거 같은데요, CPU 점유율이 너무 높습니다.
root 89 99.9 0.0 0 0 ? RW 00:00 0:02 [insmod]

일반 app 에서는 sleep(1) 하면 되긴 하는데, 커널에서는 어떤식으로 해야 하는지 궁금하네요. udelay(xxx) 를 해 봤지만 별 소용 없었습니다.

그리고 exit_module 에서 자꾸 패닉이 나는데요.
exit_module 에는 다음과 같이 구현 했는데 어디가 틀린지 모르겠네요.

static void __exit kte_module_exit(void)
{
    wait_asleep( 100 );
   ....
}

static void wait_asleep( unsigned int die )
{
    current->state = TASK_INTERRUPTIBLE;
    schedule_timeout(HZ/die);
}

어디가 잘못 되었으니까 패닉이 나겠죠..

커널쓰레드를 처음 해 보는것이라서 어려움이 많네요. 도움 부탁 합니다.

익명 사용자의 이미지

http://ar.linux.it/docs/khttpd/ktftpd.tar.gz

이 예제를 참고해 보시지요.

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.