AMD_DBGAPI
0.70.1
|
Operations related to AMD GPU code objects loaded into a process. More...
Data Structures | |
struct | amd_dbgapi_code_object_id_t |
Opaque code object handle. More... | |
Macros | |
#define | AMD_DBGAPI_CODE_OBJECT_NONE AMD_DBGAPI_HANDLE_LITERAL (amd_dbgapi_code_object_id_t, 0) |
The NULL code object handle. More... | |
Enumerations | |
enum | amd_dbgapi_code_object_info_t { AMD_DBGAPI_CODE_OBJECT_INFO_PROCESS = 1 , AMD_DBGAPI_CODE_OBJECT_INFO_URI_NAME = 2 , AMD_DBGAPI_CODE_OBJECT_INFO_LOAD_ADDRESS = 3 } |
Code object queries that are supported by amd_dbgapi_code_object_get_info. More... | |
Functions | |
amd_dbgapi_status_t AMD_DBGAPI | amd_dbgapi_code_object_get_info (amd_dbgapi_code_object_id_t code_object_id, amd_dbgapi_code_object_info_t query, size_t value_size, void *value) AMD_DBGAPI_VERSION_0_54 |
Query information about a code object. More... | |
amd_dbgapi_status_t AMD_DBGAPI | amd_dbgapi_process_code_object_list (amd_dbgapi_process_id_t process_id, size_t *code_object_count, amd_dbgapi_code_object_id_t **code_objects, amd_dbgapi_changed_t *changed) AMD_DBGAPI_VERSION_0_54 |
Return the list of loaded code objects. More... | |
Operations related to AMD GPU code objects loaded into a process.
AMD GPU code objects are standard ELF shared libraries defined in User Guide for AMDGPU Backend - Code Object.
AMD GPU code objects can be embedded in the host executable code object that is loaded into memory or be in a separate file in the file system. The AMD GPU loader supports loading either from memory or from files. The loader selects the segments to put into memory that contain the code and data necessary for AMD GPU code execution. It allocates global memory to map these segments and performs necessary relocations to create the loaded code object.
#define AMD_DBGAPI_CODE_OBJECT_NONE AMD_DBGAPI_HANDLE_LITERAL (amd_dbgapi_code_object_id_t, 0) |
The NULL code object handle.
Code object queries that are supported by amd_dbgapi_code_object_get_info.
Each query specifies the type of data returned in the value
argument to amd_dbgapi_code_object_get_info.
Enumerator | |
---|---|
AMD_DBGAPI_CODE_OBJECT_INFO_PROCESS | Return the process to which this code object belongs. The type of this attribute is amd_dbgapi_process_id_t. |
AMD_DBGAPI_CODE_OBJECT_INFO_URI_NAME | The URI name of the ELF shared object from which the code object was loaded. Note that the code object is the in memory loaded relocated form of the ELF shared object. Multiple code objects may be loaded at different memory addresses in the same process from the same ELF shared object. The type of this attribute is a NUL terminated The URI name syntax is defined by the following BNF syntax: code_object_uri ::== file_uri | memory_uri file_uri ::== "file://" file_path [ range_specifier ] memory_uri ::== "memory://" process_id range_specifier range_specifier ::== ( "#" | "?" ) "offset=" number "&" "size=" number file_path ::== URI_ENCODED_OS_FILE_PATH process_id ::== DECIMAL_NUMBER number ::== HEX_NUMBER | DECIMAL_NUMBER | OCTAL_NUMBER
For example: file:///dir1/dir2/file1 file:///dir3/dir4/file2#offset=0x2000&size=3000 memory://1234#offset=0x20000&size=3000 |
AMD_DBGAPI_CODE_OBJECT_INFO_LOAD_ADDRESS | The difference between the address in the ELF shared object and the address the code object is loaded in memory. The type of this attributes is |
amd_dbgapi_status_t AMD_DBGAPI amd_dbgapi_code_object_get_info | ( | amd_dbgapi_code_object_id_t | code_object_id, |
amd_dbgapi_code_object_info_t | query, | ||
size_t | value_size, | ||
void * | value | ||
) |
Query information about a code object.
amd_dbgapi_code_object_info_t specifies the queries supported and the type returned using the value
argument.
[in] | code_object_id | The handle of the code object being queried. |
[in] | query | The query being requested. |
[in] | value_size | Size of the memory pointed to by value . Must be equal to the byte size of the query result. |
[out] | value | Pointer to memory where the query result is stored. |
AMD_DBGAPI_STATUS_SUCCESS | The function has been executed successfully and the result is stored in value . |
AMD_DBGAPI_STATUS_FATAL | A fatal error occurred. The library is left uninitialized and value is unaltered. |
AMD_DBGAPI_STATUS_ERROR_NOT_INITIALIZED | The library is not initialized. The library is left uninitialized and value is unaltered. |
AMD_DBGAPI_STATUS_ERROR_INVALID_CODE_OBJECT_ID | code_object_id is invalid. value is unaltered. |
AMD_DBGAPI_STATUS_ERROR_INVALID_ARGUMENT | value is NULL or query is invalid. value is unaltered. |
AMD_DBGAPI_STATUS_ERROR_INVALID_ARGUMENT_COMPATIBILITY | value_size does not match the size of the query result. value is unaltered. |
AMD_DBGAPI_STATUS_ERROR_CLIENT_CALLBACK | This will be reported if the amd_dbgapi_callbacks_s::allocate_memory callback used to allocate value returns NULL. value is unaltered. |
amd_dbgapi_status_t AMD_DBGAPI amd_dbgapi_process_code_object_list | ( | amd_dbgapi_process_id_t | process_id, |
size_t * | code_object_count, | ||
amd_dbgapi_code_object_id_t ** | code_objects, | ||
amd_dbgapi_changed_t * | changed | ||
) |
Return the list of loaded code objects.
The order of the code object handles in the list is unspecified and can vary between calls.
[in] | process_id | If AMD_DBGAPI_PROCESS_NONE then the code object list for all processes is requested. Otherwise, the code object list for process process_id is requested. |
[out] | code_object_count | The number of code objects currently loaded. |
[out] | code_objects | If changed is not NULL and the code object list of all of the processes requested have not changed since the last call(s) to amd_dbgapi_process_code_object_list for each of them, then return NULL. Otherwise, return a pointer to an array of amd_dbgapi_code_object_id_t with code_object_count elements. It is allocated by the amd_dbgapi_callbacks_s::allocate_memory callback and is owned by the client. |
[in,out] | changed | If NULL then left unaltered. If non-NULL, set to AMD_DBGAPI_CHANGED_NO if the list of code objects for each requested process is the same as when amd_dbgapi_process_code_object_list was last called for them. Otherwise, set to AMD_DBGAPI_CHANGED_YES. |
AMD_DBGAPI_STATUS_SUCCESS | The function has been executed successfully and the result is stored in changed , code_object_count , and code_objects . |
AMD_DBGAPI_STATUS_FATAL | A fatal error occurred. The library is left uninitialized; and code_object_count , code_objects , and changed are unaltered. |
AMD_DBGAPI_STATUS_ERROR_NOT_INITIALIZED | The library is not initialized. The library is left uninitialized; and code_object_count , code_objects , and changed are unaltered. |
AMD_DBGAPI_STATUS_ERROR_INVALID_PROCESS_ID | process_id is invalid. code_object_count , code_objects , and changed are unaltered. |
AMD_DBGAPI_STATUS_ERROR_INVALID_ARGUMENT | code_object_count or code_objects are NULL, or changed is invalid. code_object_count , code_objects , and changed are unaltered. |
AMD_DBGAPI_STATUS_ERROR_CLIENT_CALLBACK | This will be reported if the amd_dbgapi_callbacks_s::allocate_memory callback used to allocate code_objects returns NULL. code_object_count , code_objects , and changed are unaltered. |