저는 Linux 운영 체제를 처음 접했고 최근 uprobe의 구현 세부 사항을 파헤쳐 왔습니다. 매크로가 있어서 vma_interval_tree_foreach
검색해봤는데https://elixir.bootlin.com/. 이는 다음과 같은 정의를 제공합니다.
#define vma_interval_tree_foreach(vma, root, start, last) \
for (vma = vma_interval_tree_iter_first(root, start, last); \
vma; vma = vma_interval_tree_iter_next(vma, start, last))
그래서 그것이 무엇인지 알아내려고 노력하고 있지만 vma_interval_tree_iter_first
안타깝게도 이에 대한 정의를 찾을 수 없습니다. 웹을 빠르게 둘러보았지만 여전히 답을 찾지 못했습니다. 이 이상한 동작에 대한 정의나 설명을 찾는 방법을 아는 사람이 있나요? 감사합니다~
답변1
위로 스크롤하면vma_interval_tree_foreach
선언, 한 댓글에서 힌트를 얻었습니다.
/* interval_tree.c */
interval_tree.c
여기에는 두 개의 관련 파일이 있습니다 .mm/interval_tree.c
, 어느정의vma_interval_tree
:
INTERVAL_TREE_DEFINE(struct vm_area_struct, shared.rb,
unsigned long, shared.rb_subtree_last,
vma_start_pgoff, vma_last_pgoff, /* empty */, vma_interval_tree)
이는 다음을 사용합니다.INTERVAL_TREE_DEFINE
거시적인이는 vma_interval_tree_iter_first
및 vma_interval_tree_iter_next
기타 기능에 대한 정의를 생성합니다.