diff options
author | Christophe Jaillet <jailletc36@apache.org> | 2023-02-19 15:15:03 +0000 |
---|---|---|
committer | Christophe Jaillet <jailletc36@apache.org> | 2023-02-19 15:15:03 +0000 |
commit | 994d6cd45d1400446ed0e854771d4bda43e123e4 (patch) | |
tree | 03d40e5b6f3bc797b1f31feb4087ee06023ab338 /modules/http2 | |
parent | 8c3125324eff715264cd0a788dbfce5f4ab2346a (diff) | |
download | httpd-994d6cd45d1400446ed0e854771d4bda43e123e4.tar.gz |
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
Diffstat (limited to 'modules/http2')
-rw-r--r-- | modules/http2/h2.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/modules/http2/h2.h b/modules/http2/h2.h index 250e7260e8..aa58b61a5a 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 { |