Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'wifi_clean' into 'master'
[simgrid.git] / include / smpi / smpi_helpers_internal.h
1 /* Copyright (c) 2018-2022. The SimGrid Team. All rights reserved.          */
2
3 /* This program is free software; you can redistribute it and/or modify it
4  * under the terms of the license (GNU LGPL) which comes with this package. */
5
6 #ifndef SMPI_HELPERS_INTERNAL_H
7 #define SMPI_HELPERS_INTERNAL_H
8
9 #include <getopt.h>
10 #include <stdio.h>  /* for getopt() on OpenIndiana, don't remove */
11 #include <stdlib.h> /* for getopt() on OpenIndiana, don't remove */
12 #include <unistd.h>
13
14 #include <sys/time.h>
15 #include <sys/types.h>
16 #if _POSIX_TIMERS
17 #include <time.h>
18 #endif
19
20 #if !defined(SMPI_NO_OVERRIDE_MALLOC) && !defined(__GLIBC__)
21 /* For musl libc, <sched.h> must be included before #defining calloc(). Testing if !defined(__GLIBC__) is a bit crude
22  * but I don't know a better way. */
23 #include <sched.h>
24 #endif
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29
30 int smpi_usleep(useconds_t usecs);
31 #if _POSIX_TIMERS > 0
32 int smpi_nanosleep(const struct timespec* tp, struct timespec* t);
33 int smpi_clock_gettime(clockid_t clk_id, struct timespec* tp);
34 #endif
35 unsigned int smpi_sleep(unsigned int secs);
36 int smpi_gettimeofday(struct timeval* tv, struct timezone* tz);
37
38 int smpi_getopt_long_only(int argc, char* const* argv, const char* options, const struct option* long_options,
39                           int* opt_index);
40 int smpi_getopt_long(int argc, char* const* argv, const char* options, const struct option* long_options,
41                      int* opt_index);
42 int smpi_getopt(int argc, char* const* argv, const char* options);
43
44 void* smpi_shared_malloc_intercept(size_t size, const char* file, int line);
45 void* smpi_shared_calloc_intercept(size_t num_elm, size_t elem_size, const char* file, int line);
46 void* smpi_shared_realloc_intercept(void* data, size_t size, const char* file, int line);
47 void smpi_shared_free(void* data);
48
49 pid_t smpi_getpid();
50 #ifdef __cplusplus
51 [[noreturn]] // c++11
52 #else
53 _Noreturn // c11
54 #endif
55 void smpi_exit(int status);
56 #ifdef __cplusplus
57 } // extern "C"
58 #endif
59
60 #ifdef __cplusplus
61 namespace std {
62 extern "C" void* smpi_shared_malloc_intercept(size_t size, const char* file, int line);
63 extern "C" void* smpi_shared_calloc_intercept(size_t num_elm, size_t elem_size, const char* file, int line);
64 extern "C" void* smpi_shared_realloc_intercept(void* data, size_t size, const char* file, int line);
65 extern "C" void smpi_shared_free(void* ptr);
66
67 extern "C" [[noreturn]] void smpi_exit(int status);
68 } // namespace std
69 #endif
70 #endif