atomic_spinlock_semaphore_mutex
atomic_t atomic = ATOMIC_INIT(0); // 定义与初始化, atomic=0 atomic_set(&atomic, 20); // 相当于 atomic=20 atomic_inc(&atomic); // 相当于 atomic+=1, 21 pr_debug("%s: test == %d\n", __func__, atomic_read(&atomic));DEFINE_SPINLOCK(spinlock); // 定义与初始化 unsigned long flags; spin_lock_irqsave(&spinlock, flags); pr_debug("%s: spinlock function\n", __func__); // can not sleep spin_unlock_irqrestore(&spinlock, flags);struct semaphore sem; // 定义 sema_init(&sem, 10); // 初始化, 信号量有10个,即同时允许10个进程访问共享资源 down(&sem); // 信号量减一 pr_debug("%s: semaphore function\n", __func__); // can sleep up(&sem); // 信号量加一DEFINE_MUTEX(mutexlock); // 定义与初始化 mutex_lock(&mutexlock); pr_debug("%s: mutexlock function\n", __func__); // can sleep mutex_unlock(&mutexlock);
Last updated