xref: /linux/sound/core/seq/seq_lock.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
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