master
h 33 lines 759 Bytes
Raw
1 /*
2 * QEMU user-only mmap lock, with stubs for system mode
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * SPDX-License-Identifier: LGPL-2.1-or-later
7 */
8 #ifndef EXEC_MMAP_LOCK_H
9 #define EXEC_MMAP_LOCK_H
10
11 #ifdef CONFIG_USER_ONLY
12
13 void TSA_NO_TSA mmap_lock(void);
14 void TSA_NO_TSA mmap_unlock(void);
15 bool have_mmap_lock(void);
16
17 static inline void mmap_unlock_guard(void *unused)
18 {
19 mmap_unlock();
20 }
21
22 #define WITH_MMAP_LOCK_GUARD() \
23 for (int _mmap_lock_iter __attribute__((cleanup(mmap_unlock_guard))) \
24 = (mmap_lock(), 0); _mmap_lock_iter == 0; _mmap_lock_iter = 1)
25
26 #else
27
28 static inline void mmap_lock(void) {}
29 static inline void mmap_unlock(void) {}
30 #define WITH_MMAP_LOCK_GUARD()
31
32 #endif /* CONFIG_USER_ONLY */
33 #endif /* EXEC_MMAP_LOCK_H */