Skip to content
This repository was archived by the owner on Aug 19, 2021. It is now read-only.

Commit c82cd96

Browse files
committed
Renamed to the equeue library
- Differentiates the equeue library from other event queue libraries that don't focus on composability (libev, libevent) - Emphasizes core component of the equeue library - Gives obvious prefix for public symbols - Maximizes the vowel to consonant ratio in the name File changes: events.* -> equeue.* events_*.* -> equeue_*.* Define changes: EVENTS_* -> EQUEUE_* Function changes: events_tick_* -> equeue_tick_* events_mutex_* -> equeue_mutex_* events_sema_* -> equeue_sema_* event_* -> equeue_event_*
1 parent bd91305 commit c82cd96

File tree

11 files changed

+169
-169
lines changed

11 files changed

+169
-169
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
TARGET = libevents.a
1+
TARGET = libequeue.a
22

33
CC = gcc
44
AR = ar

README.md

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
## Events ##
1+
## The equeue library ##
22

3-
The events library provides a flexible event queue implementation
4-
that acts as a drop in scheduler and framework for composable event
5-
loops.
3+
The equeue library provides a composable event queue implementation
4+
that acts as a drop in scheduler and event framework.
65

76
``` c
8-
#include "events.h"
7+
#include "equeue.h"
98
#include <stdio.h>
109

1110
void print(void *s) {
@@ -15,12 +14,12 @@ void print(void *s) {
1514
int main() {
1615
// creates a queue with space for 32 basic events
1716
equeue_t queue;
18-
equeue_create(&queue, 32*EVENTS_EVENT_SIZE);
17+
equeue_create(&queue, 32*EQUEUE_EVENT_SIZE);
1918

2019
// events are simple callbacks
2120
equeue_call(&queue, print, "called immediately");
22-
equeue_call_in(&queue, print, "called in 2 seconds", 2000);
23-
equeue_call_every(&queue, print, "called every 1 seconds", 1000);
21+
equeue_call_in(&queue, 2000, print, "called in 2 seconds");
22+
equeue_call_every(&queue, 1000, print, "called every 1 seconds");
2423

2524
// events are executed when dispatch is called
2625
equeue_dispatch(&queue, 3000);
@@ -32,14 +31,14 @@ int main() {
3231
}
3332
```
3433
35-
The events library can be used for normal event loops, however it also
36-
supports multithreaded environments. More information on the idea
37-
behind composable event loops
34+
The equeue library can be used for a normal event loops, however it also
35+
supports composition and multithreaded environments. More information on
36+
the idea behind composable event loops
3837
[here](https://gist.github.com/geky/4969d940f1bd5596bdc10e79093e2553).
3938
4039
## Tests ##
4140
42-
The events library uses a set of local tests based on the posix implementation.
41+
The equeue library uses a set of local tests based on the posix implementation.
4342
4443
Runtime tests are located in [tests.c](tests/tests.c):
4544
@@ -63,6 +62,6 @@ cat results.txt | make prof
6362
## Porting ##
6463

6564
The events library requires a small porting layer:
66-
- [events_tick](events_tick.h) - monotonic counter
67-
- [events_mutex](events_mutex.h) - non-recursive mutex
68-
- [events_sema](events_sema.h) - binary semaphore
65+
- [equeue_tick](equeue_tick.h) - monotonic counter
66+
- [equeue_mutex](equeue_mutex.h) - non-recursive mutex
67+
- [equeue_sema](equeue_sema.h) - binary semaphore

events.c renamed to equeue.c

Lines changed: 48 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Copyright (c) 2016 Christopher Haster
55
* Distributed under the MIT license
66
*/
7-
#include "events.h"
7+
#include "equeue.h"
88

99
#include <stdlib.h>
1010
#include <string.h>
@@ -29,23 +29,23 @@ int equeue_create_inplace(equeue_t *q, unsigned size, void *buffer) {
2929

3030
q->queue = 0;
3131
q->next_id = 42;
32-
q->break_ = (struct event){
32+
q->break_ = (struct equeue_event){
3333
.id = 0,
3434
.period = -1,
3535
};
3636

3737
int err;
38-
err = events_sema_create(&q->eventsema);
38+
err = equeue_sema_create(&q->eventsema);
3939
if (err < 0) {
4040
return err;
4141
}
4242

43-
err = events_mutex_create(&q->queuelock);
43+
err = equeue_mutex_create(&q->queuelock);
4444
if (err < 0) {
4545
return err;
4646
}
4747

48-
err = events_mutex_create(&q->freelock);
48+
err = equeue_mutex_create(&q->freelock);
4949
if (err < 0) {
5050
return err;
5151
}
@@ -55,14 +55,14 @@ int equeue_create_inplace(equeue_t *q, unsigned size, void *buffer) {
5555

5656
void equeue_destroy(equeue_t *q) {
5757
while (q->queue) {
58-
struct event *e = q->queue;
58+
struct equeue_event *e = q->queue;
5959
q->queue = e->next;
6060
equeue_dealloc(q, e+1);
6161
}
6262

63-
events_mutex_destroy(&q->freelock);
64-
events_mutex_destroy(&q->queuelock);
65-
events_sema_destroy(&q->eventsema);
63+
equeue_mutex_destroy(&q->freelock);
64+
equeue_mutex_destroy(&q->queuelock);
65+
equeue_sema_destroy(&q->eventsema);
6666
free(q->buffer);
6767
}
6868

@@ -74,7 +74,7 @@ static void *equeue_mem_alloc(equeue_t *q, unsigned size) {
7474
size = sizeof(struct equeue_chunk);
7575
}
7676

77-
events_mutex_lock(&q->freelock);
77+
equeue_mutex_lock(&q->freelock);
7878

7979
for (struct equeue_chunk **p = &q->chunks; *p; p = &(*p)->nchunk) {
8080
if ((*p)->size >= size) {
@@ -85,7 +85,7 @@ static void *equeue_mem_alloc(equeue_t *q, unsigned size) {
8585
} else {
8686
*p = c->nchunk;
8787
}
88-
events_mutex_unlock(&q->freelock);
88+
equeue_mutex_unlock(&q->freelock);
8989
return (unsigned *)c + 1;
9090
}
9191
}
@@ -95,18 +95,18 @@ static void *equeue_mem_alloc(equeue_t *q, unsigned size) {
9595
q->slab.data += size;
9696
q->slab.size -= size;
9797
c->size = size;
98-
events_mutex_unlock(&q->freelock);
98+
equeue_mutex_unlock(&q->freelock);
9999
return (unsigned *)c + 1;
100100
}
101101

102-
events_mutex_unlock(&q->freelock);
102+
equeue_mutex_unlock(&q->freelock);
103103
return 0;
104104
}
105105

106106
static void equeue_mem_dealloc(equeue_t *q, void *e) {
107107
struct equeue_chunk *c = (struct equeue_chunk *)((unsigned *)e - 1);
108108

109-
events_mutex_lock(&q->freelock);
109+
equeue_mutex_lock(&q->freelock);
110110

111111
struct equeue_chunk **p = &q->chunks;
112112
while (*p && (*p)->size < c->size) {
@@ -122,7 +122,7 @@ static void equeue_mem_dealloc(equeue_t *q, void *e) {
122122
}
123123
*p = c;
124124

125-
events_mutex_unlock(&q->freelock);
125+
equeue_mutex_unlock(&q->freelock);
126126
}
127127

128128
// event allocation functions
@@ -135,7 +135,8 @@ static inline int equeue_next_id(equeue_t *q) {
135135
}
136136

137137
void *equeue_alloc(equeue_t *q, unsigned size) {
138-
struct event *e = equeue_mem_alloc(q, sizeof(struct event) + size);
138+
struct equeue_event *e = equeue_mem_alloc(q,
139+
sizeof(struct equeue_event) + size);
139140
if (!e) {
140141
return 0;
141142
}
@@ -149,7 +150,7 @@ void *equeue_alloc(equeue_t *q, unsigned size) {
149150
}
150151

151152
void equeue_dealloc(equeue_t *q, void *p) {
152-
struct event *e = (struct event*)p - 1;
153+
struct equeue_event *e = (struct equeue_event*)p - 1;
153154

154155
if (e->dtor) {
155156
e->dtor(e+1);
@@ -163,10 +164,10 @@ static inline int equeue_tickdiff(unsigned a, unsigned b) {
163164
return (int)(a - b);
164165
}
165166

166-
static void equeue_enqueue(equeue_t *q, struct event *e, unsigned ms) {
167-
e->target = events_tick() + ms;
167+
static void equeue_enqueue(equeue_t *q, struct equeue_event *e, unsigned ms) {
168+
e->target = equeue_tick() + ms;
168169

169-
struct event **p = &q->queue;
170+
struct equeue_event **p = &q->queue;
170171
while (*p && equeue_tickdiff((*p)->target, e->target) <= 0) {
171172
p = &(*p)->next;
172173
}
@@ -175,10 +176,10 @@ static void equeue_enqueue(equeue_t *q, struct event *e, unsigned ms) {
175176
*p = e;
176177
}
177178

178-
static struct event *equeue_dequeue(equeue_t *q, int id) {
179-
for (struct event **p = &q->queue; *p; p = &(*p)->next) {
179+
static struct equeue_event *equeue_dequeue(equeue_t *q, int id) {
180+
for (struct equeue_event **p = &q->queue; *p; p = &(*p)->next) {
180181
if ((*p)->id == id) {
181-
struct event *e = *p;
182+
struct equeue_event *e = *p;
182183
*p = (*p)->next;
183184
return e;
184185
}
@@ -187,32 +188,32 @@ static struct event *equeue_dequeue(equeue_t *q, int id) {
187188
return 0;
188189
}
189190

190-
static int equeue_post_in(equeue_t *q, struct event *e, int ms) {
191+
static int equeue_post_in(equeue_t *q, struct equeue_event *e, int ms) {
191192
int id = e->id;
192193
if (ms < 0) {
193194
equeue_dealloc(q, e+1);
194195
return id;
195196
}
196197

197-
events_mutex_lock(&q->queuelock);
198+
equeue_mutex_lock(&q->queuelock);
198199
equeue_enqueue(q, e, ms);
199-
events_mutex_unlock(&q->queuelock);
200+
equeue_mutex_unlock(&q->queuelock);
200201

201-
events_sema_release(&q->eventsema);
202+
equeue_sema_release(&q->eventsema);
202203
return id;
203204
}
204205

205206
int equeue_post(equeue_t *q, void (*cb)(void*), void *p) {
206-
struct event *e = (struct event*)p - 1;
207+
struct equeue_event *e = (struct equeue_event*)p - 1;
207208
e->cb = cb;
208209
int id = equeue_post_in(q, e, e->target);
209210
return id;
210211
}
211212

212213
void equeue_cancel(equeue_t *q, int id) {
213-
events_mutex_lock(&q->queuelock);
214-
struct event *e = equeue_dequeue(q, id);
215-
events_mutex_unlock(&q->queuelock);
214+
equeue_mutex_lock(&q->queuelock);
215+
struct equeue_event *e = equeue_dequeue(q, id);
216+
equeue_mutex_unlock(&q->queuelock);
216217

217218
if (e) {
218219
equeue_dealloc(q, e+1);
@@ -234,27 +235,27 @@ void equeue_dispatch(equeue_t *q, int ms) {
234235
while (q->queue) {
235236
deadline = -1;
236237

237-
events_mutex_lock(&q->queuelock);
238+
equeue_mutex_lock(&q->queuelock);
238239
if (!q->queue) {
239-
events_mutex_unlock(&q->queuelock);
240+
equeue_mutex_unlock(&q->queuelock);
240241
break;
241242
}
242243

243-
deadline = equeue_tickdiff(q->queue->target, events_tick());
244+
deadline = equeue_tickdiff(q->queue->target, equeue_tick());
244245
if (deadline > 0) {
245-
events_mutex_unlock(&q->queuelock);
246+
equeue_mutex_unlock(&q->queuelock);
246247
break;
247248
}
248249

249-
struct event *e = q->queue;
250+
struct equeue_event *e = q->queue;
250251
q->queue = e->next;
251252

252253
if (e->period >= 0) {
253254
// requeue periodic tasks to avoid race conditions
254255
// in equeue_cancel
255256
equeue_enqueue(q, e, e->period);
256257
}
257-
events_mutex_unlock(&q->queuelock);
258+
equeue_mutex_unlock(&q->queuelock);
258259

259260
if (e == &q->break_) {
260261
return;
@@ -268,23 +269,23 @@ void equeue_dispatch(equeue_t *q, int ms) {
268269
}
269270
}
270271

271-
events_sema_wait(&q->eventsema, deadline);
272+
equeue_sema_wait(&q->eventsema, deadline);
272273
}
273274
}
274275

275276
// event functions
276-
void event_delay(void *p, int ms) {
277-
struct event *e = (struct event*)p - 1;
277+
void equeue_event_delay(void *p, int ms) {
278+
struct equeue_event *e = (struct equeue_event*)p - 1;
278279
e->target = ms;
279280
}
280281

281-
void event_period(void *p, int ms) {
282-
struct event *e = (struct event*)p - 1;
282+
void equeue_event_period(void *p, int ms) {
283+
struct equeue_event *e = (struct equeue_event*)p - 1;
283284
e->period = ms;
284285
}
285286

286-
void event_dtor(void *p, void (*dtor)(void *)) {
287-
struct event *e = (struct event*)p - 1;
287+
void equeue_event_dtor(void *p, void (*dtor)(void *)) {
288+
struct equeue_event *e = (struct equeue_event*)p - 1;
288289
e->dtor = dtor;
289290
}
290291

@@ -316,7 +317,7 @@ int equeue_call_in(equeue_t *q, int ms, void (*cb)(void*), void *data) {
316317
return 0;
317318
}
318319

319-
event_delay(e, ms);
320+
equeue_event_delay(e, ms);
320321
e->cb = cb;
321322
e->data = data;
322323
return equeue_post(q, ecallback_dispatch, e);
@@ -328,8 +329,8 @@ int equeue_call_every(equeue_t *q, int ms, void (*cb)(void*), void *data) {
328329
return 0;
329330
}
330331

331-
event_delay(e, ms);
332-
event_period(e, ms);
332+
equeue_event_delay(e, ms);
333+
equeue_event_period(e, ms);
333334
e->cb = cb;
334335
e->data = data;
335336
return equeue_post(q, ecallback_dispatch, e);

0 commit comments

Comments
 (0)