/**************************************************************************** **************************************************************************** *** *** This header was automatically generated from a Linux kernel header *** of the same name, to make information necessary for userspace to *** call into the kernel available to libc. It contains only constants, *** structures, and macros generated from the original header, and thus, *** contains no copyrightable information. *** *** To edit the content of this header, modify the corresponding *** source file (e.g. under external/kernel-headers/original/) then *** run bionic/libc/kernel/tools/update_all.py *** *** Any manual change here will be lost the next time this script will *** be run. You've been warned! *** **************************************************************************** ****************************************************************************/ #ifndef ION_DEBUGGER_DEF #define ION_DEBUGGER_DEF #define BACKTRACE_SIZE 10 //#include typedef enum { ION_FUNCTION_OPEN, ION_FUNCTION_CLOSE, ION_FUNCTION_CREATE_CLIENT, ION_FUNCTION_DESTROY_CLIENT, ION_FUNCTION_ALLOC, ION_FUNCTION_ALLOC_MM, ION_FUNCTION_ALLOC_CONT, ION_FUNCTION_FREE, ION_FUNCTION_IMPORT, ION_FUNCTION_MMAP, ION_FUNCTION_MUNMAP, ION_FUNCTION_SHARE, ION_FUNCTION_SHARE_CLOSE } ION_FUNCTION_TYPE; typedef enum { BUFFER_ALLOCATION_LIST, BUFFER_FREE_LIST, ADDRESS_ALLOCATION_LIST, ADDRESS_FREE_LIST, FD_ALLOCATION_LIST, FD_FREE_LIST } ION_DEBUGGER_LIST_TYPE; typedef enum { ADDRESS_USER_VIRTUAL, ADDRESS_KERNEL_VIRTUAL, ADDRESS_KERNEL_PHYSICAL, ADDRESS_MAX } ION_MAPPING_ADDRESS_TYPE; typedef enum { RECORD_ID, RECORD_CLIENT, RECORD_HANDLE, RECORD_ALLOCATE_BACKTRACE_NUM, RECORD_FREED_BACKTRACE_NUM, RECORD_ALLOCATE_MAPPING_NUM, RECORD_FREED_MAPPING_NUM, RECORD_FD, RECORD_ADDRESS, RECORD_SIZE, RECORD_NEXT } ION_DEBUGGDER_RECORD_DATA; typedef enum { SEARCH_PID, SEARCH_PID_CLIENT, SEARCH_PROCESS_PID, SEARCH_BUFFER, SEARCH_MAX } ION_SEARCH_METHOD; typedef enum { LIST_BUFFER, LIST_PROCESS, NODE_BUFFER, NODE_FD, NODE_CLIENT, NODE_MMAP, NODE_MAX } ION_RECORD_TYPE; typedef enum { HASH_NODE_CLIENT, HASH_NODE_HANDLE, HASH_NODE_BUFFER, HASH_NODE_USER_BACKTRACE, HASH_NODE_KERNEL_BACKTRACE, HASH_NODE_USER_MAPPING, HASH_NODE_KERNEL_SYMBOL, HASH_NODE_MAX } ION_HASH_NODE_TYPE; typedef enum { ALLOCATE_BACKTRACE_INFO, RELEASE_BACKTRACE_INFO, KERNEL_BACKTRACE, USER_BACKTRACE, BACKTRACE_MAX } BACKTRACE_INFO; struct mapping { char * name; unsigned int address; unsigned int size; }; typedef struct ion_sys_record_param { pid_t group_id; pid_t pid; unsigned int action; unsigned int address_type; unsigned int address; unsigned int length; unsigned int backtrace[BACKTRACE_SIZE]; unsigned int kernel_symbol[BACKTRACE_SIZE]; struct mapping mapping_record[BACKTRACE_SIZE]; unsigned int backtrace_num; struct ion_handle * handle; struct ion_client * client; struct ion_buffer * buffer; int fd; } ion_sys_record_t; typedef struct ion_record_ID { pid_t pid; pid_t group_pid; unsigned int client_address; struct ion_client * client; union { struct ion_buffer_record * buffer; struct ion_process_record * process_record; }; }ion_record_ID_t; typedef struct ion_record_basic_info { struct ion_record_ID recordID; unsigned int record_type; unsigned int from_kernel; unsigned int allocate_backtrace_type; unsigned int * allocate_backtrace; unsigned int * allocate_map; unsigned int release_backtrace_type; unsigned int * release_backtrace; unsigned int * release_map; } ion_record_basic_info_t; typedef struct ion_buffer_usage_record { struct ion_buffer_usage_record * next; struct ion_record_basic_info tracking_info; struct ion_handle * handle; unsigned int function_type; } ion_buffer_usage_record_t; typedef struct ion_address_usage_record { struct ion_address_usage_record * next; struct ion_record_basic_info tracking_info; unsigned int address_type; unsigned int mapping_address; unsigned int size; int fd; struct ion_buffer * buffer; } ion_address_usage_record_t; typedef struct ion_fd_usage_record { struct ion_fd_usage_reocrd * next; struct ion_record_basic_info tracking_info; int fd; struct ion_handle * handle; struct ion_buffer * buffer; } ion_fd_usage_record_t; typedef struct ion_client_usage_record { struct ion_client_usage_recrod *next; struct ion_record_basic_info tracking_info; int fd; } ion_client_usage_record_t; #endif