|
GEL
0.99
|
#include <gel/common.h>#include "gel_public.h"#include "gel_types_plugin.h"#include "gel_base_plugin.h"#include "gel_load_plugin.h"#include "gel_memory_plugin.h"Go to the source code of this file.
Macros | |
| #define | PAGE_TRUNC(a, x) ((x) - ((x) & ((a)->arch->psize - 1))) |
| #define | VSTART_BLOCK(block) (block->exec_begin + block->base_vaddr) |
| #define | VEND_BLOCK(block) (block->exec_begin + block->base_vaddr + block->exec_size-1) |
| #define | CLUSTER_TRUNC(address, clustersize) ((address) - ((address) & (clustersize - 1))) |
| #define | SAME_CLUSTER(address1, address2, clustersize) ((address1 & (~(clustersize -1))) == (address2 & (~(clustersize-1)))) |
| #define | VADDR2VRELOC(f, a) ((a) + (f)->base_vaddr) |
| #define | VRELOC2VADDR(f, a) ((a) - (f)->base_vaddr) |
| #define | VADDR2RADDR(f, a) ((a) + (u8_t *)(f)->base_raddr) |
| #define | RADDR2VADDR(f, a) ((intptr_t)((raddr_t)(a) - (f)->base_raddr)) |
| #define | VRELOC2RADDR(f, a) (VADDR2RADDR((f),VRELOC2VADDR((f),(a)))) |
| #define | RADDR2VRELOC(f, a) (VADDR2VRELOC((f), RADDR2VADDR((f),(a)))) |
Ce fichier decrit l'interface des plugins. Il definit les types auxquels les plugins peuvent avoir acces. Il declare aussi toute les fonctions que les plugins doivent implementer pour pouvoir fonctionner.
Tout les plugins doivent etre stocke dans $GEL_BASEDIR/plugins/ (GEL_BASEDIR est definie au moment de la compilation par l'utilisateur) Les plugins ont le nom: plugin_NUM.so (ou NUM est le numero de la machine tel que defini dans les specs ELF) Les plugins pourront acceder aux informations sur la plateforme a l'aide de la structure gel_platform_t.
| #define CLUSTER_TRUNC | ( | address, | |
| clustersize | |||
| ) | ((address) - ((address) & (clustersize - 1))) |
| #define PAGE_TRUNC | ( | a, | |
| x | |||
| ) | ((x) - ((x) & ((a)->arch->psize - 1))) |
| #define RADDR2VADDR | ( | f, | |
| a | |||
| ) | ((intptr_t)((raddr_t)(a) - (f)->base_raddr)) |
Convertir d'adresse reelle en adresse virtuelle
| #define RADDR2VRELOC | ( | f, | |
| a | |||
| ) | (VADDR2VRELOC((f), RADDR2VADDR((f),(a)))) |
Convertir d'adresse virtuelle relogee en adresse reelle
| #define SAME_CLUSTER | ( | address1, | |
| address2, | |||
| clustersize | |||
| ) | ((address1 & (~(clustersize -1))) == (address2 & (~(clustersize-1)))) |
calcule si deux adresses sont situees dans le meme cluster memoire
| #define VADDR2RADDR | ( | f, | |
| a | |||
| ) | ((a) + (u8_t *)(f)->base_raddr) |
Convertir d'adresse virtuelle en adresse reelle
| #define VADDR2VRELOC | ( | f, | |
| a | |||
| ) | ((a) + (f)->base_vaddr) |
Convertir d'adresse virtuelle en adresse virtuelle relogee
| #define VEND_BLOCK | ( | block | ) | (block->exec_begin + block->base_vaddr + block->exec_size-1) |
| #define VRELOC2RADDR | ( | f, | |
| a | |||
| ) | (VADDR2RADDR((f),VRELOC2VADDR((f),(a)))) |
Convertir d'adresse reelle en virtuelle relogee
| #define VRELOC2VADDR | ( | f, | |
| a | |||
| ) | ((a) - (f)->base_vaddr) |
Convertir d'adresse virtuelle relogee en adresse virtuelle "simple"
| #define VSTART_BLOCK | ( | block | ) | (block->exec_begin + block->base_vaddr) |