require '_h2ph_pre.ph'; no warnings 'redefine'; unless(defined(&__LINUX_MUTEX_H)) { eval 'sub __LINUX_MUTEX_H () {1;}' unless defined(&__LINUX_MUTEX_H); require 'linux/list.ph'; require 'linux/spinlock_types.ph'; require 'linux/linkage.ph'; require 'linux/lockdep.ph'; require 'asm/atomic.ph'; if(defined(&CONFIG_DEBUG_MUTEXES)) { } if(defined(&CONFIG_DEBUG_LOCK_ALLOC)) { } if(defined(&CONFIG_DEBUG_MUTEXES)) { } if(defined(&CONFIG_DEBUG_MUTEXES)) { require 'linux/mutex-debug.ph'; } else { eval 'sub __DEBUG_MUTEX_INITIALIZER { my($lockname) = @_; eval q(); }' unless defined(&__DEBUG_MUTEX_INITIALIZER); eval 'sub mutex_init { my($mutex) = @_; eval q( &do { &static 1; &__mutex_init(($mutex), $mutex, & &__key); } &while (0)); }' unless defined(&mutex_init); eval 'sub mutex_destroy { my($mutex) = @_; eval q( &do { } &while (0)); }' unless defined(&mutex_destroy); } if(defined(&CONFIG_DEBUG_LOCK_ALLOC)) { eval 'sub __DEP_MAP_MUTEX_INITIALIZER { my($lockname) = @_; eval q(, . &dep_map = { . &name = $lockname }); }' unless defined(&__DEP_MAP_MUTEX_INITIALIZER); } else { eval 'sub __DEP_MAP_MUTEX_INITIALIZER { my($lockname) = @_; eval q(); }' unless defined(&__DEP_MAP_MUTEX_INITIALIZER); } eval 'sub __MUTEX_INITIALIZER { my($lockname) = @_; eval q({ . &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) }); }' unless defined(&__MUTEX_INITIALIZER); eval 'sub DEFINE_MUTEX { my($mutexname) = @_; eval q(1; }' unless defined(&DEFINE_MUTEX); if(defined(&CONFIG_DEBUG_LOCK_ALLOC)) { } else { eval 'sub mutex_lock_nested { my($lock, $subclass) = @_; eval q( &mutex_lock($lock)); }' unless defined(&mutex_lock_nested); } } 1;