|
|
1.1 ! root 1: #ifndef _DYLD_DEBUG_ ! 2: #define _DYLD_DEBUG_ ! 3: ! 4: #import <mach/mach.h> ! 5: /* ! 6: * The dyld debugging API. ! 7: */ ! 8: enum dyld_debug_return { ! 9: DYLD_SUCCESS, ! 10: DYLD_INCONSISTENT_DATA, ! 11: DYLD_INVALID_ARGUMENTS, ! 12: DYLD_FAILURE ! 13: }; ! 14: ! 15: struct dyld_debug_module { ! 16: struct mach_header *header; ! 17: unsigned long vmaddr_slide; ! 18: unsigned long module_index; ! 19: }; ! 20: ! 21: enum dyld_event_type { ! 22: DYLD_IMAGE_ADDED, ! 23: DYLD_MODULE_BOUND, ! 24: DYLD_MODULE_REMOVED, ! 25: DYLD_MODULE_REPLACED, ! 26: DYLD_PAST_EVENTS_END ! 27: }; ! 28: ! 29: struct dyld_event { ! 30: enum dyld_event_type type; ! 31: struct dyld_debug_module arg[2]; ! 32: }; ! 33: ! 34: extern enum dyld_debug_return _dyld_debug_defining_module( ! 35: task_t target_task, ! 36: unsigned long send_timeout, ! 37: unsigned long rcv_timeout, ! 38: boolean_t inconsistent_data_ok, ! 39: char *name, ! 40: struct dyld_debug_module *module); ! 41: ! 42: extern enum dyld_debug_return _dyld_debug_is_module_bound( ! 43: task_t target_task, ! 44: unsigned long send_timeout, ! 45: unsigned long rcv_timeout, ! 46: boolean_t inconsistent_data_ok, ! 47: struct dyld_debug_module module, ! 48: boolean_t *bound); ! 49: ! 50: extern enum dyld_debug_return _dyld_debug_bind_module( ! 51: task_t target_task, ! 52: unsigned long send_timeout, ! 53: unsigned long rcv_timeout, ! 54: boolean_t inconsistent_data_ok, ! 55: struct dyld_debug_module module); ! 56: ! 57: extern enum dyld_debug_return _dyld_debug_subscribe_to_events( ! 58: task_t target_task, ! 59: unsigned long send_timeout, ! 60: unsigned long rcv_timeout, ! 61: boolean_t inconsistent_data_ok, ! 62: void (*dyld_event_routine)(struct dyld_event event)); ! 63: ! 64: /* ! 65: * _dyld_debug_add_event_subscriber() uses the mig interface functions below ! 66: * to dispatch the dyld event messages from the subscriber port specified. ! 67: */ ! 68: extern enum dyld_debug_return _dyld_debug_add_event_subscriber( ! 69: task_t target_task, ! 70: unsigned long send_timeout, ! 71: unsigned long rcv_timeout, ! 72: boolean_t inconsistent_data_ok, ! 73: port_t subscriber); ! 74: /* ! 75: * These structures should be produced by mig(1) from the mig generated files ! 76: * but they are not. These are really only needed so the correct size of the ! 77: * request and reply messages can be allocated. ! 78: */ ! 79: struct _dyld_event_message_request { ! 80: msg_header_t head; ! 81: msg_type_t eventType; ! 82: struct dyld_event event; ! 83: }; ! 84: struct _dyld_event_message_reply { ! 85: msg_header_t head; ! 86: msg_type_t RetCodeType; ! 87: kern_return_t RetCode; ! 88: }; ! 89: #ifndef mig_internal ! 90: /* ! 91: * _dyld_event_server() is the mig generated routine to dispatch dyld event ! 92: * messages. ! 93: */ ! 94: extern boolean_t _dyld_event_server( ! 95: struct _dyld_event_message_request *request, ! 96: struct _dyld_event_message_reply *reply); ! 97: #endif ! 98: /* ! 99: * _dyld_event_server_callback() is the routine called by _dyld_event_server() ! 100: * that must be written by users of _dyld_event_server(). ! 101: */ ! 102: extern void _dyld_event_server_callback( ! 103: port_t subscriber, ! 104: struct dyld_event event); ! 105: ! 106: #endif /* _DYLD_DEBUG_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.