스핀 잠금 동기화 메커니즘을 연구할 때 각 함수에 해당하는 매크로가 있다는 것을 알았습니다. 예를 들어 spin_lock에는 함수가 있습니다.
static __always_inline void spin_lock(spinlock_t *lock) {
raw_spin_lock(&lock->rlock); }
그리고 매크로
#define spin_lock(x) pthread_mutex_lock(x)
두 가지 다른 정의가 있는 이유는 무엇이며 각 정의는 언제 사용됩니까? 감사합니다!
답변1
이 매크로는 다음에 정의되어 있습니다.tools/include/linux/spinlock.h
: 따라서 트리의 일부이며 tools
커널 트리에서 제공하는 커널 관련 도구에만 사용됩니다. 커널 코드와 사용자 공간 코드가 커널 트리에서 동일한 기본 요소를 사용할 수 있도록 존재합니다. 이 매크로는 spin_lock
동등한 pthread 기본 요소로 변환됩니다.
인라인 함수, 정의됨include/linux/spinlock.h
, 커널 자체 내에서 사용됩니다.