X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fstdlib.h;h=3103172d8f25cc657310bc20afc3cc0aee7ac9ee;hb=a8d3b83c43e79702a41b0049d65ea51e62dacf09;hp=d4a9ef7cc3ffb2183084299e2946fff4e4d259e7;hpb=76bbc48b992d09bfb4504d0abbd476a6bd169b5d;p=cc65 diff --git a/include/stdlib.h b/include/stdlib.h index d4a9ef7cc..3103172d8 100644 --- a/include/stdlib.h +++ b/include/stdlib.h @@ -1,15 +1,15 @@ /*****************************************************************************/ /* */ -/* stdlib.h */ +/* stdlib.h */ /* */ -/* General utilities */ +/* General utilities */ /* */ /* */ /* */ -/* (C) 1998-2003 Ullrich von Bassewitz */ -/* Römerstrasse 52 */ -/* D-70794 Filderstadt */ -/* EMail: uz@cc65.org */ +/* (C) 1998-2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -45,8 +45,8 @@ typedef unsigned size_t; #endif /* Standard exit codes */ -#define EXIT_SUCCESS 0 -#define EXIT_FAILURE 1 +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 /* Return type of the div function */ typedef struct { @@ -54,6 +54,12 @@ typedef struct { int quot; } div_t; +/* Return type of the ldiv function (which currently doesn't exist) */ +typedef struct { + long rem; + long quot; +} ldiv_t; + /* Memory management */ void* __fastcall__ malloc (size_t size); void* __fastcall__ calloc (size_t count, size_t size); @@ -62,44 +68,63 @@ void __fastcall__ free (void* block); /* Non standard memory management functions */ +#if __CC65_STD__ == __CC65_STD_CC65__ +int __fastcall__ posix_memalign (void** memptr, size_t alignment, size_t size); +/* Allocate a block of memory with the given "size", which is aligned to a +** memory address that is a multiple of "alignment". "alignment" MUST NOT be +** zero, and MUST be a power of two; otherwise, this function will return +** EINVAL. The function returns ENOMEM if not enough memory is available +** to satisfy the request. "memptr" must point to a variable; that variable +** will return the address of the allocated memory. Use free() to release that +** allocated block. +*/ +#endif + void __fastcall__ _heapadd (void* mem, size_t size); /* Add a block to the heap */ -size_t __fastcall__ _heapmemavail (void); +size_t __fastcall__ _heapblocksize (const void* block); +/* Return the size of an allocated block */ + +size_t _heapmemavail (void); /* Return the total free heap space */ -size_t __fastcall__ _heapmaxavail (void); +size_t _heapmaxavail (void); /* Return the size of the largest free block on the heap */ + /* Random numbers */ -#define RAND_MAX 0x7FFF +#define RAND_MAX 0x7FFF int rand (void); void __fastcall__ srand (unsigned seed); void _randomize (void); /* Non-standard */ /* Other standard stuff */ -void abort (void); +void abort (void) __attribute__ ((noreturn)); int __fastcall__ abs (int val); long __fastcall__ labs (long val); int __fastcall__ atoi (const char* s); long __fastcall__ atol (const char* s); int __fastcall__ atexit (void (*exitfunc) (void)); void* __fastcall__ bsearch (const void* key, const void* base, size_t n, - size_t size, int (*cmp) (const void*, const void*)); + size_t size, int __fastcall__ (* cmp) (const void*, const void*)); div_t __fastcall__ div (int numer, int denom); -void __fastcall__ exit (int ret); +void __fastcall__ exit (int ret) __attribute__ ((noreturn)); char* __fastcall__ getenv (const char* name); -void qsort (void* base, size_t count, size_t size, - int (*compare) (const void*, const void*)); -int system (const char* s); +void __fastcall__ qsort (void* base, size_t count, size_t size, + int __fastcall__ (* compare) (const void*, const void*)); +long __fastcall__ strtol (const char* nptr, char** endptr, int base); +unsigned long __fastcall__ strtoul (const char* nptr, char** endptr, int base); +int __fastcall__ system (const char* s); /* Non-ANSI functions */ void __fastcall__ _swap (void* p, void* q, size_t size); -#ifndef __STRICT_ANSI__ +#if __CC65_STD__ == __CC65_STD_CC65__ char* __fastcall__ itoa (int val, char* buf, int radix); char* __fastcall__ utoa (unsigned val, char* buf, int radix); char* __fastcall__ ltoa (long val, char* buf, int radix); char* __fastcall__ ultoa (unsigned long val, char* buf, int radix); +int __fastcall__ putenv (char* s); #endif