Module Name: src Committed By: riastradh Date: Sun Dec 19 01:21:23 UTC 2021
Modified Files: src/sys/external/bsd/drm2/include/linux: mutex.h Log Message: recursive locking is bad, do not use this ever. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/drm2/include/linux/mutex.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/drm2/include/linux/mutex.h diff -u src/sys/external/bsd/drm2/include/linux/mutex.h:1.15 src/sys/external/bsd/drm2/include/linux/mutex.h:1.16 --- src/sys/external/bsd/drm2/include/linux/mutex.h:1.15 Sun Dec 19 00:54:46 2021 +++ src/sys/external/bsd/drm2/include/linux/mutex.h Sun Dec 19 01:21:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: mutex.h,v 1.15 2021/12/19 00:54:46 riastradh Exp $ */ +/* $NetBSD: mutex.h,v 1.16 2021/12/19 01:21:22 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -115,4 +115,23 @@ mutex_lock_nested(struct mutex *mutex, u mutex_lock(mutex); } +/* + * `recursive locking is bad, do not use this ever.' + * -- linux/scripts/checkpath.pl + */ +static inline enum { + MUTEX_TRYLOCK_FAILED, + MUTEX_TRYLOCK_SUCCESS, + MUTEX_TRYLOCK_RECURSIVE, +} +mutex_trylock_recursive(struct mutex *mutex) +{ + if (mutex_owned(&mutex->mtx_lock)) + return MUTEX_TRYLOCK_RECURSIVE; + else if (mutex_tryenter(&mutex->mtx_lock)) + return MUTEX_TRYLOCK_SUCCESS; + else + return MUTEX_TRYLOCK_FAILED; +} + #endif /* _LINUX_MUTEX_H_ */