Serenity Operating System
1/*
2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <bits/wchar.h>
10#include <stddef.h>
11#include <sys/cdefs.h>
12#include <sys/types.h>
13
14__BEGIN_DECLS
15
16#define EXIT_SUCCESS 0
17#define EXIT_FAILURE 1
18
19__attribute__((noreturn)) void _abort(void);
20
21__attribute__((malloc)) __attribute__((alloc_size(1))) void* malloc(size_t);
22__attribute__((malloc)) __attribute__((alloc_size(1, 2))) void* calloc(size_t nmemb, size_t);
23size_t malloc_size(void const*);
24size_t malloc_good_size(size_t);
25void serenity_dump_malloc_stats(void);
26void free(void*);
27__attribute__((alloc_size(2))) void* realloc(void* ptr, size_t);
28char* getenv(char const* name);
29char* secure_getenv(char const* name);
30int putenv(char*);
31int serenity_putenv(char const* new_var, size_t length);
32int unsetenv(char const*);
33int clearenv(void);
34int setenv(char const* name, char const* value, int overwrite);
35char const* getprogname(void);
36void setprogname(char const*);
37int atoi(char const*);
38long atol(char const*);
39long long atoll(char const*);
40double strtod(char const*, char** endptr);
41long double strtold(char const*, char** endptr);
42float strtof(char const*, char** endptr);
43long strtol(char const*, char** endptr, int base);
44long long strtoll(char const*, char** endptr, int base);
45unsigned long long strtoull(char const*, char** endptr, int base);
46unsigned long strtoul(char const*, char** endptr, int base);
47void qsort(void* base, size_t nmemb, size_t size, int (*compar)(void const*, void const*));
48void qsort_r(void* base, size_t nmemb, size_t size, int (*compar)(void const*, void const*, void*), void* arg);
49int atexit(void (*function)(void));
50__attribute__((noreturn)) void exit(int status);
51__attribute__((noreturn)) void abort(void);
52char* ptsname(int fd);
53int ptsname_r(int fd, char* buffer, size_t);
54int abs(int);
55long labs(long);
56long long int llabs(long long int);
57double atof(char const*);
58int system(char const* command);
59char* mktemp(char*);
60int mkstemp(char*);
61int mkstemps(char*, int);
62char* mkdtemp(char*);
63void* bsearch(void const* key, void const* base, size_t nmemb, size_t size, int (*compar)(void const*, void const*));
64int mblen(char const*, size_t);
65size_t mbstowcs(wchar_t*, char const*, size_t);
66int mbtowc(wchar_t*, char const*, size_t);
67int wctomb(char*, wchar_t);
68size_t wcstombs(char*, wchar_t const*, size_t);
69char* realpath(char const* pathname, char* buffer);
70__attribute__((noreturn)) void _Exit(int status);
71
72#define RAND_MAX 32767
73int rand(void);
74void srand(unsigned seed);
75
76long int random(void);
77void srandom(unsigned seed);
78
79uint32_t arc4random(void);
80void arc4random_buf(void*, size_t);
81uint32_t arc4random_uniform(uint32_t);
82
83typedef struct {
84 int quot;
85 int rem;
86} div_t;
87div_t div(int, int);
88typedef struct {
89 long quot;
90 long rem;
91} ldiv_t;
92ldiv_t ldiv(long, long);
93typedef struct {
94 long long quot;
95 long long rem;
96} lldiv_t;
97lldiv_t lldiv(long long, long long);
98
99int posix_openpt(int flags);
100int grantpt(int fd);
101int unlockpt(int fd);
102
103int posix_memalign(void**, size_t alignment, size_t size);
104__attribute__((malloc, alloc_size(2), alloc_align(1))) void* aligned_alloc(size_t alignment, size_t size);
105
106__END_DECLS