]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Re-order the fields of 'struct h2_session_props' to avoid a hole and some padding.
authorChristophe Jaillet <jailletc36@apache.org>
Sun, 19 Feb 2023 15:15:03 +0000 (15:15 +0000)
committerChristophe Jaillet <jailletc36@apache.org>
Sun, 19 Feb 2023 15:15:03 +0000 (15:15 +0000)
On x86_64, this shrinks the size of the struct from 40 to 32 bytes.

Before the patch, pahole states that:

struct h2_session_props {
int                        accepted_max;         /*     0     4 */
int                        completed_max;        /*     4     4 */
int                        emitted_count;        /*     8     4 */
int                        emitted_max;          /*    12     4 */
int                        error;                /*    16     4 */

/* XXX 4 bytes hole, try to pack */

const char  *              error_msg;            /*    24     8 */
unsigned int               accepting:1;          /*    32: 0  4 */
unsigned int               shutdown:1;           /*    32: 1  4 */

/* size: 40, cachelines: 1, members: 8 */
/* sum members: 28, holes: 1, sum holes: 4 */
/* sum bitfield members: 2 bits (0 bytes) */
/* padding: 4 */
/* bit_padding: 30 bits */
/* last cacheline: 40 bytes */
};

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1907756 13f79535-47bb-0310-9956-ffa450edef68

modules/http2/h2.h

index 250e7260e8fd93aa534ee28af4a75a793e67fa18..aa58b61a5a2201ce276bf1a24ef90edcdbfb06f9 100644 (file)
@@ -114,10 +114,10 @@ typedef struct h2_session_props {
     int completed_max;     /* the highest remote stream completed */
     int emitted_count;     /* the number of local streams sent */
     int emitted_max;       /* the highest local stream id sent */
-    int error;             /* the last session error encountered */
-    const char *error_msg; /* the short message given on the error */
     unsigned int accepting : 1;     /* if the session is accepting new streams */
     unsigned int shutdown : 1;      /* if the final GOAWAY has been sent */
+    int error;             /* the last session error encountered */
+    const char *error_msg; /* the short message given on the error */
 } h2_session_props;
 
 typedef enum h2_stream_state_t {