소스 1:
read_lock(&tasklist_lock);
p_proc_init = (struct task_struct *)find_task_by_pid(0);
read_unlock(&tasklist_lock);
소스 2:
p_proc_init = (struct task_struct *)find_task_by_pid(0);
소스 1과 소스 2의 차이점인데
smp 모듈에서는 소스 1로 하면 아무런 문제가 없습니다. 그런데 2.4.21-20.EL에서는 read_lock과 read_unlock을 사용하면 모듈이 로드가 안되고 주석처리해서 테스트 해 본 결과 님과 같이 어뚱한 값을 가져오는 경우가 발생합니다.
read_lock, read_unlock을 사용하실 수 있으면 사용하시면 될 것이고 저처럼 사용할 수 없는 경우라면 아직 저도 그 부분에 대한 해답은 못찾았습니다.
헉..
&init_task 네여 ㅠㅠ
이런 초보자의 험난한 길이 ㅠㅠ
lock 관련 문제로 보입니다.
저도 요즘 그 부분에 걸려서. 테스트 중인데
일단 제가 테스트 한 결과로 유추하면
read_lock, read_unlock에 대해서 문제점이 발생합니다.
소스 1:
read_lock(&tasklist_lock);
p_proc_init = (struct task_struct *)find_task_by_pid(0);
read_unlock(&tasklist_lock);
소스 2:
p_proc_init = (struct task_struct *)find_task_by_pid(0);
소스 1과 소스 2의 차이점인데
smp 모듈에서는 소스 1로 하면 아무런 문제가 없습니다. 그런데 2.4.21-20.EL에서는 read_lock과 read_unlock을 사용하면 모듈이 로드가 안되고 주석처리해서 테스트 해 본 결과 님과 같이 어뚱한 값을 가져오는 경우가 발생합니다.
read_lock, read_unlock을 사용하실 수 있으면 사용하시면 될 것이고 저처럼 사용할 수 없는 경우라면 아직 저도 그 부분에 대한 해답은 못찾았습니다.
방갑습니다..
잘 부탁드립니다.
댓글 달기