summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2012-09-20 14:00:09 -0400
committerAdam Jackson <ajax@redhat.com>2012-09-20 14:36:50 -0400
commit31bf81772e146af79b0c456aae2159eba8b0280f (patch)
tree950fe418cb2d2db5d9bb712706a96d8cf0592fbf
parentff8e3ad8074cd2c8bed49b39c40c2b4892118270 (diff)
dix: Repack ClientRec
Pick smaller types where possible, including bitfielding some Bools and small enums, then shuffle the result to be hole-free. 192 -> 128 bytes on LP64, 144 -> 96 bytes on ILP32. Signed-off-by: Adam Jackson <ajax@redhat.com>
-rw-r--r--include/dixstruct.h38
1 files changed, 18 insertions, 20 deletions
diff --git a/include/dixstruct.h b/include/dixstruct.h
index 875f6caac..c1236f5c9 100644
--- a/include/dixstruct.h
+++ b/include/dixstruct.h
@@ -56,8 +56,7 @@ ReplyNotSwappd(ClientPtr /* pClient */ ,
void * /* pbuf */ ) _X_NORETURN;
typedef enum { ClientStateInitial,
- /* 1 is unused now, was ClientStateAuthenticating */
- ClientStateRunning = 2,
+ ClientStateRunning,
ClientStateRetained,
ClientStateGone
} ClientState;
@@ -86,27 +85,29 @@ typedef struct _Window *SaveSetElt;
#endif
typedef struct _Client {
- int index;
- Mask clientAsMask;
pointer requestBuffer;
pointer osPrivate; /* for OS layer, including scheduler */
- Bool swapped;
- Bool local;
+ Mask clientAsMask;
+ short index;
+ unsigned char majorOp, minorOp;
+ int swapped:1;
+ int local:1;
+ int big_requests:1; /* supports large requests */
+ int clientGone:1;
+ int closeDownMode:2;
+ int clientState:2;
+ char smart_priority;
+ short noClientException; /* this client died or needs to be killed */
+ int priority;
ReplySwapPtr pSwapReplyFunc;
XID errorValue;
int sequence;
- int closeDownMode;
- int clientGone;
- int noClientException; /* this client died or needs to be
- * killed */
int ignoreCount; /* count for Attend/IgnoreClient */
- SaveSetElt *saveSet;
int numSaved;
+ SaveSetElt *saveSet;
int (**requestVector) (ClientPtr /* pClient */ );
CARD32 req_len; /* length of current request */
- Bool big_requests; /* supports large requests */
- int priority;
- ClientState clientState;
+ unsigned int replyBytesRemaining;
PrivateRec *devPrivates;
unsigned short xkbClientFlags;
unsigned short mapNotifyMask;
@@ -114,15 +115,12 @@ typedef struct _Client {
unsigned short vMajor, vMinor;
KeyCode minKC, maxKC;
- unsigned long replyBytesRemaining;
- int smart_priority;
- long smart_start_tick;
- long smart_stop_tick;
- long smart_check_tick;
+ int smart_start_tick;
+ int smart_stop_tick;
+ int smart_check_tick;
DeviceIntPtr clientPtr;
ClientIdPtr clientIds;
- unsigned short majorOp, minorOp;
} ClientRec;
/*