xref: /qemu/include/exec/mmap-lock.h (revision 01499add2ae6529589002860e1880ff193a6578a)
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 */
34