/openbmc/linux/drivers/acpi/acpica/ |
H A D | exmutex.c | 37 struct acpi_thread_state *thread = obj_desc->mutex.owner_thread; in acpi_ex_unlink_mutex() 45 if (obj_desc->mutex.next) { in acpi_ex_unlink_mutex() 46 (obj_desc->mutex.next)->mutex.prev = obj_desc->mutex.prev; in acpi_ex_unlink_mutex() 49 if (obj_desc->mutex.prev) { in acpi_ex_unlink_mutex() 50 (obj_desc->mutex.prev)->mutex.next = obj_desc->mutex.next; in acpi_ex_unlink_mutex() 58 (obj_desc->mutex.prev)->mutex.original_sync_level = in acpi_ex_unlink_mutex() 59 obj_desc->mutex.original_sync_level; in acpi_ex_unlink_mutex() 61 thread->acquired_mutex_list = obj_desc->mutex.next; in acpi_ex_unlink_mutex() 88 obj_desc->mutex.prev = NULL; in acpi_ex_link_mutex() 89 obj_desc->mutex.next = list_head; in acpi_ex_link_mutex() [all …]
|
H A D | dsmethod.c | 263 status = acpi_os_create_mutex(&mutex_desc->mutex.os_mutex); in acpi_ds_create_method_mutex() 269 mutex_desc->mutex.sync_level = method_desc->method.sync_level; in acpi_ds_create_method_mutex() 270 method_desc->method.mutex = mutex_desc; in acpi_ds_create_method_mutex() 323 if (!obj_desc->method.mutex) { in acpi_ds_begin_method_execution() 345 obj_desc->method.mutex->mutex.sync_level)) { in acpi_ds_begin_method_execution() 360 !obj_desc->method.mutex->mutex.thread_id || in acpi_ds_begin_method_execution() 362 obj_desc->method.mutex->mutex.thread_id)) { in acpi_ds_begin_method_execution() 368 acpi_ex_system_wait_mutex(obj_desc->method.mutex-> in acpi_ds_begin_method_execution() 369 mutex.os_mutex, in acpi_ds_begin_method_execution() 378 obj_desc->method.mutex->mutex. in acpi_ds_begin_method_execution() [all …]
|
/openbmc/qemu/util/ |
H A D | qemu-coroutine-lock.c | 142 static void coroutine_fn push_waiter(CoMutex *mutex, CoWaitRecord *w) in push_waiter() argument 145 QSLIST_INSERT_HEAD_ATOMIC(&mutex->from_push, w, next); in push_waiter() 148 static void move_waiters(CoMutex *mutex) in move_waiters() argument 151 QSLIST_MOVE_ATOMIC(&reversed, &mutex->from_push); in move_waiters() 155 QSLIST_INSERT_HEAD(&mutex->to_pop, w, next); in move_waiters() 159 static CoWaitRecord *pop_waiter(CoMutex *mutex) in pop_waiter() argument 163 if (QSLIST_EMPTY(&mutex->to_pop)) { in pop_waiter() 164 move_waiters(mutex); in pop_waiter() 165 if (QSLIST_EMPTY(&mutex->to_pop)) { in pop_waiter() 169 w = QSLIST_FIRST(&mutex->to_pop); in pop_waiter() [all …]
|
H A D | qemu-thread-win32.c | 68 void qemu_mutex_init(QemuMutex *mutex) in qemu_mutex_init() argument 70 InitializeSRWLock(&mutex->lock); in qemu_mutex_init() 71 qemu_mutex_post_init(mutex); in qemu_mutex_init() 74 void qemu_mutex_destroy(QemuMutex *mutex) in qemu_mutex_destroy() argument 76 assert(mutex->initialized); in qemu_mutex_destroy() 77 mutex->initialized = false; in qemu_mutex_destroy() 78 InitializeSRWLock(&mutex->lock); in qemu_mutex_destroy() 81 void qemu_mutex_lock_impl(QemuMutex *mutex, const char *file, const int line) in qemu_mutex_lock_impl() argument 83 assert(mutex->initialized); in qemu_mutex_lock_impl() 84 qemu_mutex_pre_lock(mutex, file, line); in qemu_mutex_lock_impl() [all …]
|
H A D | qemu-thread-common.h | 19 static inline void qemu_mutex_post_init(QemuMutex *mutex) in qemu_mutex_post_init() argument 22 mutex->file = NULL; in qemu_mutex_post_init() 23 mutex->line = 0; in qemu_mutex_post_init() 25 mutex->initialized = true; in qemu_mutex_post_init() 28 static inline void qemu_mutex_pre_lock(QemuMutex *mutex, in qemu_mutex_pre_lock() argument 31 trace_qemu_mutex_lock(mutex, file, line); in qemu_mutex_pre_lock() 34 static inline void qemu_mutex_post_lock(QemuMutex *mutex, in qemu_mutex_post_lock() argument 38 mutex->file = file; in qemu_mutex_post_lock() 39 mutex->line = line; in qemu_mutex_post_lock() 41 trace_qemu_mutex_locked(mutex, file, line); in qemu_mutex_post_lock() [all …]
|
H A D | qemu-thread-posix.c | 67 void qemu_mutex_init(QemuMutex *mutex) in qemu_mutex_init() argument 71 err = pthread_mutex_init(&mutex->lock, NULL); in qemu_mutex_init() 74 qemu_mutex_post_init(mutex); in qemu_mutex_init() 77 void qemu_mutex_destroy(QemuMutex *mutex) in qemu_mutex_destroy() argument 81 assert(mutex->initialized); in qemu_mutex_destroy() 82 mutex->initialized = false; in qemu_mutex_destroy() 83 err = pthread_mutex_destroy(&mutex->lock); in qemu_mutex_destroy() 88 void qemu_mutex_lock_impl(QemuMutex *mutex, const char *file, const int line) in qemu_mutex_lock_impl() argument 92 assert(mutex->initialized); in qemu_mutex_lock_impl() 93 qemu_mutex_pre_lock(mutex, file, line); in qemu_mutex_lock_impl() [all …]
|
/openbmc/linux/include/linux/ |
H A D | mutex.h | 66 struct mutex { struct 86 extern void mutex_destroy(struct mutex *lock); argument 92 static inline void mutex_destroy(struct mutex *lock) {} in mutex_destroy() 104 #define mutex_init(mutex) \ argument 108 __mutex_init((mutex), #mutex, &__key); \ 119 struct mutex mutexname = __MUTEX_INITIALIZER(mutexname) 121 extern void __mutex_init(struct mutex *lock, const char *name, 130 extern bool mutex_is_locked(struct mutex *lock); 138 struct mutex { struct 152 struct mutex mutexname = __MUTEX_INITIALIZER(mutexname) argument [all …]
|
/openbmc/linux/drivers/net/ethernet/netronome/nfp/nfpcore/ |
H A D | nfp_mutex.c | 128 struct nfp_cpp_mutex *mutex; in nfp_cpp_mutex_alloc() local 143 mutex = kzalloc(sizeof(*mutex), GFP_KERNEL); in nfp_cpp_mutex_alloc() 144 if (!mutex) in nfp_cpp_mutex_alloc() 147 mutex->cpp = cpp; in nfp_cpp_mutex_alloc() 148 mutex->target = target; in nfp_cpp_mutex_alloc() 149 mutex->address = address; in nfp_cpp_mutex_alloc() 150 mutex->key = key; in nfp_cpp_mutex_alloc() 151 mutex->depth = 0; in nfp_cpp_mutex_alloc() 153 return mutex; in nfp_cpp_mutex_alloc() 160 void nfp_cpp_mutex_free(struct nfp_cpp_mutex *mutex) in nfp_cpp_mutex_free() argument [all …]
|
/openbmc/linux/drivers/gpu/drm/amd/pm/ |
H A D | amdgpu_dpm.c | 49 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_get_sclk() 52 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_get_sclk() 65 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_get_mclk() 68 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_get_mclk() 85 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_set_powergating_by_smu() 107 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_set_powergating_by_smu() 117 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_set_gfx_power_up_by_imu() 119 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_set_gfx_power_up_by_imu() 135 mutex_lock(&adev->pm.mutex); in amdgpu_dpm_baco_enter() 140 mutex_unlock(&adev->pm.mutex); in amdgpu_dpm_baco_enter() [all …]
|
/openbmc/linux/drivers/soc/mediatek/ |
H A D | mtk-mutex.c | 316 struct mtk_mutex mutex[MTK_MUTEX_MAX_HANDLES]; member 722 if (!mtx->mutex[i].claimed) { in mtk_mutex_get() 723 mtx->mutex[i].claimed = true; in mtk_mutex_get() 724 return &mtx->mutex[i]; in mtk_mutex_get() 731 void mtk_mutex_put(struct mtk_mutex *mutex) in mtk_mutex_put() argument 733 struct mtk_mutex_ctx *mtx = container_of(mutex, struct mtk_mutex_ctx, in mtk_mutex_put() 734 mutex[mutex->id]); in mtk_mutex_put() 736 WARN_ON(&mtx->mutex[mutex->id] != mutex); in mtk_mutex_put() 738 mutex->claimed = false; in mtk_mutex_put() 742 int mtk_mutex_prepare(struct mtk_mutex *mutex) in mtk_mutex_prepare() argument [all …]
|
/openbmc/qemu/include/qemu/ |
H A D | thread.h | 26 void qemu_mutex_init(QemuMutex *mutex); 27 void qemu_mutex_destroy(QemuMutex *mutex); 28 int TSA_NO_TSA qemu_mutex_trylock_impl(QemuMutex *mutex, const char *file, 30 void TSA_NO_TSA qemu_mutex_lock_impl(QemuMutex *mutex, const char *file, 32 void TSA_NO_TSA qemu_mutex_unlock_impl(QemuMutex *mutex, const char *file, 35 void qemu_rec_mutex_init(QemuRecMutex *mutex); 36 void qemu_rec_mutex_destroy(QemuRecMutex *mutex); 37 void qemu_rec_mutex_lock_impl(QemuRecMutex *mutex, const char *file, int line); 38 int qemu_rec_mutex_trylock_impl(QemuRecMutex *mutex, const char *file, int line); 39 void qemu_rec_mutex_unlock_impl(QemuRecMutex *mutex, const char *file, int line); [all …]
|
/openbmc/linux/Documentation/translations/zh_CN/locking/ |
H A D | mutex-design.rst | 4 :Original: Documentation/locking/mutex-design.rst 25 在Linux内核中,互斥锁(mutex)指的是一个特殊的加锁原语,它在共享内存系统上 36 互斥锁由“struct mutex”表示,在include/linux/mutex.h中定义,并在 37 kernel/locking/mutex.c中实现。这些锁使用一个原子变量(->owner)来跟踪 107 mutex_init(mutex); 111 void mutex_lock(struct mutex *lock); 112 void mutex_lock_nested(struct mutex *lock, unsigned int subclass); 113 int mutex_trylock(struct mutex *lock); 117 int mutex_lock_interruptible_nested(struct mutex *lock, 119 int mutex_lock_interruptible(struct mutex *lock); [all …]
|
/openbmc/linux/include/linux/soc/mediatek/ |
H A D | mtk-mutex.h | 71 int mtk_mutex_prepare(struct mtk_mutex *mutex); 72 void mtk_mutex_add_comp(struct mtk_mutex *mutex, 74 void mtk_mutex_enable(struct mtk_mutex *mutex); 75 int mtk_mutex_enable_by_cmdq(struct mtk_mutex *mutex, 77 void mtk_mutex_disable(struct mtk_mutex *mutex); 78 void mtk_mutex_remove_comp(struct mtk_mutex *mutex, 80 void mtk_mutex_unprepare(struct mtk_mutex *mutex); 81 void mtk_mutex_put(struct mtk_mutex *mutex); 82 void mtk_mutex_acquire(struct mtk_mutex *mutex); 83 void mtk_mutex_release(struct mtk_mutex *mutex); [all …]
|
/openbmc/linux/kernel/locking/ |
H A D | mutex.c | 46 __mutex_init(struct mutex *lock, const char *name, struct lock_class_key *key) in __mutex_init() 79 static inline struct task_struct *__mutex_owner(struct mutex *lock) in __mutex_owner() 89 bool mutex_is_locked(struct mutex *lock) in mutex_is_locked() 103 static inline struct task_struct *__mutex_trylock_common(struct mutex *lock, bool handoff) in __mutex_trylock_common() 142 static inline bool __mutex_trylock_or_handoff(struct mutex *lock, bool handoff) in __mutex_trylock_or_handoff() 150 static inline bool __mutex_trylock(struct mutex *lock) in __mutex_trylock() 166 static __always_inline bool __mutex_trylock_fast(struct mutex *lock) in __mutex_trylock_fast() 177 static __always_inline bool __mutex_unlock_fast(struct mutex *lock) in __mutex_unlock_fast() 185 static inline void __mutex_set_flag(struct mutex *lock, unsigned long flag) in __mutex_set_flag() 190 static inline void __mutex_clear_flag(struct mutex *lock, unsigned long flag) in __mutex_clear_flag() [all …]
|
/openbmc/linux/drivers/vhost/ |
H A D | test.c | 51 mutex_lock(&vq->mutex); in handle_vq() 54 mutex_unlock(&vq->mutex); in handle_vq() 93 mutex_unlock(&vq->mutex); in handle_vq() 135 mutex_lock(&vq->mutex); in vhost_test_stop_vq() 138 mutex_unlock(&vq->mutex); in vhost_test_stop_vq() 175 mutex_lock(&n->dev.mutex); in vhost_test_run() 190 mutex_lock(&vq->mutex); in vhost_test_run() 199 mutex_unlock(&vq->mutex); in vhost_test_run() 209 mutex_unlock(&n->dev.mutex); in vhost_test_run() 213 mutex_unlock(&n->dev.mutex); in vhost_test_run() [all …]
|
/openbmc/linux/drivers/net/wireless/realtek/rtw89/ |
H A D | mac80211.c | 62 mutex_lock(&rtwdev->mutex); in rtw89_ops_start() 64 mutex_unlock(&rtwdev->mutex); in rtw89_ops_start() 73 mutex_lock(&rtwdev->mutex); in rtw89_ops_stop() 75 mutex_unlock(&rtwdev->mutex); in rtw89_ops_stop() 85 mutex_lock(&rtwdev->mutex); in rtw89_ops_config() 103 mutex_unlock(&rtwdev->mutex); in rtw89_ops_config() 118 mutex_lock(&rtwdev->mutex); in rtw89_ops_add_interface() 168 mutex_unlock(&rtwdev->mutex); in rtw89_ops_add_interface() 185 mutex_lock(&rtwdev->mutex); in rtw89_ops_remove_interface() 194 mutex_unlock(&rtwdev->mutex); in rtw89_ops_remove_interface() [all …]
|
/openbmc/linux/drivers/net/wireless/realtek/rtw88/ |
H A D | mac80211.c | 58 mutex_lock(&rtwdev->mutex); in rtw_ops_start() 60 mutex_unlock(&rtwdev->mutex); in rtw_ops_start() 69 mutex_lock(&rtwdev->mutex); in rtw_ops_stop() 71 mutex_unlock(&rtwdev->mutex); in rtw_ops_stop() 82 mutex_lock(&rtwdev->mutex); in rtw_ops_config() 104 mutex_unlock(&rtwdev->mutex); in rtw_ops_config() 168 mutex_lock(&rtwdev->mutex); in rtw_ops_add_interface() 172 mutex_unlock(&rtwdev->mutex); in rtw_ops_add_interface() 201 mutex_unlock(&rtwdev->mutex); in rtw_ops_add_interface() 215 mutex_unlock(&rtwdev->mutex); in rtw_ops_add_interface() [all …]
|
/openbmc/linux/Documentation/locking/ |
H A D | mutex-design.rst | 26 Mutexes are represented by 'struct mutex', defined in include/linux/mutex.h 27 and implemented in kernel/locking/mutex.c. These locks use an atomic variable 37 When acquiring a mutex, there are three possible paths that can be 49 soon. The mutex spinners are queued up using MCS lock so that only 50 one spinner can compete for the mutex. 61 waiting to spin on mutex owner, only to go directly to slowpath upon 78 The mutex subsystem checks and enforces the following rules: 80 - Only one task can hold the mutex at a time. 81 - Only the owner can unlock the mutex. 84 - A mutex must only be initialized via the API (see below). [all …]
|
/openbmc/linux/drivers/media/dvb-core/ |
H A D | dmxdev.c | 125 if (mutex_lock_interruptible(&dmxdev->mutex)) in dvb_dvr_open() 129 mutex_unlock(&dmxdev->mutex); in dvb_dvr_open() 153 mutex_unlock(&dmxdev->mutex); in dvb_dvr_open() 163 mutex_unlock(&dmxdev->mutex); in dvb_dvr_open() 168 mutex_unlock(&dmxdev->mutex); in dvb_dvr_open() 182 mutex_unlock(&dmxdev->mutex); in dvb_dvr_open() 189 mutex_unlock(&dmxdev->mutex); in dvb_dvr_open() 196 mutex_unlock(&dmxdev->mutex); in dvb_dvr_open() 205 mutex_lock(&dmxdev->mutex); in dvb_dvr_release() 234 mutex_unlock(&dmxdev->mutex); in dvb_dvr_release() [all …]
|
/openbmc/linux/drivers/mtd/chips/ |
H A D | cfi_cmdset_0020.c | 268 mutex_lock(&chip->mutex); in do_read_onechip() 300 mutex_unlock(&chip->mutex); in do_read_onechip() 306 mutex_unlock(&chip->mutex); in do_read_onechip() 308 mutex_lock(&chip->mutex); in do_read_onechip() 339 mutex_unlock(&chip->mutex); in do_read_onechip() 345 mutex_unlock(&chip->mutex); in do_read_onechip() 355 mutex_unlock(&chip->mutex); in do_read_onechip() 380 mutex_unlock(&chip->mutex); in do_read_onechip() 447 mutex_lock(&chip->mutex); in do_write_buffer() 472 mutex_unlock(&chip->mutex); in do_write_buffer() [all …]
|
/openbmc/linux/drivers/gpu/drm/i915/ |
H A D | intel_wakeref.h | 38 struct mutex mutex; member 49 struct lock_class_key mutex; member 130 might_lock(&wf->mutex); in intel_wakeref_might_get() 181 might_lock(&wf->mutex); in intel_wakeref_might_put() 194 __acquires(wf->mutex) in intel_wakeref_lock() 196 mutex_lock(&wf->mutex); in intel_wakeref_lock() 207 __releases(wf->mutex) in intel_wakeref_unlock() 209 mutex_unlock(&wf->mutex); in intel_wakeref_unlock() 222 mutex_lock(&wf->mutex); in intel_wakeref_unlock_wait() 223 mutex_unlock(&wf->mutex); in intel_wakeref_unlock_wait() [all …]
|
/openbmc/linux/drivers/gpu/drm/mediatek/ |
H A D | mtk_disp_ovl_adaptor.c | 315 void mtk_ovl_adaptor_add_comp(struct device *dev, struct mtk_mutex *mutex) in mtk_ovl_adaptor_add_comp() argument 317 mtk_mutex_add_comp(mutex, DDP_COMPONENT_MDP_RDMA0); in mtk_ovl_adaptor_add_comp() 318 mtk_mutex_add_comp(mutex, DDP_COMPONENT_MDP_RDMA1); in mtk_ovl_adaptor_add_comp() 319 mtk_mutex_add_comp(mutex, DDP_COMPONENT_MDP_RDMA2); in mtk_ovl_adaptor_add_comp() 320 mtk_mutex_add_comp(mutex, DDP_COMPONENT_MDP_RDMA3); in mtk_ovl_adaptor_add_comp() 321 mtk_mutex_add_comp(mutex, DDP_COMPONENT_MDP_RDMA4); in mtk_ovl_adaptor_add_comp() 322 mtk_mutex_add_comp(mutex, DDP_COMPONENT_MDP_RDMA5); in mtk_ovl_adaptor_add_comp() 323 mtk_mutex_add_comp(mutex, DDP_COMPONENT_MDP_RDMA6); in mtk_ovl_adaptor_add_comp() 324 mtk_mutex_add_comp(mutex, DDP_COMPONENT_MDP_RDMA7); in mtk_ovl_adaptor_add_comp() 325 mtk_mutex_add_comp(mutex, DDP_COMPONENT_MERGE1); in mtk_ovl_adaptor_add_comp() [all …]
|
/openbmc/linux/drivers/media/usb/uvc/ |
H A D | uvc_queue.c | 227 queue->queue.lock = &queue->mutex; in uvc_queue_init() 243 mutex_init(&queue->mutex); in uvc_queue_init() 253 mutex_lock(&queue->mutex); in uvc_queue_release() 255 mutex_unlock(&queue->mutex); in uvc_queue_release() 267 mutex_lock(&queue->mutex); in uvc_request_buffers() 269 mutex_unlock(&queue->mutex); in uvc_request_buffers() 278 mutex_lock(&queue->mutex); in uvc_query_buffer() 280 mutex_unlock(&queue->mutex); in uvc_query_buffer() 290 mutex_lock(&queue->mutex); in uvc_create_buffers() 292 mutex_unlock(&queue->mutex); in uvc_create_buffers() [all …]
|
/openbmc/qemu/scripts/ |
H A D | analyse-locks-simpletrace.py | 22 def _get_mutex(self, mutex): argument 23 if not mutex in self.mutex_records: 24 self.mutex_records[mutex] = {"locks": 0, 32 return self.mutex_records[mutex] 34 def qemu_mutex_lock(self, timestamp, mutex, filename, line): argument 36 rec = self._get_mutex(mutex) 41 def qemu_mutex_locked(self, timestamp, mutex, filename, line): argument 43 rec = self._get_mutex(mutex) 50 def qemu_mutex_unlock(self, timestamp, mutex, filename, line): argument 52 rec = self._get_mutex(mutex)
|
/openbmc/linux/net/ceph/ |
H A D | auth.c | 66 mutex_init(&ac->mutex); in ceph_auth_init() 94 mutex_lock(&ac->mutex); in ceph_auth_reset() 99 mutex_unlock(&ac->mutex); in ceph_auth_reset() 128 mutex_lock(&ac->mutex); in ceph_auth_build_hello() 156 mutex_unlock(&ac->mutex); in ceph_auth_build_hello() 213 mutex_lock(&ac->mutex); in ceph_handle_auth_reply() 275 mutex_unlock(&ac->mutex); in ceph_handle_auth_reply() 289 mutex_lock(&ac->mutex); in ceph_build_auth() 292 mutex_unlock(&ac->mutex); in ceph_build_auth() 300 mutex_lock(&ac->mutex); in ceph_auth_is_authenticated() [all …]
|