diff options
Diffstat (limited to 'src/arch')
| -rw-r--r-- | src/arch/vmpa.c | 27 | ||||
| -rw-r--r-- | src/arch/vmpa.h | 3 | 
2 files changed, 30 insertions, 0 deletions
diff --git a/src/arch/vmpa.c b/src/arch/vmpa.c index 70ea52b..bf97a37 100644 --- a/src/arch/vmpa.c +++ b/src/arch/vmpa.c @@ -172,6 +172,33 @@ void copy_vmpa(vmpa2t *dest, const vmpa2t *src)  /******************************************************************************  *                                                                             * +*  Paramètres  : addr = position à consulter.                                 * +*                                                                             * +*  Description : Calcule une empreinte de localisation dans l'espace mémoire. * +*                                                                             * +*  Retour      : Condensat déterminé pour la localisation.                    * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +uint32_t hash_vmpa(const vmpa2t *addr) +{ +    uint32_t result;                        /* Empreinte à retourner       */ + +    result = addr->physical; +    result ^= (addr->physical >> 32); + +    result ^= addr->virtual; +    result ^= (addr->virtual >> 32); + +    return result; + +} + + +/****************************************************************************** +*                                                                             *  *  Paramètres  : a = première définition à analyser.                          *  *                b = seconde définition à analyser.                           *  *                                                                             * diff --git a/src/arch/vmpa.h b/src/arch/vmpa.h index 8dfc646..66f8769 100644 --- a/src/arch/vmpa.h +++ b/src/arch/vmpa.h @@ -90,6 +90,9 @@ void delete_vmpa(vmpa2t *);  /* Copie la définition d'un adressage dans un autre. */  void copy_vmpa(vmpa2t *, const vmpa2t *); +/* Calcule une empreinte de localisation dans l'espace mémoire. */ +uint32_t hash_vmpa(const vmpa2t *); +  /* Compare entre elles deux adresses physiques. */  int cmp_vmpa_by_phy(const vmpa2t *, const vmpa2t *);  | 
