From 576d568c1627956e5ede02caeaad71d330d6d3af Mon Sep 17 00:00:00 2001 From: c9s Date: Thu, 12 Nov 2015 22:01:55 +0800 Subject: [PATCH] use __attribute aligned to align struct --- include/r3.h | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/include/r3.h b/include/r3.h index 0b1604a..237014d 100644 --- a/include/r3.h +++ b/include/r3.h @@ -27,7 +27,7 @@ typedef struct _edge edge; typedef struct _node node; typedef struct _route route; -struct _node { +struct _node { edge * edges; char * combined_pattern; pcre * pcre_pattern; @@ -48,9 +48,7 @@ struct _node { unsigned char edge_cap; unsigned char route_len; unsigned char route_cap; - - char _padding[ 64 - sizeof(unsigned char) * 3]; -}; +} __attribute((aligned(64))); #define r3_node_edge_pattern(node,i) node->edges[i]->pattern #define r3_node_edge_pattern_len(node,i) node->edges[i]->pattern_len @@ -61,8 +59,7 @@ struct _edge { unsigned int pattern_len; // 4byte unsigned int opcode; // 4byte unsigned int has_slug; // 4byte - char _padding[ 64 - (sizeof(char*) + sizeof(node*) + sizeof(unsigned int) * 3) ]; -}; +} __attribute((aligned(64))); struct _route { char * path; @@ -77,7 +74,7 @@ struct _route { char * remote_addr_pattern; int remote_addr_pattern_len; -}; +} __attribute((aligned(64))); typedef struct { str_array * vars;