LCOV - code coverage report
Current view: top level - include/linux - semaphore.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 0 5 0.0 %
Date: 2021-04-22 12:43:58 Functions: 0 1 0.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0-only */
       2             : /*
       3             :  * Copyright (c) 2008 Intel Corporation
       4             :  * Author: Matthew Wilcox <willy@linux.intel.com>
       5             :  *
       6             :  * Please see kernel/locking/semaphore.c for documentation of these functions
       7             :  */
       8             : #ifndef __LINUX_SEMAPHORE_H
       9             : #define __LINUX_SEMAPHORE_H
      10             : 
      11             : #include <linux/list.h>
      12             : #include <linux/spinlock.h>
      13             : 
      14             : /* Please don't access any members of this structure directly */
      15             : struct semaphore {
      16             :         raw_spinlock_t          lock;
      17             :         unsigned int            count;
      18             :         struct list_head        wait_list;
      19             : };
      20             : 
      21             : #define __SEMAPHORE_INITIALIZER(name, n)                                \
      22             : {                                                                       \
      23             :         .lock           = __RAW_SPIN_LOCK_UNLOCKED((name).lock),        \
      24             :         .count          = n,                                            \
      25             :         .wait_list      = LIST_HEAD_INIT((name).wait_list),             \
      26             : }
      27             : 
      28             : #define DEFINE_SEMAPHORE(name)  \
      29             :         struct semaphore name = __SEMAPHORE_INITIALIZER(name, 1)
      30             : 
      31           0 : static inline void sema_init(struct semaphore *sem, int val)
      32             : {
      33           0 :         static struct lock_class_key __key;
      34           0 :         *sem = (struct semaphore) __SEMAPHORE_INITIALIZER(*sem, val);
      35           0 :         lockdep_init_map(&sem->lock.dep_map, "semaphore->lock", &__key, 0);
      36           0 : }
      37             : 
      38             : extern void down(struct semaphore *sem);
      39             : extern int __must_check down_interruptible(struct semaphore *sem);
      40             : extern int __must_check down_killable(struct semaphore *sem);
      41             : extern int __must_check down_trylock(struct semaphore *sem);
      42             : extern int __must_check down_timeout(struct semaphore *sem, long jiffies);
      43             : extern void up(struct semaphore *sem);
      44             : 
      45             : #endif /* __LINUX_SEMAPHORE_H */

Generated by: LCOV version 1.14