blob: 997f02c5acd34db06476a2a4e4ab8233db9eb6f8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
#include <stdint.h>
#include <pthread.h>
#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;
|