]> git.sur5r.net Git - cc65/blobdiff - include/stdlib.h
Only for jumps, the lib uses named asm labels in branches
[cc65] / include / stdlib.h
index 6924481679451f6665b88142958b855c9d8aee59..3103172d8f25cc657310bc20afc3cc0aee7ac9ee 100644 (file)
@@ -1,15 +1,15 @@
 /*****************************************************************************/
 /*                                                                           */
-/*                                stdlib.h                                  */
+/*                                 stdlib.h                                  */
 /*                                                                           */
-/*                            General utilities                             */
+/*                             General utilities                             */
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 1998-2005 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,14 +68,17 @@ void __fastcall__ free (void* block);
 
 /* Non standard memory management functions */
 
-void* __fastcall__ _aligned_malloc (size_t size, size_t alignment)
-/* 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 a call to this function will
- * cause undefined behaviour. The function returns NULL if not enough memory
- * is available to satisfy the request. To free the allocated block, use the
- * free() function.
- */
+#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 */
@@ -77,34 +86,36 @@ void __fastcall__ _heapadd (void* mem, size_t size);
 size_t __fastcall__ _heapblocksize (const void* block);
 /* Return the size of an allocated block */
 
-size_t __fastcall__ _heapmemavail (void);
+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 __fastcall__ qsort (void* base, size_t count, size_t size,
-                        int (*compare) (const void*, const void*));
-int system (const char* s);
+                         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);
@@ -113,6 +124,7 @@ 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