diff options
Diffstat (limited to 'tools/debugserver/source/MacOSX/stack_logging.h')
| -rw-r--r-- | tools/debugserver/source/MacOSX/stack_logging.h | 158 | 
1 files changed, 0 insertions, 158 deletions
diff --git a/tools/debugserver/source/MacOSX/stack_logging.h b/tools/debugserver/source/MacOSX/stack_logging.h deleted file mode 100644 index 5209e38a08ea7..0000000000000 --- a/tools/debugserver/source/MacOSX/stack_logging.h +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Copyright (c) 1999-2007 Apple Inc. All rights reserved. - * - * @APPLE_LICENSE_HEADER_START@ - * - * 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 - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. - * - * The Original Code and all software distributed under the License are - * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER - * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, - * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. - * Please see the License for the specific language governing rights and - * limitations under the License. - * - * @APPLE_LICENSE_HEADER_END@ - */ - -#ifndef malloc_history_test_stack_logging_h -#define malloc_history_test_stack_logging_h - -#import <malloc/malloc.h> - -#define stack_logging_type_free 0 -#define stack_logging_type_generic                                             \ -  1 /* anything that is not allocation/deallocation */ -#define stack_logging_type_alloc 2   /* malloc, realloc, etc... */ -#define stack_logging_type_dealloc 4 /* free, realloc, etc... */ - -// Following flags are absorbed by stack_logging_log_stack() -#define stack_logging_flag_zone 8    /* NSZoneMalloc, etc... */ -#define stack_logging_flag_calloc 16 /* multiply arguments to get the size */ -#define stack_logging_flag_object                                              \ -  32 /* NSAllocateObject(Class, extraBytes, zone) */ -#define stack_logging_flag_cleared 64 /* for NewEmptyHandle */ -#define stack_logging_flag_handle 128 /* for Handle (de-)allocation routines   \ -                                         */ -#define stack_logging_flag_set_handle_size                                     \ -  256 /* (Handle, newSize) treated specially */ - -/* Macro used to disguise addresses so that leak finding can work */ -#define STACK_LOGGING_DISGUISE(address)                                        \ -  ((address) ^ 0x00005555) /* nicely idempotent */ - -extern "C" int -    stack_logging_enable_logging; /* when clear, no logging takes place */ -extern "C" int stack_logging_dontcompact; /* default is to compact; when set -                                             does not compact alloc/free logs; -                                             useful for tracing history */ - -extern "C" void stack_logging_log_stack(unsigned type, unsigned arg1, -                                        unsigned arg2, unsigned arg3, -                                        unsigned result, -                                        unsigned num_hot_to_skip); -/* This is the old log-to-memory logger, which is now deprecated.  It remains - * for compatibility with performance tools that haven't been updated to - * disk_stack_logging_log_stack() yet. */ - -extern "C" void -__disk_stack_logging_log_stack(uint32_t type_flags, uintptr_t zone_ptr, -                               uintptr_t size, uintptr_t ptr_arg, -                               uintptr_t return_val, uint32_t num_hot_to_skip); -/* Fits as the malloc_logger; logs malloc/free/realloc events and can log custom - * events if called directly */ - -/* 64-bit-aware stack log access. */ -typedef struct { -  uint32_t type_flags; -  uint64_t stack_identifier; -  uint64_t argument; -  mach_vm_address_t address; -} mach_stack_logging_record_t; - -extern "C" kern_return_t -__mach_stack_logging_get_frames(task_t task, mach_vm_address_t address, -                                mach_vm_address_t *stack_frames_buffer, -                                uint32_t max_stack_frames, uint32_t *count); -/* Gets the last allocation record (malloc, realloc, or free) about address */ - -extern "C" kern_return_t __mach_stack_logging_enumerate_records( -    task_t task, mach_vm_address_t address, -    void enumerator(mach_stack_logging_record_t, void *), void *context); -/* Applies enumerator to all records involving address sending context as - * enumerator's second parameter; if !address, applies enumerator to all records - */ - -extern "C" kern_return_t __mach_stack_logging_frames_for_uniqued_stack( -    task_t task, uint64_t stack_identifier, -    mach_vm_address_t *stack_frames_buffer, uint32_t max_stack_frames, -    uint32_t *count); -/* Given a uniqued_stack fills stack_frames_buffer */ - -#pragma mark - -#pragma mark Legacy - -/* The following is the old 32-bit-only, in-process-memory stack logging.  This - * is deprecated and clients should move to the above 64-bit-aware disk stack - * logging SPI. */ - -typedef struct { -  unsigned type; -  unsigned uniqued_stack; -  unsigned argument; -  unsigned address; /* disguised, to avoid confusing leaks */ -} stack_logging_record_t; - -typedef struct { -  unsigned overall_num_bytes; -  unsigned num_records; -  unsigned lock; /* 0 means OK to lock; used for inter-process locking */ -  unsigned *uniquing_table; /* allocated using vm_allocate() */ -  /* hashtable organized as (PC, uniqued parent) -   Only the second half of the table is active -   To enable us to grow dynamically */ -  unsigned uniquing_table_num_pages; /* number of pages of the table */ -  unsigned extra_retain_count;       /* not used by stack_logging_log_stack */ -  unsigned filler[2]; /* align to cache lines for better performance */ -  stack_logging_record_t records[0]; /* records follow here */ -} stack_logging_record_list_t; - -extern "C" stack_logging_record_list_t *stack_logging_the_record_list; -/* This is the global variable containing all logs */ - -extern "C" kern_return_t -stack_logging_get_frames(task_t task, memory_reader_t reader, -                         vm_address_t address, -                         vm_address_t *stack_frames_buffer, -                         unsigned max_stack_frames, unsigned *num_frames); -/* Gets the last record in stack_logging_the_record_list about address */ - -#define STACK_LOGGING_ENUMERATION_PROVIDED                                     \ -  1 // temporary to avoid dependencies between projects - -extern "C" kern_return_t stack_logging_enumerate_records( -    task_t task, memory_reader_t reader, vm_address_t address, -    void enumerator(stack_logging_record_t, void *), void *context); -/* Gets all the records about address; - If !address, gets all records */ - -extern "C" kern_return_t stack_logging_frames_for_uniqued_stack( -    task_t task, memory_reader_t reader, unsigned uniqued_stack, -    vm_address_t *stack_frames_buffer, unsigned max_stack_frames, -    unsigned *num_frames); -/* Given a uniqued_stack fills stack_frames_buffer */ - -extern "C" void thread_stack_pcs(vm_address_t *buffer, unsigned max, -                                 unsigned *num); -/* Convenience to fill buffer with the PCs of the frames, starting with the hot - frames; - num: returned number of frames - */ - -#endif  | 
