From: Christophe Jaillet Date: Sun, 19 Feb 2023 15:15:03 +0000 (+0000) Subject: Re-order the fields of 'struct h2_session_props' to avoid a hole and some padding. X-Git-Tag: 2.5.0-alpha2-ci-test-only~97 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=994d6cd45d1400446ed0e854771d4bda43e123e4;p=thirdparty%2Fapache%2Fhttpd.git Re-order the fields of 'struct h2_session_props' to avoid a hole and some padding. 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 --- diff --git a/modules/http2/h2.h b/modules/http2/h2.h index 250e7260e8f..aa58b61a5a2 100644 --- a/modules/http2/h2.h +++ b/modules/http2/h2.h @@ -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 {