1 /* Copyright (c) 2018-2023. The SimGrid Team. All rights reserved. */
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. */
6 #ifndef SMPI_HELPERS_INTERNAL_H
7 #define SMPI_HELPERS_INTERNAL_H
10 #include <stdio.h> /* for getopt() on OpenIndiana, don't remove */
11 #include <stdlib.h> /* for getopt() on OpenIndiana, don't remove */
15 #include <sys/types.h>
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. */
30 int smpi_usleep(useconds_t usecs);
32 int smpi_nanosleep(const struct timespec* tp, struct timespec* t);
33 int smpi_clock_gettime(clockid_t clk_id, struct timespec* tp);
35 unsigned int smpi_sleep(unsigned int secs);
36 int smpi_gettimeofday(struct timeval* tv, struct timezone* tz);
38 int smpi_getopt_long_only(int argc, char* const* argv, const char* options, const struct option* long_options,
40 int smpi_getopt_long(int argc, char* const* argv, const char* options, const struct option* long_options,
42 int smpi_getopt(int argc, char* const* argv, const char* options);
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);
55 void smpi_exit(int status);
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);
67 extern "C" [[noreturn]] void smpi_exit(int status);