]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: stats-file: fix aligment issues
authorAurelien DARRAGON <adarragon@haproxy.com>
Wed, 3 Sep 2025 13:23:16 +0000 (15:23 +0200)
committerAurelien DARRAGON <adarragon@haproxy.com>
Wed, 3 Sep 2025 14:28:46 +0000 (16:28 +0200)
Document some byte holes and fix some potential aligment issues
between 32 and 64 bits architectures to ensure the shm_stats_file memory
mapping is consistent between operating systems.

include/haproxy/stats-file-t.h

index 7d6f351dac38deedc3b06ca4a0c5fc74a1015796..2ad7fafcbd70eb22b3d404fca1fa929800ae758a 100644 (file)
@@ -28,6 +28,7 @@ struct shm_stats_file_hdr {
                uint8_t major;
                uint8_t minor;
        } version;
+       /* 2 bytes hole */
        uint global_now_ms;   /* global monotonic date (ms) common to all processes using the shm */
        ullong global_now_ns; /* global monotonic date (ns) common to all processes using the shm */
        llong now_offset;     /* offset applied to global monotonic date on startup */
@@ -54,6 +55,7 @@ struct shm_stats_file_object {
        char guid[GUID_MAX_LEN + 1];
        uint8_t tgid; // thread group ID from 1 to 64
        uint8_t type; // SHM_STATS_FILE_OBJECT_TYPE_* to know how to handle object.data
+       ALWAYS_PAD(6); // 6 bytes hole, ensure it remains the same size 32 vs 64 bits arch
        uint64_t users; // bitfield that corresponds to users of the object (see shm_stats_file_hdr slots)
        /* as the struct may hold any of the types described here, let's make it
         * so it may store up to the heaviest one using an union