cregit-Linux how code gets into the kernel

Release 4.12 include/linux/semaphore.h

Directory: include/linux
 * Copyright (c) 2008 Intel Corporation
 * Author: Matthew Wilcox <>
 * Distributed under the terms of the GNU GPL, version 2
 * Please see kernel/semaphore.c for documentation of these functions


#include <linux/list.h>
#include <linux/spinlock.h>

/* Please don't access any members of this structure directly */

struct semaphore {
raw_spinlock_t		lock;
unsigned int		count;
struct list_head	wait_list;

#define __SEMAPHORE_INITIALIZER(name, n)				\
{                                                                       \
        .lock           = __RAW_SPIN_LOCK_UNLOCKED((name).lock),        \
        .count          = n,                                            \
        .wait_list      = LIST_HEAD_INIT((name).wait_list),             \

#define DEFINE_SEMAPHORE(name)	\
	struct semaphore name = __SEMAPHORE_INITIALIZER(name, 1)

static inline void sema_init(struct semaphore *sem, int val) { static struct lock_class_key __key; *sem = (struct semaphore) __SEMAPHORE_INITIALIZER(*sem, val); lockdep_init_map(&sem->lock.dep_map, "semaphore->lock", &__key, 0); }


Matthew Wilcox52100.00%1100.00%

extern void down(struct semaphore *sem); extern int __must_check down_interruptible(struct semaphore *sem); extern int __must_check down_killable(struct semaphore *sem); extern int __must_check down_trylock(struct semaphore *sem); extern int __must_check down_timeout(struct semaphore *sem, long jiffies); extern void up(struct semaphore *sem); #endif /* __LINUX_SEMAPHORE_H */

Overall Contributors

Matthew Wilcox16094.12%571.43%
Thomas Gleixner105.88%228.57%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.