File: smpi_helpers_internal.h

package info (click to toggle)
simgrid 4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 38,980 kB
  • sloc: cpp: 123,583; ansic: 66,779; python: 8,358; java: 6,406; fortran: 6,079; f90: 5,123; xml: 4,587; sh: 2,337; perl: 1,436; makefile: 105; lisp: 49; javascript: 7; sed: 6
file content (70 lines) | stat: -rw-r--r-- 2,446 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/* Copyright (c) 2018-2025. The SimGrid Team. All rights reserved.          */

/* This program is free software; you can redistribute it and/or modify it
 * under the terms of the license (GNU LGPL) which comes with this package. */

#ifndef SMPI_HELPERS_INTERNAL_H
#define SMPI_HELPERS_INTERNAL_H

#include <getopt.h>
#include <stdio.h>  /* for getopt() on OpenIndiana, don't remove */
#include <stdlib.h> /* for getopt() on OpenIndiana, don't remove */
#include <unistd.h>

#include <sys/time.h>
#include <sys/types.h>
#if _POSIX_TIMERS
#include <time.h>
#endif

#if !defined(SMPI_NO_OVERRIDE_MALLOC) && !defined(__GLIBC__)
/* For musl libc, <sched.h> must be included before #defining calloc(). Testing if !defined(__GLIBC__) is a bit crude
 * but I don't know a better way. */
#include <sched.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

int smpi_usleep(useconds_t usecs);
#if _POSIX_TIMERS > 0
int smpi_nanosleep(const struct timespec* tp, struct timespec* t);
int smpi_clock_gettime(clockid_t clk_id, struct timespec* tp);
#endif
unsigned int smpi_sleep(unsigned int secs);
int smpi_gettimeofday(struct timeval* tv, struct timezone* tz);

int smpi_getopt_long_only(int argc, char* const* argv, const char* options, const struct option* long_options,
                          int* opt_index);
int smpi_getopt_long(int argc, char* const* argv, const char* options, const struct option* long_options,
                     int* opt_index);
int smpi_getopt(int argc, char* const* argv, const char* options);

void* smpi_shared_malloc_intercept(size_t size, const char* file, int line);
void* smpi_shared_calloc_intercept(size_t num_elm, size_t elem_size, const char* file, int line);
void* smpi_shared_realloc_intercept(void* data, size_t size, const char* file, int line);
void smpi_shared_free(void* data);

pid_t smpi_getpid();
#ifdef __cplusplus
[[noreturn]] // c++11
#else
_Noreturn // c11
#endif
void smpi_exit(int status);
#ifdef __cplusplus
} // extern "C"
#endif

#ifdef __cplusplus
namespace std {
extern "C" void* smpi_shared_malloc_intercept(size_t size, const char* file, int line);
extern "C" void* smpi_shared_calloc_intercept(size_t num_elm, size_t elem_size, const char* file, int line);
extern "C" void* smpi_shared_realloc_intercept(void* data, size_t size, const char* file, int line);
extern "C" void smpi_shared_free(void* ptr);

extern "C" [[noreturn]] void smpi_exit(int status);
} // namespace std
#endif
#endif