qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

os-posix.h (3114B)


      1 /*
      2  * posix specific declarations
      3  *
      4  * Copyright (c) 2003-2008 Fabrice Bellard
      5  * Copyright (c) 2010 Jes Sorensen <Jes.Sorensen@redhat.com>
      6  *
      7  * Permission is hereby granted, free of charge, to any person obtaining a copy
      8  * of this software and associated documentation files (the "Software"), to deal
      9  * in the Software without restriction, including without limitation the rights
     10  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     11  * copies of the Software, and to permit persons to whom the Software is
     12  * furnished to do so, subject to the following conditions:
     13  *
     14  * The above copyright notice and this permission notice shall be included in
     15  * all copies or substantial portions of the Software.
     16  *
     17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
     20  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     22  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     23  * THE SOFTWARE.
     24  */
     25 
     26 #ifndef QEMU_OS_POSIX_H
     27 #define QEMU_OS_POSIX_H
     28 
     29 #include <sys/mman.h>
     30 #include <sys/socket.h>
     31 #include <netinet/in.h>
     32 #include <netinet/tcp.h>
     33 #include <arpa/inet.h>
     34 #include <netdb.h>
     35 #include <sys/un.h>
     36 
     37 #ifdef CONFIG_SYSMACROS
     38 #include <sys/sysmacros.h>
     39 #endif
     40 
     41 #ifdef __cplusplus
     42 extern "C" {
     43 #endif
     44 
     45 int os_parse_cmd_args(int index, const char *optarg);
     46 void os_set_line_buffering(void);
     47 void os_setup_early_signal_handling(void);
     48 void os_set_proc_name(const char *s);
     49 void os_setup_signal_handling(void);
     50 void os_daemonize(void);
     51 void os_setup_post(void);
     52 int os_mlock(void);
     53 
     54 #define closesocket(s) close(s)
     55 #define ioctlsocket(s, r, v) ioctl(s, r, v)
     56 
     57 int os_set_daemonize(bool d);
     58 bool is_daemonized(void);
     59 
     60 /**
     61  * qemu_alloc_stack:
     62  * @sz: pointer to a size_t holding the requested usable stack size
     63  *
     64  * Allocate memory that can be used as a stack, for instance for
     65  * coroutines. If the memory cannot be allocated, this function
     66  * will abort (like g_malloc()). This function also inserts an
     67  * additional guard page to catch a potential stack overflow.
     68  * Note that the memory required for the guard page and alignment
     69  * and minimal stack size restrictions will increase the value of sz.
     70  *
     71  * The allocated stack must be freed with qemu_free_stack().
     72  *
     73  * Returns: pointer to (the lowest address of) the stack memory.
     74  */
     75 void *qemu_alloc_stack(size_t *sz);
     76 
     77 /**
     78  * qemu_free_stack:
     79  * @stack: stack to free
     80  * @sz: size of stack in bytes
     81  *
     82  * Free a stack allocated via qemu_alloc_stack(). Note that sz must
     83  * be exactly the adjusted stack size returned by qemu_alloc_stack.
     84  */
     85 void qemu_free_stack(void *stack, size_t sz);
     86 
     87 /* POSIX and Mingw32 differ in the name of the stdio lock functions.  */
     88 
     89 static inline void qemu_flockfile(FILE *f)
     90 {
     91     flockfile(f);
     92 }
     93 
     94 static inline void qemu_funlockfile(FILE *f)
     95 {
     96     funlockfile(f);
     97 }
     98 
     99 #ifdef __cplusplus
    100 }
    101 #endif
    102 
    103 #endif