Clean up wakeup teardown.

This commit is contained in:
Ian Gulliver
2016-03-08 22:42:15 -08:00
parent 9f5a6223bf
commit c0c25bd36a
2 changed files with 9 additions and 4 deletions

View File

@@ -16,6 +16,12 @@ struct wakeup {
static struct list_head wakeup_head = LIST_HEAD_INIT(wakeup_head);
static void wakeup_del(struct wakeup *wakeup) {
peer_close(&wakeup->peer);
list_del(&wakeup->wakeup_list);
free(wakeup);
}
static void wakeup_handler(struct peer *peer) {
struct wakeup *wakeup = container_of(peer, struct wakeup, peer);
@@ -23,10 +29,8 @@ static void wakeup_handler(struct peer *peer) {
assert(read(wakeup->peer.fd, &events, sizeof(events)) == sizeof(events));
assert(events == 1);
peer_close(&wakeup->peer);
peer_call(wakeup->inner_peer);
list_del(&wakeup->wakeup_list);
free(wakeup);
wakeup_del(wakeup);
}
void wakeup_init() {
@@ -35,7 +39,7 @@ void wakeup_init() {
void wakeup_cleanup() {
struct wakeup *iter, *next;
list_for_each_entry_safe(iter, next, &wakeup_head, wakeup_list) {
free(iter);
wakeup_del(iter);
}
}