slab_trylock() 函数的作用?
在初始化 SLUB 系统时,遇到 slab_trylock() 函数,具体含义不是很明确,该函数是用来上锁还是只是测试是否有锁的存在?static __always_inline int slab_trylock(struct page *page)
{
int rc = 1;
rc = bit_spin_trylock(PG_locked, &page->flags);
return rc;
}
static inline int bit_spin_trylock(int bitnum, unsigned long *addr)
{
preempt_disable();
#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK)
if (unlikely(test_and_set_bit_lock(bitnum, addr))) {
preempt_enable();
return 0;
}
#endif
__acquire(bitlock);
return 1;
} test_and_set,就是try_lock的基本语义嘛。
页:
[1]