/* Chrysalide - Outil d'analyse de fichiers binaires * vmpa.h - prototypes des adressages virtuels ou physiques * * Copyright (C) 2014 Cyrille Bagard * * This file is part of Chrysalide. * * OpenIDA is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * OpenIDA is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Foobar. If not, see . */ #ifndef _ARCH_VMPA_H #define _ARCH_VMPA_H #include #include #include #include #include "archbase.h" #include "../common/cpp.h" #define VMPA_MAX_SIZE (sizeof(STR(ULLONG_MAX)) + 1) /* Adresse mémoire ou position physique */ struct _vmpa2_t { off_t physical; /* Position physique */ uint64_t virtual; /* Adresse virtuelle */ MemoryDataSize last_phy_size; /* Dernière taille demandée #1 */ MemoryDataSize last_virt_size; /* Dernière taille demandée #2 */ char phy_cache[VMPA_MAX_SIZE]; /* Impression physique cachée */ char virt_cache[VMPA_MAX_SIZE]; /* Impression virtuelle cachée */ }; /* Adresse mémoire ou position physique */ typedef struct _vmpa2_t vmpa2_t; typedef struct _vmpa2_t vmpa2t; /* Initialise une localisation dans l'espace mémoire/physique. */ void init_vmpa(vmpa2t *, off_t, uint64_t); /* Crée une localisation dans l'adressage mémoire. */ vmpa2t *make_vmpa(off_t, uint64_t); #define cmp_vmpa(a, b) 0 /* Lit la définition d'une adresse depuis un flux réseau. */ bool recv_vmpa(vmpa2t *, int, int); /* Ecrit la définition d'une adresse dans un flux réseau. */ bool send_vmpa(const vmpa2t *, int, int); /* Transforme une adresse physique en chaîne de caractères. */ const char *vmpa2_phy_to_string(vmpa2t *, MemoryDataSize); /* Transforme une adresse virtuelle en chaîne de caractères. */ const char *vmpa2_virt_to_string(vmpa2t *, MemoryDataSize); #endif /* _ARCH_VMPA_H */