1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 21da177e4SLinus Torvalds #ifndef __SND_SEQ_LOCK_H 31da177e4SLinus Torvalds #define __SND_SEQ_LOCK_H 41da177e4SLinus Torvalds 51da177e4SLinus Torvalds #include <linux/sched.h> 61da177e4SLinus Torvalds 71da177e4SLinus Torvalds typedef atomic_t snd_use_lock_t; 81da177e4SLinus Torvalds 91da177e4SLinus Torvalds /* initialize lock */ 101da177e4SLinus Torvalds #define snd_use_lock_init(lockp) atomic_set(lockp, 0) 111da177e4SLinus Torvalds 121da177e4SLinus Torvalds /* increment lock */ 131da177e4SLinus Torvalds #define snd_use_lock_use(lockp) atomic_inc(lockp) 141da177e4SLinus Torvalds 151da177e4SLinus Torvalds /* release lock */ 161da177e4SLinus Torvalds #define snd_use_lock_free(lockp) atomic_dec(lockp) 171da177e4SLinus Torvalds 181da177e4SLinus Torvalds /* wait until all locks are released */ 191da177e4SLinus Torvalds void snd_use_lock_sync_helper(snd_use_lock_t *lock, const char *file, int line); 201da177e4SLinus Torvalds #define snd_use_lock_sync(lockp) snd_use_lock_sync_helper(lockp, __BASE_FILE__, __LINE__) 211da177e4SLinus Torvalds 221da177e4SLinus Torvalds #endif /* __SND_SEQ_LOCK_H */ 23