]> git.sur5r.net Git - cc65/blobdiff - include/stdlib.h
Stefan Haubenthal's patch for Contiki port
[cc65] / include / stdlib.h
index 8a4ccd55a418ae7fa7301c6743425c9dd8e2ac50..259b602333d3223cfbf5fb4035be511d524b737b 100644 (file)
@@ -6,10 +6,10 @@
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 1998-2002 Ullrich von Bassewitz                                       */
-/*               Wacholderweg 14                                             */
-/*               D-70597 Stuttgart                                           */
-/* EMail:        uz@musoftware.de                                            */
+/* (C) 1998-2005 Ullrich von Bassewitz                                       */
+/*               Römerstrasse 52                                             */
+/*               D-70794 Filderstadt                                         */
+/* EMail:        uz@cc65.org                                                 */
 /*                                                                           */
 /*                                                                           */
 /* This software is provided 'as-is', without any expressed or implied       */
 
 
 
-#include <stddef.h>
-
-
+/* size_t is needed */
+#ifndef _HAVE_size_t
+typedef unsigned size_t;
+#define _HAVE_size_t
+#endif
 
 /* Standard exit codes */
 #define EXIT_SUCCESS   0
@@ -55,16 +57,38 @@ typedef struct {
 /* Memory management */
 void* __fastcall__ malloc (size_t size);
 void* __fastcall__ calloc (size_t count, size_t size);
-void* realloc (void* block, size_t size);
+void* __fastcall__ realloc (void* block, size_t size);
 void __fastcall__ free (void* block);
-#ifndef __STRICT_ANSI__
-void __fastcall__ _hadd (void* mem, size_t size);      /* Non-standard */
-#endif
+
+/* 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.
+ */
+
+void __fastcall__ _heapadd (void* mem, size_t size);
+/* Add a block to the heap */
+
+size_t __fastcall__ _heapblocksize (const void* block);
+/* Return the size of an allocated block */
+
+size_t __fastcall__ _heapmemavail (void);
+/* Return the total free heap space */
+
+size_t __fastcall__ _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);
@@ -73,21 +97,23 @@ long __fastcall__ labs (long val);
 int __fastcall__ atoi (const char* s);
 long __fastcall__ atol (const char* s);
 int __fastcall__ atexit (void (*exitfunc) (void));
-void* bsearch (const void* key, const void* base, size_t n,
-              size_t size, int (*cmp) (const void*, const void*));
+void* __fastcall__ bsearch (const void* key, const void* base, size_t n,
+                           size_t size, int (*cmp) (const void*, const void*));
 div_t __fastcall__ div (int numer, int denom);
-void exit (int ret);
+void __fastcall__ exit (int ret);
 char* __fastcall__ getenv (const char* name);
-void qsort (void* base, size_t count, size_t size,
-           int (*compare) (const void*, const void*));
+void __fastcall__ qsort (void* base, size_t count, size_t size,
+                        int (*compare) (const void*, const void*));
+int system (const char* s);
 
 /* Non-ANSI functions */
-#ifndef __STRICT_ANSI__
 void __fastcall__ _swap (void* p, void* q, size_t size);
+#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