리눅스 커널 소스 fork.c 에서...
글쓴이: rgbi3307 / 작성시간: 목, 2012/02/23 - 3:09오후
리눅스커널 소스 kernel/fork.c 파일안에 do_fork() 함수안에 아래의 코드가 있습니다.
long do_fork(unsigned long clone_flags, unsigned long stack_start, struct pt_regs *regs, unsigned long stack_size, int __user *parent_tidptr, int __user *child_tidptr) { //중간생략... if (!IS_ERR(p)) { struct completion vfork; trace_sched_process_fork(current, p); nr = task_pid_vnr(p); //이하생략... }
위에서 trace_sched_process_fork(current, p); 문장은 얼핏봐도 trace_sched_process_fork 라는
함수를 호출하는것 같은데, 아무리 찾아봐도 이 함수가 정의된 곳을 찾을 수가 없습니다.
커널 소스를 검색하고 또 검색해 봐도 trace_sched_process_fork 을 찾을 수가 없네요...
그럼 이게 뭘까요?
혹시 이거 이미 경험해 보신분 계시면 멋진 조언 부탁합니다.
Forums:
macro로 생성해 주네요.
커널소스에서 make tags로 생성된 파일에서 검색해 보니 나오네요.
include/linux/tracepoint.h
142 #define __DECLARE_TRACE(name, proto, args, cond, data_proto, data_args) \
143 extern struct tracepoint __tracepoint_##name; \
144 static inline void trace_##name(proto) \
145 { \
146 if (static_branch(&__tracepoint_##name.key)) \
147 __DO_TRACE(&__tracepoint_##name, \
148 TP_PROTO(data_proto), \
149 TP_ARGS(data_args), \
150 TP_CONDITION(cond)); \
151 } \
----------------------------------------------------------------------------------------
Don't Feed the Trolls!
----------------------------------------------------------------------------------------
정말 감사합니다. 매크로 였군요. 매크로를 정의하고
정말 감사합니다. 매크로 였군요. 매크로를 정의하고 또 정의했군요.
커널 소스는 매크로의 향연인듯...(^^)
#define TRACE_EVENT(name, proto, args, struct, assign, print) \
DECLARE_TRACE(name, PARAMS(proto), PARAMS(args))
From:
*알지비 (메일: rgbi3307(at)nate.com)
*커널연구회(http://www.kernel.bz/) 내용물들을 만들고 있음.
*((공부해서 남을 주려면 남보다 더많이 연구해야함.))
댓글 달기