16ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh/**************************************************************************** 26ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh **************************************************************************** 36ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** 46ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** This header was automatically generated from a Linux kernel header 56ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** of the same name, to make information necessary for userspace to 66ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** call into the kernel available to libc. It contains only constants, 76ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** structures, and macros generated from the original header, and thus, 86ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** contains no copyrightable information. 96ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh *** 106ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh **************************************************************************** 116ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh ****************************************************************************/ 126ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#ifndef __LINUX_MUTEX_H 136ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define __LINUX_MUTEX_H 146ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 156ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/list.h> 166ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/spinlock_types.h> 176ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/linkage.h> 186ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <linux/lockdep.h> 196ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 206ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#include <asm/atomic.h> 216ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 226ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct mutex { 236ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 246ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh atomic_t count; 256ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh spinlock_t wait_lock; 266ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct list_head wait_list; 276ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh}; 286ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 296ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsiehstruct mutex_waiter { 306ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct list_head list; 316ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh struct task_struct *task; 326ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh}; 336ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 346ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define __DEBUG_MUTEX_INITIALIZER(lockname) 356ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define mutex_init(mutex) do { static struct lock_class_key __key; __mutex_init((mutex), #mutex, &__key); } while (0) 366ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define mutex_destroy(mutex) do { } while (0) 376ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 386ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define __DEP_MAP_MUTEX_INITIALIZER(lockname) 396ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 406ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define __MUTEX_INITIALIZER(lockname) { .count = ATOMIC_INIT(1) , .wait_lock = SPIN_LOCK_UNLOCKED , .wait_list = LIST_HEAD_INIT(lockname.wait_list) __DEBUG_MUTEX_INITIALIZER(lockname) __DEP_MAP_MUTEX_INITIALIZER(lockname) } 416ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 426ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define DEFINE_MUTEX(mutexname) struct mutex mutexname = __MUTEX_INITIALIZER(mutexname) 436ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 446ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#define mutex_lock_nested(lock, subclass) mutex_lock(lock) 456ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh 466ecc1bfab1621eaf5a17f82020a26468c537cdeaAndrew Hsieh#endif 47