diff options
| author | Jani Nikula <jani.nikula@intel.com> | 2025-06-09 12:40:46 +0300 | 
|---|---|---|
| committer | Jani Nikula <jani.nikula@intel.com> | 2025-06-09 12:40:46 +0300 | 
| commit | 34c55367af96f62e89221444f04487440ebc6487 (patch) | |
| tree | fdb36ba67d7dea09455b55037e26043b7e051ef9 /include/linux/mutex.h | |
| parent | 7247efca0dcbc8ac6147db9200ed1549c0662465 (diff) | |
| parent | 19272b37aa4f83ca52bdf9c16d5d81bdd1354494 (diff) | |
| download | linux-34c55367af96f62e89221444f04487440ebc6487.tar.xz | |
Merge drm/drm-next into drm-intel-next
Sync to v6.16-rc1, among other things to get the fixed size GENMASK_U*()
and BIT_U*() macros.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Diffstat (limited to 'include/linux/mutex.h')
| -rw-r--r-- | include/linux/mutex.h | 32 | 
1 files changed, 28 insertions, 4 deletions
diff --git a/include/linux/mutex.h b/include/linux/mutex.h index 2143d05116be..a039fa8c1780 100644 --- a/include/linux/mutex.h +++ b/include/linux/mutex.h @@ -156,16 +156,15 @@ static inline int __devm_mutex_init(struct device *dev, struct mutex *lock)  #ifdef CONFIG_DEBUG_LOCK_ALLOC  extern void mutex_lock_nested(struct mutex *lock, unsigned int subclass);  extern void _mutex_lock_nest_lock(struct mutex *lock, struct lockdep_map *nest_lock); -  extern int __must_check mutex_lock_interruptible_nested(struct mutex *lock,  					unsigned int subclass); -extern int __must_check mutex_lock_killable_nested(struct mutex *lock, -					unsigned int subclass); +extern int __must_check _mutex_lock_killable(struct mutex *lock, +		unsigned int subclass, struct lockdep_map *nest_lock);  extern void mutex_lock_io_nested(struct mutex *lock, unsigned int subclass);  #define mutex_lock(lock) mutex_lock_nested(lock, 0)  #define mutex_lock_interruptible(lock) mutex_lock_interruptible_nested(lock, 0) -#define mutex_lock_killable(lock) mutex_lock_killable_nested(lock, 0) +#define mutex_lock_killable(lock) _mutex_lock_killable(lock, 0, NULL)  #define mutex_lock_io(lock) mutex_lock_io_nested(lock, 0)  #define mutex_lock_nest_lock(lock, nest_lock)				\ @@ -174,6 +173,15 @@ do {									\  	_mutex_lock_nest_lock(lock, &(nest_lock)->dep_map);		\  } while (0) +#define mutex_lock_killable_nest_lock(lock, nest_lock)			\ +(									\ +	typecheck(struct lockdep_map *, &(nest_lock)->dep_map),		\ +	_mutex_lock_killable(lock, 0, &(nest_lock)->dep_map)		\ +) + +#define mutex_lock_killable_nested(lock, subclass) \ +	_mutex_lock_killable(lock, subclass, NULL) +  #else  extern void mutex_lock(struct mutex *lock);  extern int __must_check mutex_lock_interruptible(struct mutex *lock); @@ -183,6 +191,7 @@ extern void mutex_lock_io(struct mutex *lock);  # define mutex_lock_nested(lock, subclass) mutex_lock(lock)  # define mutex_lock_interruptible_nested(lock, subclass) mutex_lock_interruptible(lock)  # define mutex_lock_killable_nested(lock, subclass) mutex_lock_killable(lock) +# define mutex_lock_killable_nest_lock(lock, nest_lock) mutex_lock_killable(lock)  # define mutex_lock_nest_lock(lock, nest_lock) mutex_lock(lock)  # define mutex_lock_io_nested(lock, subclass) mutex_lock_io(lock)  #endif @@ -193,7 +202,22 @@ extern void mutex_lock_io(struct mutex *lock);   *   * Returns 1 if the mutex has been acquired successfully, and 0 on contention.   */ + +#ifdef CONFIG_DEBUG_LOCK_ALLOC +extern int _mutex_trylock_nest_lock(struct mutex *lock, struct lockdep_map *nest_lock); + +#define mutex_trylock_nest_lock(lock, nest_lock)		\ +(								\ +	typecheck(struct lockdep_map *, &(nest_lock)->dep_map),	\ +	_mutex_trylock_nest_lock(lock, &(nest_lock)->dep_map)	\ +) + +#define mutex_trylock(lock) _mutex_trylock_nest_lock(lock, NULL) +#else  extern int mutex_trylock(struct mutex *lock); +#define mutex_trylock_nest_lock(lock, nest_lock) mutex_trylock(lock) +#endif +  extern void mutex_unlock(struct mutex *lock);  extern int atomic_dec_and_mutex_lock(atomic_t *cnt, struct mutex *lock);  | 
