Annotation of embedaddon/expat/amiga/stdlib.c, revision 1.1
1.1 ! misho 1: /*
! 2: ** Copyright (c) 2001-2007 Expat maintainers.
! 3: **
! 4: ** Permission is hereby granted, free of charge, to any person obtaining
! 5: ** a copy of this software and associated documentation files (the
! 6: ** "Software"), to deal in the Software without restriction, including
! 7: ** without limitation the rights to use, copy, modify, merge, publish,
! 8: ** distribute, sublicense, and/or sell copies of the Software, and to
! 9: ** permit persons to whom the Software is furnished to do so, subject to
! 10: ** the following conditions:
! 11: **
! 12: ** The above copyright notice and this permission notice shall be included
! 13: ** in all copies or substantial portions of the Software.
! 14: **
! 15: ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
! 16: ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
! 17: ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
! 18: ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
! 19: ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
! 20: ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
! 21: ** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
! 22: */
! 23:
! 24: #include <stdlib.h>
! 25: #include <exec/memory.h>
! 26: #include <proto/exec.h>
! 27: #include <proto/utility.h>
! 28:
! 29: void * malloc (size_t len)
! 30: {
! 31: uint32 size = sizeof(uint32) + len;
! 32:
! 33: uint32 *mem = AllocMem(size, MEMF_SHARED);
! 34: if ( mem != 0 ) {
! 35: *mem = size;
! 36: ++mem;
! 37: }
! 38:
! 39: return mem;
! 40: }
! 41:
! 42:
! 43: void * realloc (void * mem, size_t len2)
! 44: {
! 45: if ( mem == 0 ) {
! 46: return malloc(len2);
! 47: }
! 48:
! 49: if ( len2 == 0 ) {
! 50: free(mem);
! 51: return 0;
! 52: }
! 53:
! 54: void * new_mem = malloc(len2);
! 55: if ( new_mem == 0 ) {
! 56: return 0;
! 57: }
! 58:
! 59: uint32 mem_size = *(((uint32*)mem) - 1);
! 60: CopyMem(mem, new_mem, mem_size);
! 61: free(mem);
! 62:
! 63: return new_mem;
! 64: }
! 65:
! 66:
! 67: void free (void * mem)
! 68: {
! 69: if ( mem != 0 ) {
! 70: uint32 * size_ptr = ((uint32*)mem) - 1;
! 71: FreeMem(size_ptr, *size_ptr);
! 72: }
! 73: }
! 74:
! 75:
! 76: int memcmp (const void * a, const void * b, size_t len)
! 77: {
! 78: size_t i;
! 79: int diff;
! 80:
! 81: for ( i = 0; i < len; ++i ) {
! 82: diff = *((uint8 *)a++) - *((uint8 *)b++);
! 83: if ( diff ) {
! 84: return diff;
! 85: }
! 86: }
! 87:
! 88: return 0;
! 89: }
! 90:
! 91:
! 92: void * memcpy (void * t, const void * a, size_t len)
! 93: {
! 94: CopyMem((APTR)a, t, len);
! 95: return t;
! 96: }
! 97:
! 98:
! 99: void * memmove (void * t1, const void * t2, size_t len)
! 100: {
! 101: MoveMem((APTR)t2, t1, len);
! 102: return t1;
! 103: }
! 104:
! 105:
! 106: void * memset (void * t, int c, size_t len)
! 107: {
! 108: return SetMem(t, c, len);
! 109: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>