스핀락에 대한 질문입니다

스핀락에 대한 질문입니다

스핀 잠금 동기화 메커니즘을 연구할 때 각 함수에 해당하는 매크로가 있다는 것을 알았습니다. 예를 들어 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, 커널 자체 내에서 사용됩니다.

관련 정보