diff options
Diffstat (limited to 'src/arch/vmpa.c')
-rw-r--r-- | src/arch/vmpa.c | 44 |
1 files changed, 16 insertions, 28 deletions
diff --git a/src/arch/vmpa.c b/src/arch/vmpa.c index c32c836..27262d1 100644 --- a/src/arch/vmpa.c +++ b/src/arch/vmpa.c @@ -34,9 +34,6 @@ #include <i18n.h> -#include "../common/io.h" - - /* ---------------------- DEFINITION D'UNE POSITION EN MEMOIRE ---------------------- */ @@ -347,9 +344,8 @@ phys_t compute_vmpa_diff(const vmpa2t *a, const vmpa2t *b) /****************************************************************************** * * -* Paramètres : addr = élément à venir lire. [OUT] * -* fd = flux ouvert en lecture pour l'importation. * -* flags = éventuelles options d'envoi supplémentaires. * +* Paramètres : addr = élément à venir lire. [OUT] * +* pbuf = paquet de données où venir puiser les infos. * * * * Description : Lit la définition d'une adresse depuis un flux réseau. * * * @@ -359,31 +355,24 @@ phys_t compute_vmpa_diff(const vmpa2t *a, const vmpa2t *b) * * ******************************************************************************/ -bool recv_vmpa(vmpa2t *addr, int fd, int flags) +bool unpack_vmpa(vmpa2t *addr, packed_buffer *pbuf) { - virt_t val64; /* Valeur sur 64 bits */ - bool status; /* Bilan d'une réception */ - - status = safe_recv(fd, &val64, sizeof(uint64_t), MSG_WAITALL | flags); - if (!status) return false; - - addr->physical = be64toh(val64); + bool result; /* Bilan à retourner */ - status = safe_recv(fd, &val64, sizeof(uint64_t), MSG_WAITALL | flags); - if (!status) return false; + result = extract_packed_buffer(pbuf, (uint64_t *)&addr->physical, sizeof(uint64_t), true); - addr->virtual = be64toh(val64); + if (result) + result = extract_packed_buffer(pbuf, (uint64_t *)&addr->virtual, sizeof(uint64_t), true); - return true; + return result; } /****************************************************************************** * * -* Paramètres : addr = élément à venir écrire. * -* fd = flux ouvert en écriture pour l'exportation. * -* flags = éventuelles options d'envoi supplémentaires. * +* Paramètres : addr = élément à venir écrire. * +* pbuf = paquet de données où venir inscrire les infos. * * * * Description : Ecrit la définition d'une adresse dans un flux réseau. * * * @@ -393,17 +382,16 @@ bool recv_vmpa(vmpa2t *addr, int fd, int flags) * * ******************************************************************************/ -bool send_vmpa(const vmpa2t *addr, int fd, int flags) +bool pack_vmpa(const vmpa2t *addr, packed_buffer *pbuf) { - bool status; /* Bilan d'une émission */ + bool result; /* Bilan à retourner */ - status = safe_send(fd, (uint64_t []) { htobe64(addr->physical) }, sizeof(uint64_t), MSG_MORE | flags); - if (!status) return false; + result = extend_packed_buffer(pbuf, (uint64_t *)&addr->physical, sizeof(uint64_t), true); - status = safe_send(fd, (uint64_t []) { htobe64(addr->virtual) }, sizeof(uint64_t), flags); - if (!status) return false; + if (result) + result = extend_packed_buffer(pbuf, (uint64_t *)&addr->virtual, sizeof(uint64_t), true); - return true; + return result; } |