127989a8eSAntonio Nino Diaz /* 227989a8eSAntonio Nino Diaz * Copyright (c) 2012-2017 Roberto E. Vargas Caballero 327989a8eSAntonio Nino Diaz * 427989a8eSAntonio Nino Diaz * SPDX-License-Identifier: BSD-3-Clause 527989a8eSAntonio Nino Diaz */ 6*7c0ff9c4SAntonio Nino Diaz /* 7*7c0ff9c4SAntonio Nino Diaz * Portions copyright (c) 2018, ARM Limited and Contributors. 8*7c0ff9c4SAntonio Nino Diaz * All rights reserved. 9*7c0ff9c4SAntonio Nino Diaz */ 1027989a8eSAntonio Nino Diaz 1127989a8eSAntonio Nino Diaz #ifndef _STDLIB_H 1227989a8eSAntonio Nino Diaz #define _STDLIB_H 1327989a8eSAntonio Nino Diaz 14*7c0ff9c4SAntonio Nino Diaz #include <stdlib_.h> 1527989a8eSAntonio Nino Diaz 1627989a8eSAntonio Nino Diaz #ifndef NULL 1727989a8eSAntonio Nino Diaz #define NULL ((void *) 0) 1827989a8eSAntonio Nino Diaz #endif 1927989a8eSAntonio Nino Diaz 2027989a8eSAntonio Nino Diaz #define _ATEXIT_MAX 32 2127989a8eSAntonio Nino Diaz 2227989a8eSAntonio Nino Diaz #define MB_CUR_MAX 1 2327989a8eSAntonio Nino Diaz #define RAND_MAX 32767 2427989a8eSAntonio Nino Diaz 2527989a8eSAntonio Nino Diaz typedef struct { 2627989a8eSAntonio Nino Diaz int quot, rem; 2727989a8eSAntonio Nino Diaz } div_t; 2827989a8eSAntonio Nino Diaz 2927989a8eSAntonio Nino Diaz typedef struct { 3027989a8eSAntonio Nino Diaz long quot, rem; 3127989a8eSAntonio Nino Diaz } ldiv_t; 3227989a8eSAntonio Nino Diaz 3327989a8eSAntonio Nino Diaz typedef struct { 3427989a8eSAntonio Nino Diaz long long quot, rem; 3527989a8eSAntonio Nino Diaz } lldiv_t; 3627989a8eSAntonio Nino Diaz 3727989a8eSAntonio Nino Diaz extern double atof(const char *nptr); 3827989a8eSAntonio Nino Diaz extern int atoi(const char *nptr); 3927989a8eSAntonio Nino Diaz extern long int atol(const char *nptr); 4027989a8eSAntonio Nino Diaz extern long long int atoll(const char *nptr); 4127989a8eSAntonio Nino Diaz extern double strtod(const char * restrict nptr, char ** restrict endptr); 4227989a8eSAntonio Nino Diaz extern float strtof(const char * restrict nptr, char ** restrict endptr); 4327989a8eSAntonio Nino Diaz extern long double strtold(const char * restrict nptr, char ** restrict endptr); 4427989a8eSAntonio Nino Diaz extern long int strtol(const char * restrict nptr, char ** restrict endptr, int base); 4527989a8eSAntonio Nino Diaz extern long long int strtoll(const char * restrict nptr, char ** restrict endptr, 4627989a8eSAntonio Nino Diaz int base); 4727989a8eSAntonio Nino Diaz extern unsigned long int strtoul(const char * restrict nptr, char ** restrict endptr, 4827989a8eSAntonio Nino Diaz int base); 4927989a8eSAntonio Nino Diaz extern unsigned long long int strtoull(const char * restrict nptr, 5027989a8eSAntonio Nino Diaz char ** restrict endptr, int base); 5127989a8eSAntonio Nino Diaz extern int rand(void); 5227989a8eSAntonio Nino Diaz extern void srand(unsigned int seed); 5327989a8eSAntonio Nino Diaz extern void *calloc(size_t nmemb, size_t size); 5427989a8eSAntonio Nino Diaz extern void free(void *ptr); 5527989a8eSAntonio Nino Diaz extern void *malloc(size_t size); 5627989a8eSAntonio Nino Diaz extern void *realloc(void *ptr, size_t size); 5727989a8eSAntonio Nino Diaz extern void abort(void); 5827989a8eSAntonio Nino Diaz extern int atexit(void (*func)(void)); 5927989a8eSAntonio Nino Diaz extern void exit(int status); 6027989a8eSAntonio Nino Diaz extern void _Exit(int status); 6127989a8eSAntonio Nino Diaz extern char *getenv(const char *name); 6227989a8eSAntonio Nino Diaz extern int system(const char *string); 6327989a8eSAntonio Nino Diaz extern void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, 6427989a8eSAntonio Nino Diaz int (*compar)(const void *, const void *)); 6527989a8eSAntonio Nino Diaz extern void qsort(void *base, size_t nmemb, size_t size, 6627989a8eSAntonio Nino Diaz int (*compar)(const void *, const void *)); 6727989a8eSAntonio Nino Diaz extern int abs(int j); 6827989a8eSAntonio Nino Diaz extern long int labs(long int j); 6927989a8eSAntonio Nino Diaz extern long long int llabs(long long int j); 7027989a8eSAntonio Nino Diaz extern div_t div(int numer, int denom); 7127989a8eSAntonio Nino Diaz extern ldiv_t ldiv(long int numer, long int denom); 7227989a8eSAntonio Nino Diaz extern lldiv_t lldiv(long long int numer, long long int denom); 7327989a8eSAntonio Nino Diaz extern int mblen(const char *s, size_t n); 7427989a8eSAntonio Nino Diaz extern int mbtowc(wchar_t * restrict pwc, const char * restrict s, size_t n); 7527989a8eSAntonio Nino Diaz extern int wctomb(char *s, wchar_t wchar); 7627989a8eSAntonio Nino Diaz extern size_t mbstowcs(wchar_t * restrict pwcs, const char * restrict s, size_t n); 7727989a8eSAntonio Nino Diaz extern size_t wcstombs(char * restrict s, const wchar_t * restrict pwcs, size_t n); 7827989a8eSAntonio Nino Diaz 7927989a8eSAntonio Nino Diaz #ifdef __USE_MACROS 8027989a8eSAntonio Nino Diaz extern int __abs; 8127989a8eSAntonio Nino Diaz extern long __labs; 8227989a8eSAntonio Nino Diaz extern long long __llabs; 8327989a8eSAntonio Nino Diaz 8427989a8eSAntonio Nino Diaz #define abs(x) (__abs = (x), (__abs) < 0 ? -__abs : __abs) 8527989a8eSAntonio Nino Diaz #define labs(x) (__labs = (x), (__labs) < 0 ? -__labs : __labs) 8627989a8eSAntonio Nino Diaz #define llabs(x) (__llabs = (x), (__llabs) < 0 ? -__llabs : __llabs) 8727989a8eSAntonio Nino Diaz #endif 8827989a8eSAntonio Nino Diaz 8927989a8eSAntonio Nino Diaz #endif 90