ps2sdk  1.1
A collection of Open Source libraries used for developing applications on Sony's PlayStation 2® (PS2).
erl.h
Go to the documentation of this file.
1 /*
2 # _____ ___ ____ ___ ____
3 # ____| | ____| | | |____|
4 # | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5 #-----------------------------------------------------------------------
6 # Copyright 2001-2004, ps2dev - http://www.ps2dev.org
7 # Licenced under Academic Free License version 2.0
8 # Review ps2sdk README & LICENSE files for further details.
9 */
10 
16 #ifndef __ERL_H__
17 #define __ERL_H__
18 
19 #include <tamtypes.h>
20 
21 struct htab;
22 
24 #define ERL_FLAG_STICKY 1
26 #define ERL_FLAG_STATIC 2
28 #define ERL_FLAG_CLEAR 4
29 
30 struct erl_record_t {
31  u8 * bytes;
33  char * name;
34  char ** dependancies;
36 
37  /* Private */
38  struct htab * symbols;
39  struct erl_record_t * next, * prev;
40 }; // 32 bytes.
41 
42 struct symbol_t {
45 };
46 
47 #ifdef __cplusplus
48 extern "C" {
49 #endif
50 
51 extern char _init_erl_prefix[];
52 
53 typedef struct erl_record_t * (*erl_loader_t)(char * erl_id);
54 
55 extern erl_loader_t _init_load_erl;
56 
57 struct erl_record_t * load_erl_from_mem(u8 * mem, int argc, char ** argv);
58 struct erl_record_t * load_erl_from_file(const char * fname, int argc, char ** argv);
59 struct erl_record_t * _init_load_erl_from_file(const char * fname, char * erl_id);
60 
61 /*
62  * By default, ERLs are relocated at a dynamic memory address -- a pointer
63  * returned by malloc(). The *_to_addr functions allow you to define a static
64  * address (must be different from ERL_DYN_ADDR) without allocating any memory.
65  */
66 #define ERL_DYN_ADDR 0
67 
68 struct erl_record_t * load_erl_from_mem_to_addr(u8 * mem, u32 addr, int argc, char ** argv);
69 struct erl_record_t * load_erl_from_file_to_addr(const char * fname, u32 addr, int argc, char ** argv);
70 struct erl_record_t * _init_load_erl_from_file_to_addr(const char * fname, u32 addr, char * erl_id);
71 
72 int unload_erl(struct erl_record_t * erl);
73 
74 int erl_add_global_symbol(const char * symbol, u32 address);
75 
76 struct erl_record_t * find_erl(const char * name);
77 struct erl_record_t * erl_resolve(u32 address);
78 
79 struct symbol_t * erl_find_local_symbol(const char * symbol, struct erl_record_t * erl);
80 struct symbol_t * erl_find_symbol(const char * symbol);
81 
82 void erl_flush_symbols(struct erl_record_t * erl);
83 
84 #ifdef __cplusplus
85 }
86 #endif
87 
88 #endif /* __ERL_H__ */
char * erl_id
Definition: erl-support.c:15
char _init_erl_prefix[]
Definition: erl.c:281
int erl_add_global_symbol(const char *symbol, u32 address)
Definition: erl.c:574
int unload_erl(struct erl_record_t *erl)
Definition: erl.c:1084
struct erl_record_t * load_erl_from_mem_to_addr(u8 *mem, u32 addr, int argc, char **argv)
Definition: erl.c:1041
struct erl_record_t * load_erl_from_file_to_addr(const char *fname, u32 addr, int argc, char **argv)
Definition: erl.c:1048
struct symbol_t * erl_find_symbol(const char *symbol)
Definition: erl.c:443
struct erl_record_t * load_erl_from_file(const char *fname, int argc, char **argv)
Definition: erl.c:1030
struct symbol_t * erl_find_local_symbol(const char *symbol, struct erl_record_t *erl)
Definition: erl.c:427
void erl_flush_symbols(struct erl_record_t *erl)
Definition: erl.c:1145
struct erl_record_t * _init_load_erl_from_file(const char *fname, char *erl_id)
Definition: erl.c:1012
struct erl_record_t * find_erl(const char *name)
Definition: erl.c:1133
struct erl_record_t * erl_resolve(u32 address)
Definition: erl.c:1121
erl_loader_t _init_load_erl
Definition: erl.c:938
struct erl_record_t * load_erl_from_mem(u8 *mem, int argc, char **argv)
Definition: erl.c:1034
struct erl_record_t * _init_load_erl_from_file_to_addr(const char *fname, u32 addr, char *erl_id)
Definition: erl.c:1055
u32 flags
Definition: erl.h:35
struct htab * symbols
Definition: erl.h:38
char ** dependancies
Definition: erl.h:34
u32 fullsize
Definition: erl.h:32
struct erl_record_t * next
Definition: erl.h:39
struct erl_record_t * prev
Definition: erl.h:39
char * name
Definition: erl.h:33
u8 * bytes
Definition: erl.h:31
Definition: hashtab.h:56
Definition: erl.h:42
u32 address
Definition: erl.h:44
struct erl_record_t * provider
Definition: erl.h:43
unsigned int u32
Definition: tamtypes.h:30
unsigned char u8
Definition: tamtypes.h:23