Chinaunix

标题: slab_trylock() 函数的作用? [打印本页]

作者: Buddy_Zhang1    时间: 2016-02-08 08:50
标题: 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;
}
作者: nswcfd    时间: 2016-02-14 17:58
test_and_set,就是try_lock的基本语义嘛。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2