allinea_safe_syscalls.h File Reference
Async signal safe I/O functions for use in metric plugins.
#include <stdarg.h>
#include <stdlib.h>
#include <stddef.h>
Include dependency graph for allinea_safe_syscalls.h
:

This graph shows which files directly or indirectly include this file:

Source code
1
5 #ifndef ALLINEA_SAFE_SYSCALLS_H
6 #define ALLINEA_SAFE_SYSCALLS_H
7
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11
12 #include <stdarg.h>
13 #include <stdlib.h>
14 #include <stddef.h>
15
27
33 struct timespec allinea_get_current_time(void);
34
35
37
44 extern int allinea_safe_close(int fd);
45
46
48
53 extern void allinea_safe_fprintf(int fd, const char *format, ...);
54
55
57
67 extern int allinea_safe_open (const char *file, int oflags, ...);
68
69
71
75 extern void allinea_safe_printf(const char *format, ...);
76
77
79
88 extern ssize_t allinea_safe_read(int fd, void *buf, size_t count);
89
90
92
101 extern ssize_t allinea_safe_read_all(int fd, void *buf, size_t count);
102
103
105
115 extern ssize_t allinea_safe_read_all_with_alloc(int fd, void **buf, size_t *count);
116
117
132 extern ssize_t allinea_safe_read_line(int fd, void *buf, size_t count);
133
134
136
141 extern void allinea_safe_vfprintf(int fd, const char *format, va_list ap);
142
143
145
154 extern ssize_t allinea_safe_write(int fd, const void *buf, size_t count);
155
156
158
159 #ifdef __cplusplus
160 }
161 #endif
162
163 #endif
Standard utility functions
Replacements for common libc utility functions.
Most standard libc functions cannot be used because metric library functions need to be async signal safe. In addition, even basic syscalls (such as read
and write
) cannot be used without risking corruption of some other metrics the enclosing profiler might be tracking
(for example, bytes read or bytes written).
These functions can be safely called inside signal handlers and accommodates I/O being done by the metric plugin without corrupting I/O metrics that are tracked by the enclosing profiler:
struct timespec (void)
Gets the current time using the same clock as the enclosing profiler (async-signal-safe).
int (int fd)
Closes the file descriptor
fd
previously opened byallinea_safe_open
(async-signal-safe). See Memory management functions.void (int fd, const char * format,...)
An async-signal-safe version of
fprintf
.int (const char * file, int oflags,...)
Opens the given file for reading or writing (async-signal-safe).
void (const char * format,...)
An async-signal-safe replacement for
printf
.ssize_t (int fd, void * buf, size_t count)
Reads up to count bytes from
buf
tofd
(async-signal-safe)ssize_t (int fd, void * buf, size_t count)
Reads the entire contents of
fd
intobuf
(async-signal-safe).ssize_t (int fd, void * buf, size_t * count)
Reads the entire contents of
fd
intobuf
(async-signal-safe).ssize_t (int fd, void * buf, size_t count)
Reads a line from
fd
intobuf
(async-signal-safe).void (int fd, const char * format, va_list ap)
An async-signal-safe version of
vfprintf
.ssize_t (int fd, const void * buf, size_t count)
Writes up to count bytes from
buf
tofd
(async-signal-safe).
See also