![Linux의 프로세서에 대한 정보](https://linux55.com/image/1311/Linux%EC%9D%98%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%84%9C%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%A0%95%EB%B3%B4.png)
안녕하세요 여러분, 저는 책을 읽고 있었는데 Understanding the Linux Kernel
다음을 발견했습니다:
각 프로세스 설명자에 포함된 필드 외에도 각 CPU가 수행하는 작업을 설명하는 추가 정보가 필요합니다. 이를 위해 스케줄러는 Schedule_data 유형의 NR_CPUS 구조의 alignment_data 배열을 사용할 수 있습니다.
NR_CPUS
내 질문은 이것을 어디에서 찾고 정의할 수 있느냐는 것입니다(어떤 디렉터리와 파일을 의미합니다) schedule_data struct
. 미리 감사드립니다.
PS Linux 커널에서 다양한 구조와 매크로가 정의된 위치에 대한 빠른 참조를 제공하는 일부 웹사이트를 아는 사람이 있다면 매우 도움이 될 것입니다.
답변1
나는 사용할 것이다
cd /usr/src/linux
cscope
기본 편집기와 잘 통합된 ncurses GUI에서 정의, 참조, 호출자, 피호출자, 자유 텍스트를 찾아보세요.
vim을 사용하면 반대 방향으로도 통합됩니다.
그리고 ctags가 있습니다. 이 소프트웨어는 vim과 다른 많은 편집기에서도 크게 지원됩니다.
답변2
http://lxr.linux.no/Linux 커널에 있는 모든 C 개체의 정의와 사용법을 찾을 수 있는 온라인 사이트입니다.
특정 버전의 커널을 선택하기만 하면 됩니다(예:http://lxr.linux.no/#linux+v2.6.38/)를 입력하고 오른쪽 상단의 입력 필드에 변수 또는 매크로 이름을 붙여넣습니다.
다음은 NR_CPUS 검색 결과의 예입니다.http://lxr.linux.no/#linux+v2.6.38/include/linux/threads.h#L20
답변3
NR_CPUS
파일에서 매크로로 정의됨: include/linux/threads.h
.
struct schedule_data
정의된 위치: /usr/src/linux/kernel/sched.c
.