처음으로 커널 쓰레드를 사용해 보았습니다.

dalant019의 이미지

커널 쓰레드를 종료할 때 아래와 같이

void fun1(void *pData)
{

    for ( ; ; )
    {
        if (flag == true)
        {
              break;
        }
        
        .....
     }
}

단지 어떤 조건(flag == true)를 만족했을 때 for문을 빠져나야 리턴되면 커널 쓰레드가 자연스럽게 종료되는 건가요? 응용 쓰레드는 이렇게 종료되면 그 뒷 처리를 시스템에서 알아서 해주게 되는 데 커널 쓰레드는 시스템의 한 부분이기 때문에 이렇게 종료시켜서는 안될 것 같다는 생각이 갑자기 들어서요~

커널 쓰레드를 사용하는 데 있어서 주의할 점 등이 궁금합니다... ^^[/code]

atomaths의 이미지

swunk의 이미지

해당 소스 코드 컴파일후 insmod 하면 다음 에러가 나는데요...
이럴 경우 어떻게 해결해야 하죠?

소스코드는 2.4.2 버전에 맞추어서 제작된거 같은데...
insmod 한 시스템은 커널 버전 2.4.20 입니다.

[root@superman kernel_thread]# insmod thread_mod.o -f
thread_mod.o: unresolved symbol kernel_flag_cacheline

jenix의 이미지

말 그대로 kernel_flag_cacheline 심볼을 못찾는거네요.

함수가 다른 오브젝트에 들어가있을수도 있겠죠.

해당 함수가 들어있는 오브젝트를 링크해줘야할거 같은데요..

kernel_flag_cacheline 은 SMP 환경에서 커널락의 하나로 사용되는 겁니다..

아마도 smp 세팅이 안되서 생기는 오류같네요~

---------------------------------------------------------------------------
http://jinhyung.org -- 방문해 보세요!! Jenix 의 블로그입니다! :D