vita-import.h (2160B)
1 #ifndef VITA_IMPORT_H 2 #define VITA_IMPORT_H 3 4 #include <vita-toolchain-public.h> 5 #include <stdbool.h> 6 #include <stdint.h> 7 #include <stdio.h> 8 9 /* These fields must always come at the beginning of the NID-bearing structs */ 10 typedef struct { 11 char *name; 12 uint32_t NID; 13 } vita_imports_common_fields; 14 15 typedef struct { 16 char *name; 17 uint32_t NID; 18 } vita_imports_stub_t; 19 20 typedef struct { 21 char *name; 22 uint32_t NID; 23 bool is_kernel; 24 vita_imports_stub_t **functions; 25 vita_imports_stub_t **variables; 26 int n_functions; 27 int n_variables; 28 uint32_t flags; 29 } vita_imports_module_t; 30 31 typedef struct { 32 char *name; 33 uint32_t NID; 34 vita_imports_module_t **modules; 35 int n_modules; 36 } vita_imports_lib_t; 37 38 typedef struct { 39 char *firmware; 40 char *postfix; 41 vita_imports_lib_t **libs; 42 int n_libs; 43 } vita_imports_t; 44 45 46 VITA_TOOLCHAIN_PUBLIC vita_imports_t *vita_imports_load(const char *filename, int verbose); 47 VITA_TOOLCHAIN_PUBLIC vita_imports_t *vita_imports_loads(FILE *text, int verbose); 48 49 VITA_TOOLCHAIN_PUBLIC vita_imports_t *vita_imports_new(int n_libs); 50 VITA_TOOLCHAIN_PUBLIC void vita_imports_free(vita_imports_t *imp); 51 52 VITA_TOOLCHAIN_PUBLIC vita_imports_lib_t *vita_imports_find_lib(vita_imports_t *imp, uint32_t NID); 53 54 55 VITA_TOOLCHAIN_PUBLIC vita_imports_lib_t *vita_imports_lib_new(const char *name, uint32_t NID, int n_modules); 56 VITA_TOOLCHAIN_PUBLIC void vita_imports_lib_free(vita_imports_lib_t *lib); 57 58 VITA_TOOLCHAIN_PUBLIC vita_imports_module_t *vita_imports_find_module(vita_imports_lib_t *lib, uint32_t NID); 59 60 61 VITA_TOOLCHAIN_PUBLIC vita_imports_module_t *vita_imports_module_new(const char *name, bool kernel, uint32_t NID, int n_functions, int n_variables); 62 VITA_TOOLCHAIN_PUBLIC void vita_imports_module_free(vita_imports_module_t *mod); 63 64 VITA_TOOLCHAIN_PUBLIC vita_imports_stub_t *vita_imports_find_function(vita_imports_module_t *mod, uint32_t NID); 65 VITA_TOOLCHAIN_PUBLIC vita_imports_stub_t *vita_imports_find_variable(vita_imports_module_t *mod, uint32_t NID); 66 67 68 VITA_TOOLCHAIN_PUBLIC vita_imports_stub_t *vita_imports_stub_new(const char *name, uint32_t NID); 69 VITA_TOOLCHAIN_PUBLIC void vita_imports_stub_free(vita_imports_stub_t *stub); 70 71 #endif