| /Linux-v6.6/include/linux/ |
| D | mutex.h | 39 * - only one task can hold the mutex at a time 40 * - only the owner can unlock the mutex 43 * - a mutex object must be initialized via the API 44 * - a mutex object must not be initialized via memset or copying 45 * - task may not exit with mutex held 52 * enabled. Furthermore, besides enforcing the above rules, the mutex 64 struct mutex { struct 84 extern void mutex_destroy(struct mutex *lock); argument 90 static inline void mutex_destroy(struct mutex *lock) {} in mutex_destroy() 95 * mutex_init - initialize the mutex [all …]
|
| D | ww_mutex.h | 5 * Original mutex implementation started by Ingo Molnar: 20 #include <linux/mutex.h> 29 #define WW_MUTEX_BASE mutex 88 * ww_mutex_init - initialize the w/w mutex 89 * @lock: the mutex to be initialized 90 * @ww_class: the w/w class the mutex should belong to 92 * Initialize the w/w mutex to unlocked state and associate it with the given 93 * class. Static define macro for w/w mutex is not provided and this function 94 * is the only way to properly initialize the w/w mutex. 96 * It is not allowed to initialize an already locked mutex. [all …]
|
| /Linux-v6.6/drivers/net/ethernet/netronome/nfp/nfpcore/ |
| D | nfp_mutex.c | 69 * nfp_cpp_mutex_init() - Initialize a mutex location 73 * @key: Unique 32-bit value for this mutex 78 * This creates the initial mutex state, as locked by this 109 * nfp_cpp_mutex_alloc() - Create a mutex handle 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() [all …]
|
| /Linux-v6.6/drivers/acpi/acpica/ |
| D | exmutex.c | 4 * Module Name: exmutex - ASL Mutex Acquire/Release functions 27 * PARAMETERS: obj_desc - The mutex to be unlinked 31 * DESCRIPTION: Remove a mutex from the "AcquiredMutex" list 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() 53 * Migrate the previous sync level associated with this mutex to in acpi_ex_unlink_mutex() 54 * the previous mutex on the list so that it may be preserved. in acpi_ex_unlink_mutex() [all …]
|
| D | utxfmutex.c | 4 * Module Name: utxfmutex - external AML mutex access functions 25 * PARAMETERS: handle - Mutex or prefix handle (optional) 26 * pathname - Mutex pathname (optional) 27 * ret_obj - Where the mutex object is returned 31 * DESCRIPTION: Get an AML mutex object. The mutex node is pointed to by 52 /* Get a the namespace node for the mutex */ in acpi_ut_get_mutex_object() 64 /* Ensure that we actually have a Mutex object */ in acpi_ut_get_mutex_object() 70 /* Get the low-level mutex object */ in acpi_ut_get_mutex_object() 85 * PARAMETERS: handle - Mutex or prefix handle (optional) 86 * pathname - Mutex pathname (optional) [all …]
|
| D | utmutex.c | 4 * Module Name: utmutex - local mutex support 27 * DESCRIPTION: Create the system mutex objects. This includes mutexes, 39 /* Create each of the predefined mutex objects */ in acpi_ut_mutex_initialize() 65 /* Mutex for _OSI support */ in acpi_ut_mutex_initialize() 90 * DESCRIPTION: Delete all of the system mutex objects. This includes mutexes, 101 /* Delete each predefined mutex object */ in acpi_ut_mutex_terminate() 125 * PARAMETERS: mutex_ID - ID of the mutex to be created 129 * DESCRIPTION: Create a mutex object. 139 if (!acpi_gbl_mutex_info[mutex_id].mutex) { in acpi_ut_create_mutex() 141 acpi_os_create_mutex(&acpi_gbl_mutex_info[mutex_id].mutex); in acpi_ut_create_mutex() [all …]
|
| D | dsmethod.c | 138 * Mark the method as serialized. Later code will create a mutex for in acpi_ds_detect_named_opcodes() 242 * DESCRIPTION: Create a mutex object for a serialized control method 254 /* Create the new mutex object */ in acpi_ds_create_method_mutex() 261 /* Create the actual OS Mutex */ in acpi_ds_create_method_mutex() 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() 315 * If this method is serialized, we need to acquire the method mutex. in acpi_ds_begin_method_execution() 319 * Create a mutex for the method if it is defined to be Serialized in acpi_ds_begin_method_execution() 320 * and a mutex has not already been created. We defer the mutex creation in acpi_ds_begin_method_execution() [all …]
|
| /Linux-v6.6/Documentation/devicetree/bindings/soc/mediatek/ |
| D | mediatek,mutex.yaml | 4 $id: http://devicetree.org/schemas/soc/mediatek/mediatek,mutex.yaml# 7 title: Mediatek mutex 14 Mediatek mutex, namely MUTEX, is used to send the triggers signals called 17 In some SoC, such as mt2701, MUTEX could be a hardware mutex which protects 19 MUTEX device node must be siblings to the central MMSYS_CONFIG node. 27 - mediatek,mt2701-disp-mutex 28 - mediatek,mt2712-disp-mutex 29 - mediatek,mt6795-disp-mutex 30 - mediatek,mt8167-disp-mutex 31 - mediatek,mt8173-disp-mutex [all …]
|
| /Linux-v6.6/drivers/gpu/drm/amd/pm/ |
| 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 …]
|
| /Linux-v6.6/drivers/soc/mediatek/ |
| D | mtk-mutex.c | 13 #include <linux/soc/mediatek/mtk-mutex.h> 316 struct mtk_mutex mutex[MTK_MUTEX_MAX_HANDLES]; member 598 * So that MUTEX can not only send a STREAM_DONE event to GCE 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() [all …]
|
| /Linux-v6.6/Documentation/locking/ |
| D | mutex-design.rst | 2 Generic Mutex Subsystem 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. [all …]
|
| D | rt-mutex-design.rst | 2 RT-mutex implementation design 12 Documentation/locking/rt-mutex.rst. Although this document does explain problems 27 to use a resource that a lower priority process has (a mutex for example), 85 mutex 88 the PI locks will be called a mutex. 103 a process being blocked on the mutex, it is fine to allocate 105 structure holds a pointer to the task, as well as the mutex that 107 place the task in the waiters rbtree of a mutex as well as the 108 pi_waiters rbtree of a mutex owner task (described below). 111 on a mutex. This is the same as waiter->task. [all …]
|
| D | futex-requeue-pi.rst | 8 boosting logic [see rt-mutex-design.rst] For the purposes of 21 rest to the natural wakeup inherent in unlocking the mutex 26 /* caller must lock mutex */ 27 pthread_cond_wait(cond, mutex) 30 unlock(mutex); 37 lock(mutex); 44 futex_requeue(cond->data.__futex, cond->mutex); 47 Once pthread_cond_broadcast() requeues the tasks, the cond->mutex 49 mutex only after it has returned to user space. This will leave the 60 /* caller must lock mutex */ [all …]
|
| /Linux-v6.6/kernel/locking/ |
| D | mutex.c | 3 * kernel/locking/mutex.c 19 * Also see Documentation/locking/mutex-design.rst. 21 #include <linux/mutex.h> 37 #include "mutex.h" 46 __mutex_init(struct mutex *lock, const char *name, struct lock_class_key *key) in __mutex_init() 77 * DO NOT USE (outside of mutex code). 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() [all …]
|
| D | mutex-debug.c | 13 #include <linux/mutex.h> 23 #include "mutex.h" 28 void debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter) in debug_mutex_lock_common() 36 void debug_mutex_wake_waiter(struct mutex *lock, struct mutex_waiter *waiter) in debug_mutex_wake_waiter() 50 void debug_mutex_add_waiter(struct mutex *lock, struct mutex_waiter *waiter, in debug_mutex_add_waiter() 59 void debug_mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter, in debug_mutex_remove_waiter() 71 void debug_mutex_unlock(struct mutex *lock) in debug_mutex_unlock() 79 void debug_mutex_init(struct mutex *lock, const char *name, in debug_mutex_init() 93 * mutex_destroy - mark a mutex unusable 94 * @lock: the mutex to be destroyed [all …]
|
| /Linux-v6.6/rust/kernel/sync/lock/ |
| D | mutex.rs | 3 //! A kernel mutex. 5 //! This module allows Rust code to use the kernel's `struct mutex`. 9 /// Creates a [`Mutex`] initialiser with the given name and a newly-created lock class. 16 $crate::sync::Mutex::new( 23 /// Exposes the kernel's [`struct mutex`]. When multiple threads attempt to lock the same mutex, 24 /// only one at a time is allowed to progress, the others will block (sleep) until the mutex is 27 /// Since it may block, [`Mutex`] needs to be used with care in atomic contexts. 29 /// Instances of [`Mutex`] need a lock class and to be pinned. The recommended way to create such 35 /// contains an inner struct (`Inner`) that is protected by a mutex. 38 /// use kernel::{init::InPlaceInit, init::PinInit, new_mutex, pin_init, sync::Mutex}; [all …]
|
| /Linux-v6.6/Documentation/translations/zh_CN/locking/ |
| 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 …]
|
| /Linux-v6.6/drivers/net/wireless/realtek/rtw89/ |
| 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() 166 mutex_unlock(&rtwdev->mutex); in rtw89_ops_add_interface() 183 mutex_lock(&rtwdev->mutex); in rtw89_ops_remove_interface() 192 mutex_unlock(&rtwdev->mutex); in rtw89_ops_remove_interface() [all …]
|
| /Linux-v6.6/include/linux/soc/mediatek/ |
| 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 …]
|
| /Linux-v6.6/Documentation/devicetree/bindings/hwlock/ |
| D | qcom-hwspinlock.yaml | 7 title: Qualcomm Hardware Mutex Block 20 - qcom,sfpb-mutex 21 - qcom,tcsr-mutex 24 - qcom,apq8084-tcsr-mutex 25 - qcom,ipq6018-tcsr-mutex 26 - qcom,msm8226-tcsr-mutex 27 - qcom,msm8994-tcsr-mutex 28 - const: qcom,tcsr-mutex 31 - qcom,msm8974-tcsr-mutex 32 - const: qcom,tcsr-mutex [all …]
|
| /Linux-v6.6/drivers/net/wireless/realtek/rtw88/ |
| 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 …]
|
| /Linux-v6.6/drivers/vhost/ |
| D | test.c | 13 #include <linux/mutex.h> 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() [all …]
|
| /Linux-v6.6/drivers/media/dvb-core/ |
| 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 …]
|
| /Linux-v6.6/drivers/gpu/drm/mediatek/ |
| D | mtk_disp_ovl_adaptor.c | 18 #include <linux/soc/mediatek/mtk-mutex.h> 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() [all …]
|
| /Linux-v6.6/tools/perf/util/ |
| D | mutex.h | 24 /* Documents if a shared field or global variable needs to be protected by a mutex. */ 29 * a mutex when dereferencing the pointer. 49 /* Documents a function that expects a mutex to be held prior to entry. */ 69 * A wrapper around the mutex implementation that allows perf to error check 72 struct LOCKABLE mutex { struct 82 void mutex_init(struct mutex *mtx); 87 void mutex_init_pshared(struct mutex *mtx); 88 void mutex_destroy(struct mutex *mtx); 90 void mutex_lock(struct mutex *mtx) EXCLUSIVE_LOCK_FUNCTION(*mtx); 91 void mutex_unlock(struct mutex *mtx) UNLOCK_FUNCTION(*mtx); [all …]
|