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