@@ -57,7 +57,7 @@ void equeue_destroy(equeue_t *q) {
57
57
while (q -> queue ) {
58
58
struct event * e = q -> queue ;
59
59
q -> queue = e -> next ;
60
- event_dealloc (q , e + 1 );
60
+ equeue_dealloc (q , e + 1 );
61
61
}
62
62
63
63
events_mutex_destroy (& q -> freelock );
@@ -67,7 +67,7 @@ void equeue_destroy(equeue_t *q) {
67
67
}
68
68
69
69
// equeue allocation functions
70
- static void * equeue_alloc (equeue_t * q , unsigned size ) {
70
+ static void * equeue_mem_alloc (equeue_t * q , unsigned size ) {
71
71
size = size + sizeof (unsigned );
72
72
size = (size + sizeof (unsigned )-1 ) & ~(sizeof (unsigned )-1 );
73
73
if (size < sizeof (struct equeue_chunk )) {
@@ -103,7 +103,7 @@ static void *equeue_alloc(equeue_t *q, unsigned size) {
103
103
return 0 ;
104
104
}
105
105
106
- static void equeue_dealloc (equeue_t * q , void * e ) {
106
+ static void equeue_mem_dealloc (equeue_t * q , void * e ) {
107
107
struct equeue_chunk * c = (struct equeue_chunk * )((unsigned * )e - 1 );
108
108
109
109
events_mutex_lock (& q -> freelock );
@@ -126,36 +126,36 @@ static void equeue_dealloc(equeue_t *q, void *e) {
126
126
}
127
127
128
128
// event allocation functions
129
- static inline int event_next_id (equeue_t * q ) {
129
+ static inline int equeue_next_id (equeue_t * q ) {
130
130
int id = q -> next_id ++ ;
131
131
if (q -> next_id < 0 ) {
132
132
q -> next_id = 42 ;
133
133
}
134
134
return id ;
135
135
}
136
136
137
- void * event_alloc (equeue_t * q , unsigned size ) {
138
- struct event * e = equeue_alloc (q , sizeof (struct event ) + size );
137
+ void * equeue_alloc (equeue_t * q , unsigned size ) {
138
+ struct event * e = equeue_mem_alloc (q , sizeof (struct event ) + size );
139
139
if (!e ) {
140
140
return 0 ;
141
141
}
142
142
143
- e -> id = event_next_id (q );
143
+ e -> id = equeue_next_id (q );
144
144
e -> target = 0 ;
145
145
e -> period = -1 ;
146
146
e -> dtor = 0 ;
147
147
148
148
return e + 1 ;
149
149
}
150
150
151
- void event_dealloc (equeue_t * q , void * p ) {
151
+ void equeue_dealloc (equeue_t * q , void * p ) {
152
152
struct event * e = (struct event * )p - 1 ;
153
153
154
154
if (e -> dtor ) {
155
155
e -> dtor (e + 1 );
156
156
}
157
157
158
- equeue_dealloc (q , e );
158
+ equeue_mem_dealloc (q , e );
159
159
}
160
160
161
161
// equeue scheduling functions
@@ -187,10 +187,10 @@ static struct event *equeue_dequeue(equeue_t *q, int id) {
187
187
return 0 ;
188
188
}
189
189
190
- static int equeue_post (equeue_t * q , struct event * e , int ms ) {
190
+ static int equeue_post_in (equeue_t * q , struct event * e , int ms ) {
191
191
int id = e -> id ;
192
192
if (ms < 0 ) {
193
- event_dealloc (q , e + 1 );
193
+ equeue_dealloc (q , e + 1 );
194
194
return id ;
195
195
}
196
196
@@ -202,23 +202,30 @@ static int equeue_post(equeue_t *q, struct event *e, int ms) {
202
202
return id ;
203
203
}
204
204
205
- static void equeue_cancel (equeue_t * q , int id ) {
205
+ int equeue_post (equeue_t * q , void (* cb )(void * ), void * p ) {
206
+ struct event * e = (struct event * )p - 1 ;
207
+ e -> cb = cb ;
208
+ int id = equeue_post_in (q , e , e -> target );
209
+ return id ;
210
+ }
211
+
212
+ void equeue_cancel (equeue_t * q , int id ) {
206
213
events_mutex_lock (& q -> queuelock );
207
214
struct event * e = equeue_dequeue (q , id );
208
215
events_mutex_unlock (& q -> queuelock );
209
216
210
217
if (e ) {
211
- event_dealloc (q , e + 1 );
218
+ equeue_dealloc (q , e + 1 );
212
219
}
213
220
}
214
221
215
222
void equeue_break (equeue_t * q ) {
216
- equeue_post (q , & q -> break_ , 0 );
223
+ equeue_post_in (q , & q -> break_ , 0 );
217
224
}
218
225
219
226
void equeue_dispatch (equeue_t * q , int ms ) {
220
227
if (ms >= 0 ) {
221
- equeue_post (q , & q -> break_ , ms );
228
+ equeue_post_in (q , & q -> break_ , ms );
222
229
}
223
230
224
231
while (1 ) {
@@ -244,7 +251,7 @@ void equeue_dispatch(equeue_t *q, int ms) {
244
251
245
252
if (e -> period >= 0 ) {
246
253
// requeue periodic tasks to avoid race conditions
247
- // in event_cancel
254
+ // in equeue_cancel
248
255
equeue_enqueue (q , e , e -> period );
249
256
}
250
257
events_mutex_unlock (& q -> queuelock );
@@ -257,7 +264,7 @@ void equeue_dispatch(equeue_t *q, int ms) {
257
264
e -> cb (e + 1 );
258
265
259
266
if (e -> period < 0 ) {
260
- event_dealloc (q , e + 1 );
267
+ equeue_dealloc (q , e + 1 );
261
268
}
262
269
}
263
270
@@ -281,18 +288,6 @@ void event_dtor(void *p, void (*dtor)(void *)) {
281
288
e -> dtor = dtor ;
282
289
}
283
290
284
- // event operations
285
- int event_post (equeue_t * q , void (* cb )(void * ), void * p ) {
286
- struct event * e = (struct event * )p - 1 ;
287
- e -> cb = cb ;
288
- int id = equeue_post (q , e , e -> target );
289
- return id ;
290
- }
291
-
292
- void event_cancel (equeue_t * q , int id ) {
293
- equeue_cancel (q , id );
294
- }
295
-
296
291
// simple callbacks
297
292
struct ecallback {
298
293
void (* cb )(void * );
@@ -304,31 +299,31 @@ static void ecallback_dispatch(void *p) {
304
299
e -> cb (e -> data );
305
300
}
306
301
307
- int event_call (equeue_t * q , void (* cb )(void * ), void * data ) {
308
- struct ecallback * e = event_alloc (q , sizeof (struct ecallback ));
302
+ int equeue_call (equeue_t * q , void (* cb )(void * ), void * data ) {
303
+ struct ecallback * e = equeue_alloc (q , sizeof (struct ecallback ));
309
304
if (!e ) {
310
305
return 0 ;
311
306
}
312
307
313
308
e -> cb = cb ;
314
309
e -> data = data ;
315
- return event_post (q , ecallback_dispatch , e );
310
+ return equeue_post (q , ecallback_dispatch , e );
316
311
}
317
312
318
- int event_call_in (equeue_t * q , int ms , void (* cb )(void * ), void * data ) {
319
- struct ecallback * e = event_alloc (q , sizeof (struct ecallback ));
313
+ int equeue_call_in (equeue_t * q , int ms , void (* cb )(void * ), void * data ) {
314
+ struct ecallback * e = equeue_alloc (q , sizeof (struct ecallback ));
320
315
if (!e ) {
321
316
return 0 ;
322
317
}
323
318
324
319
event_delay (e , ms );
325
320
e -> cb = cb ;
326
321
e -> data = data ;
327
- return event_post (q , ecallback_dispatch , e );
322
+ return equeue_post (q , ecallback_dispatch , e );
328
323
}
329
324
330
- int event_call_every (equeue_t * q , int ms , void (* cb )(void * ), void * data ) {
331
- struct ecallback * e = event_alloc (q , sizeof (struct ecallback ));
325
+ int equeue_call_every (equeue_t * q , int ms , void (* cb )(void * ), void * data ) {
326
+ struct ecallback * e = equeue_alloc (q , sizeof (struct ecallback ));
332
327
if (!e ) {
333
328
return 0 ;
334
329
}
@@ -337,5 +332,5 @@ int event_call_every(equeue_t *q, int ms, void (*cb)(void*), void *data) {
337
332
event_period (e , ms );
338
333
e -> cb = cb ;
339
334
e -> data = data ;
340
- return event_post (q , ecallback_dispatch , e );
335
+ return equeue_post (q , ecallback_dispatch , e );
341
336
}
0 commit comments