xref: /rk3399_ARM-atf/include/lib/libc/stdlib.h (revision 7c0ff9c40ceeacf239ec9a3465be0477594cf898)
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