#include #include #define MUTEX_SIZE_X64 40 typedef struct my_xcb_ext_s { pthread_mutex_t lock; struct lazyreply *extensions; int extensions_size; } my_xcb_ext_t; typedef struct x64_xcb_ext_s { uint8_t lock[MUTEX_SIZE_X64]; struct lazyreply *extensions; int extensions_size; } x64_xcb_ext_t; typedef struct my_xcb_xid_s { pthread_mutex_t lock; uint32_t last; uint32_t base; uint32_t max; uint32_t inc; } my_xcb_xid_t; typedef struct x64_xcb_xid_s { uint8_t lock[MUTEX_SIZE_X64]; uint32_t last; uint32_t base; uint32_t max; uint32_t inc; } x64_xcb_xid_t; typedef struct my_xcb_fd_s { int fd[16]; int nfd; int ifd; } my_xcb_fd_t; typedef struct my_xcb_in_s { pthread_cond_t event_cond; int reading; char queue[4096]; int queue_len; uint64_t request_expected; uint64_t request_read; uint64_t request_completed; struct reply_list *current_reply; struct reply_list **current_reply_tail; void* replies; struct event_list *events; struct event_list **events_tail; struct reader_list *readers; struct special_list *special_waiters; struct pending_reply *pending_replies; struct pending_reply **pending_replies_tail; my_xcb_fd_t in_fd; struct xcb_special_event *special_events; } my_xcb_in_t; typedef struct x64_xcb_out_s { pthread_cond_t cond; int writing; pthread_cond_t socket_cond; void (*return_socket)(void *closure); void *socket_closure; int socket_moving; char queue[16384]; int queue_len; uint64_t request; uint64_t request_written; uint8_t reqlenlock[MUTEX_SIZE_X64]; int maximum_request_length_tag; uint32_t maximum_request_length; my_xcb_fd_t out_fd; } x64_xcb_out_t; typedef struct my_xcb_out_s { pthread_cond_t cond; int writing; pthread_cond_t socket_cond; void (*return_socket)(void *closure); void *socket_closure; int socket_moving; char queue[16384]; int queue_len; uint64_t request; uint64_t request_written; pthread_mutex_t reqlenlock; int maximum_request_length_tag; uint32_t maximum_request_length; my_xcb_fd_t out_fd; } my_xcb_out_t; typedef struct my_xcb_connection_s { int has_error; void *setup; int fd; pthread_mutex_t iolock; my_xcb_in_t in; my_xcb_out_t out; my_xcb_ext_t ext; my_xcb_xid_t xid; } my_xcb_connection_t; typedef struct x64_xcb_connection_s { int has_error; void *setup; int fd; uint8_t iolock[MUTEX_SIZE_X64]; my_xcb_in_t in; x64_xcb_out_t out; x64_xcb_ext_t ext; x64_xcb_xid_t xid; } x64_xcb_connection_t;