PatchworkOS  28a9544
A non-POSIX operating system.
Loading...
Searching...
No Matches
symbol.h
Go to the documentation of this file.
1#pragma once
2
3#include <kernel/utils/map.h>
4
5#include <boot/boot_info.h>
6
7#include <sys/elf.h>
8#include <sys/list.h>
9
57#define SYMBOL_MAX_NAME MAP_KEY_MAX_LENGTH
58
68
81
95
111
126
135
151uint64_t symbol_add(const char* name, void* addr, symbol_group_id_t groupId, Elf64_Symbol_Binding binding,
152 Elf64_Symbol_Type type);
153
160
174uint64_t symbol_resolve_addr(symbol_info_t* outSymbol, void* addr);
175
183uint64_t symbol_resolve_name(symbol_info_t* outSymbol, const char* name);
184
uint64_t symbol_resolve_name(symbol_info_t *outSymbol, const char *name)
Resolve a symbol by name.
Definition symbol.c:344
uint64_t symbol_group_id_t
Symbol group identifier type.
Definition symbol.h:67
uint64_t symbol_resolve_addr(symbol_info_t *outSymbol, void *addr)
Resolve a symbol by address.
Definition symbol.c:338
uint64_t symbol_add(const char *name, void *addr, symbol_group_id_t groupId, Elf64_Symbol_Binding binding, Elf64_Symbol_Type type)
Add a symbol to the kernel symbol table.
Definition symbol.c:165
#define SYMBOL_MAX_NAME
Maximum length of a symbol name.
Definition symbol.h:57
void symbol_remove_group(symbol_group_id_t groupId)
Remove all symbols from the kernel symbol table in the given group.
Definition symbol.c:278
symbol_group_id_t symbol_generate_group_id(void)
Generate a unique symbol group identifier.
Definition symbol.c:24
Elf64_Symbol_Binding
Symbol binding values stored in st_info.
Definition elf.h:565
Elf64_Symbol_Type
Symbol type values stored in st_info.
Definition elf.h:588
__UINT64_TYPE__ uint64_t
Definition stdint.h:17
A entry in a doubly linked list.
Definition list.h:38
A doubly linked list.
Definition list.h:51
Map entry structure.
Definition map.h:68
Symbol address mapping structure.
Definition symbol.h:104
symbol_group_id_t groupId
Definition symbol.h:107
Elf64_Symbol_Binding binding
Definition symbol.h:108
void * addr
Definition symbol.h:106
Elf64_Symbol_Type type
Definition symbol.h:109
list_entry_t nameEntry
Definition symbol.h:105
list_t names
Definition symbol.h:79
map_entry_t mapEntry
Definition symbol.h:77
symbol_group_id_t id
Definition symbol.h:78
Symbol information structure.
Definition symbol.h:119
void * addr
Definition symbol.h:121
symbol_group_id_t groupId
Definition symbol.h:122
Elf64_Symbol_Binding binding
Definition symbol.h:123
Elf64_Symbol_Type type
Definition symbol.h:124
Symbol name mapping structure.
Definition symbol.h:89
list_entry_t groupEntry
Definition symbol.h:90
list_t addrs
Definition symbol.h:92
map_entry_t mapEntry
Definition symbol.h:91