スピンロックに関連するパニックの問題をデバッグしているときに、このスピンロックの定義に出くわしました
インクルード/linux/spinlock.h
. この定義を理解するのはかなり難しいです。関数__acquires(lock)
の後に使用されるのはなぜですか? do_raw_spin_lock
そのような宣言の意味は何ですか?
static inline void do_raw_spin_lock(raw_spinlock_t *lock) __acquires(lock)
{
__acquire(lock);
arch_spin_lock(&lock->raw_lock);
}
そのような宣言がどのようにデコードされ、機能するかを助けてください。