sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
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
17#ifndef __ERL_H__
18#define __ERL_H__
19
20#include <tamtypes.h>
21
22struct htab;
23
25#define ERL_FLAG_STICKY 1
27#define ERL_FLAG_STATIC 2
29#define ERL_FLAG_CLEAR 4
30
32 u8 * bytes;
33 u32 fullsize;
34 char * name;
35 char ** dependancies;
36 u32 flags;
37
38 /* Private */
39 struct htab * symbols;
40 struct erl_record_t * next, * prev;
41}; // 32 bytes.
42
43struct symbol_t {
44 struct erl_record_t * provider;
45 u32 address;
46};
47
48#ifdef __cplusplus
49extern "C" {
50#endif
51
52extern char _init_erl_prefix[];
53
54typedef struct erl_record_t * (*erl_loader_t)(char * erl_id);
55
56extern erl_loader_t _init_load_erl;
57
58extern struct erl_record_t * load_erl_from_mem(u8 * mem, int argc, char ** argv);
59extern struct erl_record_t * load_erl_from_file(const char * fname, int argc, char ** argv);
60extern struct erl_record_t * _init_load_erl_from_file(const char * fname, char * erl_id);
61
62/*
63 * By default, ERLs are relocated at a dynamic memory address -- a pointer
64 * returned by malloc(). The *_to_addr functions allow you to define a static
65 * address (must be different from ERL_DYN_ADDR) without allocating any memory.
66 */
67#define ERL_DYN_ADDR 0
68
69extern struct erl_record_t * load_erl_from_mem_to_addr(u8 * mem, u32 addr, int argc, char ** argv);
70extern struct erl_record_t * load_erl_from_file_to_addr(const char * fname, u32 addr, int argc, char ** argv);
71extern struct erl_record_t * _init_load_erl_from_file_to_addr(const char * fname, u32 addr, char * erl_id);
72
73extern int unload_erl(struct erl_record_t * erl);
74
75extern int erl_add_global_symbol(const char * symbol, u32 address);
76
77extern struct erl_record_t * find_erl(const char * name);
78extern struct erl_record_t * erl_resolve(u32 address);
79
80extern struct symbol_t * erl_find_local_symbol(const char * symbol, struct erl_record_t * erl);
81extern struct symbol_t * erl_find_symbol(const char * symbol);
82
83extern void erl_flush_symbols(struct erl_record_t * erl);
84
85#ifdef __cplusplus
86}
87#endif
88
89#endif /* __ERL_H__ */
Definition hashtab.h:58
Definition mem.c:336
Definition erl.h:43