Loading...
Searching...
No Matches
syscalls.h
1/*
2 * Copyright (C) 2013 Ludwig Knüpfer <ludwig.knuepfer@fu-berlin.de>
3 *
4 * This file is subject to the terms and conditions of the GNU Lesser
5 * General Public License v2.1. See the file LICENSE in the top level
6 * directory for more details.
7 */
8
9#pragma once
10
11#include <sys/time.h>
12#include <stdint.h>
13#include <ifaddrs.h>
14#include <stdio.h>
15
20
21#ifndef DOXYGEN
22# if NATIVE_SYSCALLS_DEFINITION
23# define __SPECIFIER
24# else
25# define __SPECIFIER extern
26# endif
27#endif
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
33/* MARK: - System call wrappers */
42__SPECIFIER ssize_t (*real_read)(int fd, void *buf, size_t count);
43__SPECIFIER ssize_t (*real_write)(int fd, const void *buf, size_t count);
44__SPECIFIER size_t (*real_fread)(void *ptr, size_t size, size_t nmemb, FILE *stream);
45__SPECIFIER ssize_t (*real_recv)(int sockfd, void *buf, size_t len, int flags);
46__SPECIFIER void (*real_clearerr)(FILE *stream);
47__SPECIFIER __attribute__((noreturn)) void (*real_exit)(int status);
48__SPECIFIER void (*real_free)(void *ptr);
49__SPECIFIER void* (*real_malloc)(size_t size);
50__SPECIFIER void* (*real_calloc)(size_t nmemb, size_t size);
51__SPECIFIER void* (*real_realloc)(void *ptr, size_t size);
52__SPECIFIER void (*real_freeaddrinfo)(struct addrinfo *res);
53__SPECIFIER void (*real_freeifaddrs)(struct ifaddrs *ifa);
54__SPECIFIER void (*real_srandom)(unsigned int seed);
55__SPECIFIER int (*real_accept)(int socket, ...);
56__SPECIFIER int (*real_bind)(int socket, ...);
57__SPECIFIER int (*real_connect)(int socket, ...);
58__SPECIFIER int (*real_printf)(const char *format, ...);
59__SPECIFIER int (*real_getaddrinfo)(const char *node, ...);
60__SPECIFIER int (*real_getifaddrs)(struct ifaddrs **ifap);
61__SPECIFIER int (*real_gettimeofday)(struct timeval *t, ...);
62__SPECIFIER int (*real_getpid)(void);
63__SPECIFIER int (*real_chdir)(const char *path);
64__SPECIFIER int (*real_close)(int);
65__SPECIFIER int (*real_fcntl)(int, int, ...);
66__SPECIFIER int (*real_creat)(const char *path, ...);
67__SPECIFIER int (*real_dup2)(int, int);
68__SPECIFIER int (*real_execve)(const char *, char *const[], char *const[]);
69__SPECIFIER int (*real_fork)(void);
70__SPECIFIER int (*real_feof)(FILE *stream);
71__SPECIFIER int (*real_ferror)(FILE *stream);
72__SPECIFIER int (*real_listen)(int socket, int backlog);
73__SPECIFIER int (*real_ioctl)(int fildes, unsigned long request, ...);
74__SPECIFIER int (*real_open)(const char *path, int oflag, ...);
75__SPECIFIER int (*real_pause)(void);
76__SPECIFIER int (*real_pipe)(int[2]);
77__SPECIFIER int (*real_select)(int nfds, ...);
78__SPECIFIER int (*real_poll)(struct pollfd *fds, ...);
79__SPECIFIER int (*real_setsid)(void);
80__SPECIFIER int (*real_setsockopt)(int socket, ...);
81__SPECIFIER int (*real_socket)(int domain, int type, int protocol);
82__SPECIFIER int (*real_unlink)(const char *);
83__SPECIFIER long int (*real_random)(void);
84__SPECIFIER const char* (*real_gai_strerror)(int errcode);
85__SPECIFIER FILE* (*real_fopen)(const char *path, const char *mode);
86__SPECIFIER int (*real_fclose)(FILE *stream);
87__SPECIFIER int (*real_fseek)(FILE *stream, long offset, int whence);
88__SPECIFIER long (*real_ftell)(FILE *stream);
89__SPECIFIER int (*real_fputc)(int c, FILE *stream);
90__SPECIFIER int (*real_fgetc)(FILE *stream);
91__SPECIFIER mode_t (*real_umask)(mode_t cmask);
92__SPECIFIER ssize_t (*real_writev)(int fildes, const struct iovec *iov, int iovcnt);
93__SPECIFIER ssize_t (*real_send)(int sockfd, const void *buf, size_t len, int flags);
94__SPECIFIER off_t (*real_lseek)(int fd, off_t offset, int whence);
95__SPECIFIER off_t (*real_fstat)(int fd, struct stat *statbuf);
96__SPECIFIER int (*real_fsync)(int fd);
97__SPECIFIER int (*real_mkdir)(const char *pathname, mode_t mode);
98__SPECIFIER int (*real_rmdir)(const char *pathname);
99__SPECIFIER DIR *(*real_opendir)(const char *name);
100__SPECIFIER struct dirent *(*real_readdir)(DIR *dirp);
101__SPECIFIER int (*real_closedir)(DIR *dirp);
102__SPECIFIER int (*real_rename)(const char *, const char *);
103__SPECIFIER int (*real_statvfs)(const char *restrict path, struct statvfs *restrict buf);
106
107#ifdef __cplusplus
108}
109#endif
110
111#if !defined(DOXYGEN)
112# undef __SPECIFIER
113#endif
114
int socket(int domain, int type, int protocol)
Create an endpoint for communication.
Structure for scatter/gather I/O.
Definition uio.h:33
File system information.
Definition statvfs.h:46
Definition of struct timeval for the atmega.
Definition time.h:22