From fa68ba09820676563ba11f63213168e8e7bfd1d8 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Tue, 4 Feb 2020 14:25:08 +0100 Subject: Moved the definition of a lock bit. --- src/arch/instruction-int.h | 18 ------------------ src/arch/instruction.c | 32 ++++++++++++++++---------------- src/glibext/objhole.h | 23 +++++++++++++++++++++++ 3 files changed, 39 insertions(+), 34 deletions(-) diff --git a/src/arch/instruction-int.h b/src/arch/instruction-int.h index fcb5453..f53f2f6 100644 --- a/src/arch/instruction-int.h +++ b/src/arch/instruction-int.h @@ -74,24 +74,6 @@ typedef union _instr_obj_extra } instr_obj_extra; -/** - * Choix du bit de verrou pour le champ "lock". - */ - -#if __BYTE_ORDER == __LITTLE_ENDIAN - -# define INSTR_EXTRA_LOCK_BIT 31 - -#elif __BYTE_ORDER == __BIG_ENDIAN - -# define INSTR_EXTRA_LOCK_BIT 0 - -#else - -# error "Unknown byte order" - -#endif - /* Définition générique d'une instruction d'architecture (instance) */ struct _GArchInstruction { diff --git a/src/arch/instruction.c b/src/arch/instruction.c index 1090138..b9f9e29 100644 --- a/src/arch/instruction.c +++ b/src/arch/instruction.c @@ -287,13 +287,13 @@ bool g_arch_instruction_set_flag(GArchInstruction *instr, ArchInstrFlag flag) extra = GET_ARCH_INSTR_EXTRA(instr); - g_bit_lock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_lock(&extra->lock, HOLE_LOCK_BIT); extra->flags |= flag; result = true; - g_bit_unlock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_unlock(&extra->lock, HOLE_LOCK_BIT); return result; @@ -322,13 +322,13 @@ bool g_arch_instruction_unset_flag(GArchInstruction *instr, ArchInstrFlag flag) extra = GET_ARCH_INSTR_EXTRA(instr); - g_bit_lock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_lock(&extra->lock, HOLE_LOCK_BIT); extra->flags &= ~flag; result = true; - g_bit_unlock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_unlock(&extra->lock, HOLE_LOCK_BIT); return result; @@ -357,11 +357,11 @@ bool g_arch_instruction_has_flag(const GArchInstruction *instr, ArchInstrFlag fl extra = GET_ARCH_INSTR_EXTRA(instr); - g_bit_lock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_lock(&extra->lock, HOLE_LOCK_BIT); result = (extra->flags & flag); - g_bit_unlock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_unlock(&extra->lock, HOLE_LOCK_BIT); return result; @@ -387,11 +387,11 @@ ArchInstrFlag g_arch_instruction_get_flags(const GArchInstruction *instr) extra = GET_ARCH_INSTR_EXTRA(instr); - g_bit_lock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_lock(&extra->lock, HOLE_LOCK_BIT); result = extra->flags; - g_bit_unlock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_unlock(&extra->lock, HOLE_LOCK_BIT); return result; @@ -417,11 +417,11 @@ void g_arch_instruction_set_unique_id(GArchInstruction *instr, itid_t uid) extra = GET_ARCH_INSTR_EXTRA(instr); - g_bit_lock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_lock(&extra->lock, HOLE_LOCK_BIT); extra->uid = uid; - g_bit_unlock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_unlock(&extra->lock, HOLE_LOCK_BIT); } @@ -445,11 +445,11 @@ itid_t g_arch_instruction_get_unique_id(const GArchInstruction *instr) extra = GET_ARCH_INSTR_EXTRA(instr); - g_bit_lock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_lock(&extra->lock, HOLE_LOCK_BIT); result = extra->uid; - g_bit_unlock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_unlock(&extra->lock, HOLE_LOCK_BIT); return result; @@ -1598,14 +1598,14 @@ static bool g_arch_instruction_unserialize(GArchInstruction *instr, GAsmStorage { extra = GET_ARCH_INSTR_EXTRA(instr); - g_bit_lock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_lock(&extra->lock, HOLE_LOCK_BIT); result = extract_packed_buffer(pbuf, &extra->uid, sizeof(itid_t), true); if (result) result = extract_packed_buffer(pbuf, &extra->flags, sizeof(ArchInstrFlag), true); - g_bit_unlock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_unlock(&extra->lock, HOLE_LOCK_BIT); } @@ -1780,14 +1780,14 @@ static bool g_arch_instruction_serialize(GArchInstruction *instr, GAsmStorage *s { extra = GET_ARCH_INSTR_EXTRA(instr); - g_bit_lock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_lock(&extra->lock, HOLE_LOCK_BIT); result = extend_packed_buffer(pbuf, &extra->uid, sizeof(itid_t), true); if (result) result = extend_packed_buffer(pbuf, &extra->flags, sizeof(ArchInstrFlag), true); - g_bit_unlock(&extra->lock, INSTR_EXTRA_LOCK_BIT); + g_bit_unlock(&extra->lock, HOLE_LOCK_BIT); } diff --git a/src/glibext/objhole.h b/src/glibext/objhole.h index 184e599..ad28c63 100644 --- a/src/glibext/objhole.h +++ b/src/glibext/objhole.h @@ -68,4 +68,27 @@ +/** + * Choix du bit de verrou pour le champ "lock". + * + * Dans la structure exploitant le mot utilisé ici, ce verrou est généralement + * placé dans le bit de poids fort pour les objets qui l'utilisent. + */ + +#if __BYTE_ORDER == __LITTLE_ENDIAN + +# define HOLE_LOCK_BIT 31 + +#elif __BYTE_ORDER == __BIG_ENDIAN + +# define HOLE_LOCK_BIT 0 + +#else + +# error "Unknown byte order" + +#endif + + + #endif /* _GLIBEXT_OBJHOLE_H */ -- cgit v0.11.2-87-g4458