X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/59e0d9fe772464b93d835d2a2964457702469a43..7b00c0c43f52e9d27168e67a26aac19065cdb40c:/gen/zone.c diff --git a/gen/zone.c b/gen/zone.c index c62d69b..51824f8 100644 --- a/gen/zone.c +++ b/gen/zone.c @@ -3,8 +3,6 @@ * * @APPLE_LICENSE_HEADER_START@ * - * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved. - * * This file contains Original Code and/or Modifications of Original Code * as defined in and that are subject to the Apple Public Source License * Version 2.0 (the 'License'). You may not use this file except in @@ -26,44 +24,104 @@ #import #import #import +#import +#import +#import + +#define OBSOLETED + +static pthread_mutex_t _zone_mutex = PTHREAD_MUTEX_INITIALIZER; + +enum { + nXDefaultMallocZone = 0, + nXCreateZone, + nXNameZone, + nXZoneMalloc, + nXZoneRealloc, + nXZoneCalloc, + nXZoneFree, + nXDestroyZone, + nXZoneFromPtr, + nXZonePtrInfo, + nXMallocCheck, + _nXMallocDumpZones +}; +static char *once[] = { + "NXDefaultMallocZone", + "NXCreateZone", + "NXNameZone", + "NXZoneMalloc", + "NXZoneRealloc", + "NXZoneCalloc", + "NXZoneFree", + "NXDestroyZone", + "NXZoneFromPtr", + "NXZonePtrInfo", + "NXMallocCheck", + "_NXMallocDumpZones" +}; + +extern int __is_threaded; /********* NX functions ************/ +static void +_deprecated(int index) +{ + if(__is_threaded) + pthread_mutex_lock(&_zone_mutex); + if(once[index]) { + fprintf(stderr, "*** %s[%d]: %s() is deprecated and will be removed in the future\n", getprogname(), getpid(), once[index]); + once[index] = NULL; + } + if(__is_threaded) + pthread_mutex_unlock(&_zone_mutex); +} + malloc_zone_t *NXDefaultMallocZone() { + _deprecated(nXDefaultMallocZone); return malloc_default_zone(); } malloc_zone_t *NXCreateZone(size_t startsize, size_t granularity, int canfree) { + _deprecated(nXCreateZone); return malloc_create_zone(startsize, 0); } void NXNameZone(malloc_zone_t *z, const char *name) { + _deprecated(nXNameZone); malloc_set_zone_name(z, name); } void *NXZoneMalloc(malloc_zone_t *zone, size_t size) { + _deprecated(nXZoneMalloc); return malloc_zone_malloc(zone, size); } void *NXZoneRealloc(malloc_zone_t *zone, void *ptr, size_t size) { + _deprecated(nXZoneRealloc); return malloc_zone_realloc(zone, ptr, size); } void *NXZoneCalloc(malloc_zone_t *zone, size_t num_items, size_t size) { + _deprecated(nXZoneCalloc); return malloc_zone_calloc(zone, num_items, size); } void NXZoneFree(malloc_zone_t *zone, void *ptr) { + _deprecated(nXZoneFromPtr); malloc_zone_free(zone, ptr); } void NXDestroyZone(malloc_zone_t *zone) { + _deprecated(nXDestroyZone); if (zone == malloc_default_zone()) return; // we avoid destroying child zones malloc_destroy_zone(zone); } NXZone *NXZoneFromPtr(void *ptr) { NXZone *zone = malloc_zone_from_ptr(ptr); + _deprecated(nXZoneFromPtr); if (!zone) { malloc_printf("*** NXZoneFromPtr() did not find any zone for %p; returning default\n", ptr); zone = NX_NOZONE; @@ -71,6 +129,7 @@ NXZone *NXZoneFromPtr(void *ptr) { return zone; } +#ifndef OBSOLETED void NXAddRegion(void *start, size_t size, malloc_zone_t *zone) { malloc_printf("*** OBSOLETE: NXAddRegion()\n"); } @@ -78,22 +137,27 @@ void NXAddRegion(void *start, size_t size, malloc_zone_t *zone) { void NXRemoveRegion(void *start) { malloc_printf("*** OBSOLETE: NXRemoveRegion()\n"); } +#endif /* OBSOLETED */ void NXZonePtrInfo(void *ptr) { + _deprecated(nXZonePtrInfo); malloc_zone_print_ptr_info(ptr); } int NXMallocCheck(void) { + _deprecated(nXMallocCheck); malloc_zone_check(NULL); return 1; } void _NXMallocDumpZones(void) { + _deprecated(_nXMallocDumpZones); malloc_zone_print(NULL, 0); } /***************** UNIMPLEMENTED ENTRY POINTS ********************/ +#ifndef OBSOLETED void NXMergeZone(malloc_zone_t *z) { static char warned = 0; if (!warned) { @@ -120,4 +184,4 @@ malloc_zone_t *NXCreateChildZone(malloc_zone_t *parentzone, size_t startsize, si void _NXMallocDumpFrees(void) { malloc_printf("*** OBSOLETE: _NXMallocDumpFrees()\n"); } - +#endif /* OBSOLETED */