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的基本语义嘛。
页: [1]
查看完整版本: slab_trylock() 函数的作用?