소스 분석 wakeup_softirqd() 에 대해 궁금한 점이 있습니다
글쓴이: erdbeere2 / 작성시간: 화, 2005/08/09 - 9:52오후
안녕하세요
저는 리눅스 소스 코드를 분석하고 있는 초보자 인데요
질문사항이 있어서 글 올립니다
커널 2.6.12.1
/* kernel/softirq.c */
static inline void wakeup_softirqd(void)
{
/* Interrupts are disabled: no need to stop preemption */
struct task_struct *tsk = __get_cpu_var(ksoftirqd);
if (tsk && tsk->state != TASK_RUNNING)
wake_up_process(tsk);
}
밑줄친 부분에서요 __get_cpu_var(ksoftirqd) 이 부분이 어떻게 ksoftirqd에 대한 task_struct 구조체에 대한 포인터를 돌려주는지 그 과정을 이해하고 싶습니다
__get_cpu_var 은 다음과 같이 정의가 되어 있었습니다
#define __get_cpu_var(var) per_cpu__##var
C책을 보니까 ##을 하면 per_cpu__ksoftirqd 이렇게 동작한다고 하던데요 그렇게 생각해도 이해가 잘 안되구요
제가 문법을 잘 몰라서 그런지 몰라도 도통 이해가 안되네요
아시면 꼭 답변해 주시면 감사하겠습니다 ㅠ.ㅠ
Forums:


댓글 달기