LinuxFreeBSD

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ LinuxFreeBSD ] in KIDS
글 쓴 이(By): bullard (불라드)
날 짜 (Date): 2000년 6월  6일 화요일 오후 10시 32분 39초
제 목(Title): [Q] spinlock.h


커널 코드를 짜고 있습니다.
Lock을 써야 할 것 같아서, <asm/spinlock.h> 파일을
살펴 보고 있습니다.
그런데, 다음과 같은 도저히 이해할 수 없는 코드가
있더군요.

#define spin_lock_init(lock)    do { } while(0)
#define spin_lock(lock)         (void)(lock) /* Not "unused variable". */
#define spin_trylock(lock)      (1)
#define spin_unlock_wait(lock)  do { } while(0)
#define spin_unlock(lock)       do { } while(0)
#define spin_lock_irq(lock)     cli()
#define spin_unlock_irq(lock)   sti()

#define spin_lock_irqsave(lock, flags) \
        do { save_flags(flags); cli(); } while (0)
#define spin_unlock_irqrestore(lock, flags) \
        restore_flags(flags)

위에서 lock 파라미터는 spinlock_t 타입의 lock 변수에 대한
포인터입니다.

이게 도대체 뭘 의미하는 것인지요?
참고로 커널 버젼은 2.2.14 입니다.
감사합니다.

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.