eloop: rename from kmscon_ to ev_
We don't need the long kmscon_ prefix so make it shorter. Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
parent
7b7e8c950d
commit
e7e0744e6e
240
src/eloop.c
240
src/eloop.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* kmscon - Event Loop
|
* Event Loop
|
||||||
*
|
*
|
||||||
* Copyright (c) 2011 David Herrmann <dh.herrmann@googlemail.com>
|
* Copyright (c) 2011 David Herrmann <dh.herrmann@googlemail.com>
|
||||||
* Copyright (c) 2011 University of Tuebingen
|
* Copyright (c) 2011 University of Tuebingen
|
||||||
@ -45,55 +45,55 @@
|
|||||||
#include "eloop.h"
|
#include "eloop.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
struct kmscon_eloop {
|
struct ev_eloop {
|
||||||
int efd;
|
int efd;
|
||||||
unsigned long ref;
|
unsigned long ref;
|
||||||
|
|
||||||
struct kmscon_idle *idle_list;
|
struct ev_idle *idle_list;
|
||||||
struct kmscon_idle *cur_idle;
|
struct ev_idle *cur_idle;
|
||||||
|
|
||||||
struct epoll_event *cur_fds;
|
struct epoll_event *cur_fds;
|
||||||
size_t cur_fds_cnt;
|
size_t cur_fds_cnt;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct kmscon_idle {
|
struct ev_idle {
|
||||||
unsigned long ref;
|
unsigned long ref;
|
||||||
struct kmscon_eloop *loop;
|
struct ev_eloop *loop;
|
||||||
struct kmscon_idle *next;
|
struct ev_idle *next;
|
||||||
struct kmscon_idle *prev;
|
struct ev_idle *prev;
|
||||||
|
|
||||||
kmscon_idle_cb cb;
|
ev_idle_cb cb;
|
||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct kmscon_fd {
|
struct ev_fd {
|
||||||
unsigned long ref;
|
unsigned long ref;
|
||||||
struct kmscon_eloop *loop;
|
struct ev_eloop *loop;
|
||||||
|
|
||||||
kmscon_fd_cb cb;
|
ev_fd_cb cb;
|
||||||
void *data;
|
void *data;
|
||||||
int fd;
|
int fd;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct kmscon_signal {
|
struct ev_signal {
|
||||||
unsigned long ref;
|
unsigned long ref;
|
||||||
|
|
||||||
struct kmscon_fd *fd;
|
struct ev_fd *fd;
|
||||||
kmscon_signal_cb cb;
|
ev_signal_cb cb;
|
||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct kmscon_timer {
|
struct ev_timer {
|
||||||
unsigned long ref;
|
unsigned long ref;
|
||||||
|
|
||||||
struct kmscon_fd *fd;
|
struct ev_fd *fd;
|
||||||
kmscon_timer_cb cb;
|
ev_timer_cb cb;
|
||||||
void *data;
|
void *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
int kmscon_idle_new(struct kmscon_idle **out)
|
int ev_idle_new(struct ev_idle **out)
|
||||||
{
|
{
|
||||||
struct kmscon_idle *idle;
|
struct ev_idle *idle;
|
||||||
|
|
||||||
if (!out)
|
if (!out)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -109,7 +109,7 @@ int kmscon_idle_new(struct kmscon_idle **out)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_idle_ref(struct kmscon_idle *idle)
|
void ev_idle_ref(struct ev_idle *idle)
|
||||||
{
|
{
|
||||||
if (!idle)
|
if (!idle)
|
||||||
return;
|
return;
|
||||||
@ -117,7 +117,7 @@ void kmscon_idle_ref(struct kmscon_idle *idle)
|
|||||||
++idle->ref;
|
++idle->ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_idle_unref(struct kmscon_idle *idle)
|
void ev_idle_unref(struct ev_idle *idle)
|
||||||
{
|
{
|
||||||
if (!idle || !idle->ref)
|
if (!idle || !idle->ref)
|
||||||
return;
|
return;
|
||||||
@ -128,32 +128,32 @@ void kmscon_idle_unref(struct kmscon_idle *idle)
|
|||||||
free(idle);
|
free(idle);
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_new_idle(struct kmscon_eloop *loop, struct kmscon_idle **out,
|
int ev_eloop_new_idle(struct ev_eloop *loop, struct ev_idle **out,
|
||||||
kmscon_idle_cb cb, void *data)
|
ev_idle_cb cb, void *data)
|
||||||
{
|
{
|
||||||
struct kmscon_idle *idle;
|
struct ev_idle *idle;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!out)
|
if (!out)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
ret = kmscon_idle_new(&idle);
|
ret = ev_idle_new(&idle);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = kmscon_eloop_add_idle(loop, idle, cb, data);
|
ret = ev_eloop_add_idle(loop, idle, cb, data);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
kmscon_idle_unref(idle);
|
ev_idle_unref(idle);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
kmscon_idle_unref(idle);
|
ev_idle_unref(idle);
|
||||||
*out = idle;
|
*out = idle;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_add_idle(struct kmscon_eloop *loop, struct kmscon_idle *idle,
|
int ev_eloop_add_idle(struct ev_eloop *loop, struct ev_idle *idle,
|
||||||
kmscon_idle_cb cb, void *data)
|
ev_idle_cb cb, void *data)
|
||||||
{
|
{
|
||||||
if (!loop || !idle || !cb)
|
if (!loop || !idle || !cb)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -170,15 +170,15 @@ int kmscon_eloop_add_idle(struct kmscon_eloop *loop, struct kmscon_idle *idle,
|
|||||||
idle->cb = cb;
|
idle->cb = cb;
|
||||||
idle->data = data;
|
idle->data = data;
|
||||||
|
|
||||||
kmscon_idle_ref(idle);
|
ev_idle_ref(idle);
|
||||||
kmscon_eloop_ref(loop);
|
ev_eloop_ref(loop);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_eloop_rm_idle(struct kmscon_idle *idle)
|
void ev_eloop_rm_idle(struct ev_idle *idle)
|
||||||
{
|
{
|
||||||
struct kmscon_eloop *loop;
|
struct ev_eloop *loop;
|
||||||
|
|
||||||
if (!idle || !idle->loop)
|
if (!idle || !idle->loop)
|
||||||
return;
|
return;
|
||||||
@ -205,13 +205,13 @@ void kmscon_eloop_rm_idle(struct kmscon_idle *idle)
|
|||||||
idle->cb = NULL;
|
idle->cb = NULL;
|
||||||
idle->data = NULL;
|
idle->data = NULL;
|
||||||
|
|
||||||
kmscon_idle_unref(idle);
|
ev_idle_unref(idle);
|
||||||
kmscon_eloop_unref(loop);
|
ev_eloop_unref(loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_fd_new(struct kmscon_fd **out)
|
int ev_fd_new(struct ev_fd **out)
|
||||||
{
|
{
|
||||||
struct kmscon_fd *fd;
|
struct ev_fd *fd;
|
||||||
|
|
||||||
if (!out)
|
if (!out)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -228,7 +228,7 @@ int kmscon_fd_new(struct kmscon_fd **out)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_fd_ref(struct kmscon_fd *fd)
|
void ev_fd_ref(struct ev_fd *fd)
|
||||||
{
|
{
|
||||||
if (!fd)
|
if (!fd)
|
||||||
return;
|
return;
|
||||||
@ -236,7 +236,7 @@ void kmscon_fd_ref(struct kmscon_fd *fd)
|
|||||||
++fd->ref;
|
++fd->ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_fd_unref(struct kmscon_fd *fd)
|
void ev_fd_unref(struct ev_fd *fd)
|
||||||
{
|
{
|
||||||
if (!fd || !fd->ref)
|
if (!fd || !fd->ref)
|
||||||
return;
|
return;
|
||||||
@ -247,32 +247,32 @@ void kmscon_fd_unref(struct kmscon_fd *fd)
|
|||||||
free(fd);
|
free(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_new_fd(struct kmscon_eloop *loop, struct kmscon_fd **out,
|
int ev_eloop_new_fd(struct ev_eloop *loop, struct ev_fd **out,
|
||||||
int rfd, int mask, kmscon_fd_cb cb, void *data)
|
int rfd, int mask, ev_fd_cb cb, void *data)
|
||||||
{
|
{
|
||||||
struct kmscon_fd *fd;
|
struct ev_fd *fd;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!out)
|
if (!out)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
ret = kmscon_fd_new(&fd);
|
ret = ev_fd_new(&fd);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = kmscon_eloop_add_fd(loop, fd, rfd, mask, cb, data);
|
ret = ev_eloop_add_fd(loop, fd, rfd, mask, cb, data);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
kmscon_fd_unref(fd);
|
ev_fd_unref(fd);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
kmscon_fd_unref(fd);
|
ev_fd_unref(fd);
|
||||||
*out = fd;
|
*out = fd;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_add_fd(struct kmscon_eloop *loop, struct kmscon_fd *fd,
|
int ev_eloop_add_fd(struct ev_eloop *loop, struct ev_fd *fd,
|
||||||
int rfd, int mask, kmscon_fd_cb cb, void *data)
|
int rfd, int mask, ev_fd_cb cb, void *data)
|
||||||
{
|
{
|
||||||
struct epoll_event ep;
|
struct epoll_event ep;
|
||||||
|
|
||||||
@ -283,9 +283,9 @@ int kmscon_eloop_add_fd(struct kmscon_eloop *loop, struct kmscon_fd *fd,
|
|||||||
return -EALREADY;
|
return -EALREADY;
|
||||||
|
|
||||||
memset(&ep, 0, sizeof(ep));
|
memset(&ep, 0, sizeof(ep));
|
||||||
if (mask & KMSCON_READABLE)
|
if (mask & EV_READABLE)
|
||||||
ep.events |= EPOLLIN;
|
ep.events |= EPOLLIN;
|
||||||
if (mask & KMSCON_WRITEABLE)
|
if (mask & EV_WRITEABLE)
|
||||||
ep.events |= EPOLLOUT;
|
ep.events |= EPOLLOUT;
|
||||||
ep.data.ptr = fd;
|
ep.data.ptr = fd;
|
||||||
|
|
||||||
@ -297,15 +297,15 @@ int kmscon_eloop_add_fd(struct kmscon_eloop *loop, struct kmscon_fd *fd,
|
|||||||
fd->data = data;
|
fd->data = data;
|
||||||
fd->fd = rfd;
|
fd->fd = rfd;
|
||||||
|
|
||||||
kmscon_fd_ref(fd);
|
ev_fd_ref(fd);
|
||||||
kmscon_eloop_ref(loop);
|
ev_eloop_ref(loop);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_eloop_rm_fd(struct kmscon_fd *fd)
|
void ev_eloop_rm_fd(struct ev_fd *fd)
|
||||||
{
|
{
|
||||||
struct kmscon_eloop *loop;
|
struct ev_eloop *loop;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
if (!fd || !fd->loop)
|
if (!fd || !fd->loop)
|
||||||
@ -328,11 +328,11 @@ void kmscon_eloop_rm_fd(struct kmscon_fd *fd)
|
|||||||
fd->cb = NULL;
|
fd->cb = NULL;
|
||||||
fd->data = NULL;
|
fd->data = NULL;
|
||||||
fd->fd = -1;
|
fd->fd = -1;
|
||||||
kmscon_fd_unref(fd);
|
ev_fd_unref(fd);
|
||||||
kmscon_eloop_unref(loop);
|
ev_eloop_unref(loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_update_fd(struct kmscon_fd *fd, int mask)
|
int ev_eloop_update_fd(struct ev_fd *fd, int mask)
|
||||||
{
|
{
|
||||||
struct epoll_event ep;
|
struct epoll_event ep;
|
||||||
|
|
||||||
@ -340,9 +340,9 @@ int kmscon_eloop_update_fd(struct kmscon_fd *fd, int mask)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
memset(&ep, 0, sizeof(ep));
|
memset(&ep, 0, sizeof(ep));
|
||||||
if (mask & KMSCON_READABLE)
|
if (mask & EV_READABLE)
|
||||||
ep.events |= EPOLLIN;
|
ep.events |= EPOLLIN;
|
||||||
if (mask & KMSCON_WRITEABLE)
|
if (mask & EV_WRITEABLE)
|
||||||
ep.events |= EPOLLOUT;
|
ep.events |= EPOLLOUT;
|
||||||
ep.data.ptr = fd;
|
ep.data.ptr = fd;
|
||||||
|
|
||||||
@ -352,9 +352,9 @@ int kmscon_eloop_update_fd(struct kmscon_fd *fd, int mask)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_signal_new(struct kmscon_signal **out)
|
int ev_signal_new(struct ev_signal **out)
|
||||||
{
|
{
|
||||||
struct kmscon_signal *sig;
|
struct ev_signal *sig;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!out)
|
if (!out)
|
||||||
@ -367,7 +367,7 @@ int kmscon_signal_new(struct kmscon_signal **out)
|
|||||||
memset(sig, 0, sizeof(*sig));
|
memset(sig, 0, sizeof(*sig));
|
||||||
sig->ref = 1;
|
sig->ref = 1;
|
||||||
|
|
||||||
ret = kmscon_fd_new(&sig->fd);
|
ret = ev_fd_new(&sig->fd);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
free(sig);
|
free(sig);
|
||||||
return ret;
|
return ret;
|
||||||
@ -377,7 +377,7 @@ int kmscon_signal_new(struct kmscon_signal **out)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_signal_ref(struct kmscon_signal *sig)
|
void ev_signal_ref(struct ev_signal *sig)
|
||||||
{
|
{
|
||||||
if (!sig)
|
if (!sig)
|
||||||
return;
|
return;
|
||||||
@ -385,7 +385,7 @@ void kmscon_signal_ref(struct kmscon_signal *sig)
|
|||||||
++sig->ref;
|
++sig->ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_signal_unref(struct kmscon_signal *sig)
|
void ev_signal_unref(struct ev_signal *sig)
|
||||||
{
|
{
|
||||||
if (!sig || !sig->ref)
|
if (!sig || !sig->ref)
|
||||||
return;
|
return;
|
||||||
@ -393,42 +393,42 @@ void kmscon_signal_unref(struct kmscon_signal *sig)
|
|||||||
if (--sig->ref)
|
if (--sig->ref)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
kmscon_fd_unref(sig->fd);
|
ev_fd_unref(sig->fd);
|
||||||
free(sig);
|
free(sig);
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_new_signal(struct kmscon_eloop *loop,
|
int ev_eloop_new_signal(struct ev_eloop *loop,
|
||||||
struct kmscon_signal **out, int signum, kmscon_signal_cb cb,
|
struct ev_signal **out, int signum, ev_signal_cb cb,
|
||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
struct kmscon_signal *sig;
|
struct ev_signal *sig;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!out)
|
if (!out)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
ret = kmscon_signal_new(&sig);
|
ret = ev_signal_new(&sig);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = kmscon_eloop_add_signal(loop, sig, signum, cb, data);
|
ret = ev_eloop_add_signal(loop, sig, signum, cb, data);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
kmscon_signal_unref(sig);
|
ev_signal_unref(sig);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
kmscon_signal_unref(sig);
|
ev_signal_unref(sig);
|
||||||
*out = sig;
|
*out = sig;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void signal_cb(struct kmscon_fd *fd, int mask, void *data)
|
static void signal_cb(struct ev_fd *fd, int mask, void *data)
|
||||||
{
|
{
|
||||||
struct kmscon_signal *sig = data;
|
struct ev_signal *sig = data;
|
||||||
struct signalfd_siginfo signal_info;
|
struct signalfd_siginfo signal_info;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
if (mask & KMSCON_READABLE) {
|
if (mask & EV_READABLE) {
|
||||||
len = read(fd->fd, &signal_info, sizeof(signal_info));
|
len = read(fd->fd, &signal_info, sizeof(signal_info));
|
||||||
if (len != sizeof(signal_info))
|
if (len != sizeof(signal_info))
|
||||||
log_warn("eloop: cannot read signalfd\n");
|
log_warn("eloop: cannot read signalfd\n");
|
||||||
@ -437,8 +437,8 @@ static void signal_cb(struct kmscon_fd *fd, int mask, void *data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_add_signal(struct kmscon_eloop *loop,
|
int ev_eloop_add_signal(struct ev_eloop *loop,
|
||||||
struct kmscon_signal *sig, int signum, kmscon_signal_cb cb, void *data)
|
struct ev_signal *sig, int signum, ev_signal_cb cb, void *data)
|
||||||
{
|
{
|
||||||
sigset_t mask;
|
sigset_t mask;
|
||||||
int ret, fd;
|
int ret, fd;
|
||||||
@ -456,7 +456,7 @@ int kmscon_eloop_add_signal(struct kmscon_eloop *loop,
|
|||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return -errno;
|
return -errno;
|
||||||
|
|
||||||
ret = kmscon_eloop_add_fd(loop, sig->fd, fd, KMSCON_READABLE,
|
ret = ev_eloop_add_fd(loop, sig->fd, fd, EV_READABLE,
|
||||||
signal_cb, sig);
|
signal_cb, sig);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
close(fd);
|
close(fd);
|
||||||
@ -466,12 +466,12 @@ int kmscon_eloop_add_signal(struct kmscon_eloop *loop,
|
|||||||
sigprocmask(SIG_BLOCK, &mask, NULL);
|
sigprocmask(SIG_BLOCK, &mask, NULL);
|
||||||
sig->cb = cb;
|
sig->cb = cb;
|
||||||
sig->data = data;
|
sig->data = data;
|
||||||
kmscon_signal_ref(sig);
|
ev_signal_ref(sig);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_eloop_rm_signal(struct kmscon_signal *sig)
|
void ev_eloop_rm_signal(struct ev_signal *sig)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
@ -479,9 +479,9 @@ void kmscon_eloop_rm_signal(struct kmscon_signal *sig)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
fd = sig->fd->fd;
|
fd = sig->fd->fd;
|
||||||
kmscon_eloop_rm_fd(sig->fd);
|
ev_eloop_rm_fd(sig->fd);
|
||||||
close(fd);
|
close(fd);
|
||||||
kmscon_signal_unref(sig);
|
ev_signal_unref(sig);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We cannot unblock the signal here because we do not know whether some
|
* We cannot unblock the signal here because we do not know whether some
|
||||||
@ -489,9 +489,9 @@ void kmscon_eloop_rm_signal(struct kmscon_signal *sig)
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_timer_new(struct kmscon_timer **out)
|
int ev_timer_new(struct ev_timer **out)
|
||||||
{
|
{
|
||||||
struct kmscon_timer *timer;
|
struct ev_timer *timer;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!out)
|
if (!out)
|
||||||
@ -504,7 +504,7 @@ int kmscon_timer_new(struct kmscon_timer **out)
|
|||||||
memset(timer, 0, sizeof(*timer));
|
memset(timer, 0, sizeof(*timer));
|
||||||
timer->ref = 1;
|
timer->ref = 1;
|
||||||
|
|
||||||
ret = kmscon_fd_new(&timer->fd);
|
ret = ev_fd_new(&timer->fd);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
free(timer);
|
free(timer);
|
||||||
return ret;
|
return ret;
|
||||||
@ -514,7 +514,7 @@ int kmscon_timer_new(struct kmscon_timer **out)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_timer_ref(struct kmscon_timer *timer)
|
void ev_timer_ref(struct ev_timer *timer)
|
||||||
{
|
{
|
||||||
if (!timer)
|
if (!timer)
|
||||||
return;
|
return;
|
||||||
@ -522,7 +522,7 @@ void kmscon_timer_ref(struct kmscon_timer *timer)
|
|||||||
++timer->ref;
|
++timer->ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_timer_unref(struct kmscon_timer *timer)
|
void ev_timer_unref(struct ev_timer *timer)
|
||||||
{
|
{
|
||||||
if (!timer || !timer->ref)
|
if (!timer || !timer->ref)
|
||||||
return;
|
return;
|
||||||
@ -530,41 +530,41 @@ void kmscon_timer_unref(struct kmscon_timer *timer)
|
|||||||
if (--timer->ref)
|
if (--timer->ref)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
kmscon_fd_unref(timer->fd);
|
ev_fd_unref(timer->fd);
|
||||||
free(timer);
|
free(timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_new_timer(struct kmscon_eloop *loop, struct kmscon_timer **out,
|
int ev_eloop_new_timer(struct ev_eloop *loop, struct ev_timer **out,
|
||||||
const struct itimerspec *spec, kmscon_timer_cb cb, void *data)
|
const struct itimerspec *spec, ev_timer_cb cb, void *data)
|
||||||
{
|
{
|
||||||
struct kmscon_timer *timer;
|
struct ev_timer *timer;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!out)
|
if (!out)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
ret = kmscon_timer_new(&timer);
|
ret = ev_timer_new(&timer);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = kmscon_eloop_add_timer(loop, timer, spec, cb, data);
|
ret = ev_eloop_add_timer(loop, timer, spec, cb, data);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
kmscon_timer_unref(timer);
|
ev_timer_unref(timer);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
kmscon_timer_unref(timer);
|
ev_timer_unref(timer);
|
||||||
*out = timer;
|
*out = timer;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void timer_cb(struct kmscon_fd *fd, int mask, void *data)
|
static void timer_cb(struct ev_fd *fd, int mask, void *data)
|
||||||
{
|
{
|
||||||
struct kmscon_timer *timer = data;
|
struct ev_timer *timer = data;
|
||||||
uint64_t expirations;
|
uint64_t expirations;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
if (mask & KMSCON_READABLE) {
|
if (mask & EV_READABLE) {
|
||||||
len = read(fd->fd, &expirations, sizeof(expirations));
|
len = read(fd->fd, &expirations, sizeof(expirations));
|
||||||
if (len != sizeof(expirations))
|
if (len != sizeof(expirations))
|
||||||
log_warn("eloop: cannot read timerfd\n");
|
log_warn("eloop: cannot read timerfd\n");
|
||||||
@ -573,9 +573,9 @@ static void timer_cb(struct kmscon_fd *fd, int mask, void *data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_add_timer(struct kmscon_eloop *loop,
|
int ev_eloop_add_timer(struct ev_eloop *loop,
|
||||||
struct kmscon_timer *timer, const struct itimerspec *spec,
|
struct ev_timer *timer, const struct itimerspec *spec,
|
||||||
kmscon_timer_cb cb, void *data)
|
ev_timer_cb cb, void *data)
|
||||||
{
|
{
|
||||||
int ret, fd;
|
int ret, fd;
|
||||||
|
|
||||||
@ -596,14 +596,14 @@ int kmscon_eloop_add_timer(struct kmscon_eloop *loop,
|
|||||||
goto err_fd;
|
goto err_fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = kmscon_eloop_add_fd(loop, timer->fd, fd, KMSCON_READABLE,
|
ret = ev_eloop_add_fd(loop, timer->fd, fd, EV_READABLE,
|
||||||
timer_cb, timer);
|
timer_cb, timer);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_fd;
|
goto err_fd;
|
||||||
|
|
||||||
timer->cb = cb;
|
timer->cb = cb;
|
||||||
timer->data = data;
|
timer->data = data;
|
||||||
kmscon_timer_ref(timer);
|
ev_timer_ref(timer);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -612,7 +612,7 @@ err_fd:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_eloop_rm_timer(struct kmscon_timer *timer)
|
void ev_eloop_rm_timer(struct ev_timer *timer)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
@ -620,12 +620,12 @@ void kmscon_eloop_rm_timer(struct kmscon_timer *timer)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
fd = timer->fd->fd;
|
fd = timer->fd->fd;
|
||||||
kmscon_eloop_rm_fd(timer->fd);
|
ev_eloop_rm_fd(timer->fd);
|
||||||
close(fd);
|
close(fd);
|
||||||
kmscon_timer_unref(timer);
|
ev_timer_unref(timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_update_timer(struct kmscon_timer *timer,
|
int ev_eloop_update_timer(struct ev_timer *timer,
|
||||||
const struct itimerspec *spec)
|
const struct itimerspec *spec)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
@ -643,9 +643,9 @@ int kmscon_eloop_update_timer(struct kmscon_timer *timer,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_new(struct kmscon_eloop **out)
|
int ev_eloop_new(struct ev_eloop **out)
|
||||||
{
|
{
|
||||||
struct kmscon_eloop *loop;
|
struct ev_eloop *loop;
|
||||||
|
|
||||||
if (!out)
|
if (!out)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -668,7 +668,7 @@ int kmscon_eloop_new(struct kmscon_eloop **out)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_eloop_ref(struct kmscon_eloop *loop)
|
void ev_eloop_ref(struct ev_eloop *loop)
|
||||||
{
|
{
|
||||||
if (!loop)
|
if (!loop)
|
||||||
return;
|
return;
|
||||||
@ -676,7 +676,7 @@ void kmscon_eloop_ref(struct kmscon_eloop *loop)
|
|||||||
++loop->ref;
|
++loop->ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
void kmscon_eloop_unref(struct kmscon_eloop *loop)
|
void ev_eloop_unref(struct ev_eloop *loop)
|
||||||
{
|
{
|
||||||
if (!loop || !loop->ref)
|
if (!loop || !loop->ref)
|
||||||
return;
|
return;
|
||||||
@ -689,10 +689,10 @@ void kmscon_eloop_unref(struct kmscon_eloop *loop)
|
|||||||
free(loop);
|
free(loop);
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_dispatch(struct kmscon_eloop *loop, int timeout)
|
int ev_eloop_dispatch(struct ev_eloop *loop, int timeout)
|
||||||
{
|
{
|
||||||
struct epoll_event ep[32];
|
struct epoll_event ep[32];
|
||||||
struct kmscon_fd *fd;
|
struct ev_fd *fd;
|
||||||
int i, count, mask;
|
int i, count, mask;
|
||||||
|
|
||||||
if (!loop)
|
if (!loop)
|
||||||
@ -723,13 +723,13 @@ int kmscon_eloop_dispatch(struct kmscon_eloop *loop, int timeout)
|
|||||||
|
|
||||||
mask = 0;
|
mask = 0;
|
||||||
if (ep[i].events & EPOLLIN)
|
if (ep[i].events & EPOLLIN)
|
||||||
mask |= KMSCON_READABLE;
|
mask |= EV_READABLE;
|
||||||
if (ep[i].events & EPOLLOUT)
|
if (ep[i].events & EPOLLOUT)
|
||||||
mask |= KMSCON_WRITEABLE;
|
mask |= EV_WRITEABLE;
|
||||||
if (ep[i].events & EPOLLHUP)
|
if (ep[i].events & EPOLLHUP)
|
||||||
mask |= KMSCON_HUP;
|
mask |= EV_HUP;
|
||||||
if (ep[i].events & EPOLLERR)
|
if (ep[i].events & EPOLLERR)
|
||||||
mask |= KMSCON_ERR;
|
mask |= EV_ERR;
|
||||||
|
|
||||||
fd->cb(fd, mask, fd->data);
|
fd->cb(fd, mask, fd->data);
|
||||||
}
|
}
|
||||||
@ -740,7 +740,7 @@ int kmscon_eloop_dispatch(struct kmscon_eloop *loop, int timeout)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int kmscon_eloop_get_fd(struct kmscon_eloop *loop)
|
int ev_eloop_get_fd(struct ev_eloop *loop)
|
||||||
{
|
{
|
||||||
if (!loop)
|
if (!loop)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
120
src/eloop.h
120
src/eloop.h
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* kmscon - Event Loop
|
* Event Loop
|
||||||
*
|
*
|
||||||
* Copyright (c) 2011 David Herrmann <dh.herrmann@googlemail.com>
|
* Copyright (c) 2011 David Herrmann <dh.herrmann@googlemail.com>
|
||||||
* Copyright (c) 2011 University of Tuebingen
|
* Copyright (c) 2011 University of Tuebingen
|
||||||
@ -31,91 +31,91 @@
|
|||||||
* it to other platforms.
|
* it to other platforms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef KMSCON_ELOOP_H
|
#ifndef EV_ELOOP_H
|
||||||
#define KMSCON_ELOOP_H
|
#define EV_ELOOP_H
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
struct kmscon_eloop;
|
struct ev_eloop;
|
||||||
struct kmscon_idle;
|
struct ev_idle;
|
||||||
struct kmscon_fd;
|
struct ev_fd;
|
||||||
struct kmscon_signal;
|
struct ev_signal;
|
||||||
struct kmscon_timer;
|
struct ev_timer;
|
||||||
|
|
||||||
typedef void (*kmscon_idle_cb) (struct kmscon_idle *idle, void *data);
|
typedef void (*ev_idle_cb) (struct ev_idle *idle, void *data);
|
||||||
typedef void (*kmscon_fd_cb) (struct kmscon_fd *fd, int mask, void *data);
|
typedef void (*ev_fd_cb) (struct ev_fd *fd, int mask, void *data);
|
||||||
typedef void (*kmscon_signal_cb)
|
typedef void (*ev_signal_cb)
|
||||||
(struct kmscon_signal *sig, int signum, void *data);
|
(struct ev_signal *sig, int signum, void *data);
|
||||||
typedef void (*kmscon_timer_cb)
|
typedef void (*ev_timer_cb)
|
||||||
(struct kmscon_timer *timer, uint64_t num, void *data);
|
(struct ev_timer *timer, uint64_t num, void *data);
|
||||||
|
|
||||||
enum kmscon_eloop_flags {
|
enum ev_eloop_flags {
|
||||||
KMSCON_READABLE = 0x01,
|
EV_READABLE = 0x01,
|
||||||
KMSCON_WRITEABLE = 0x02,
|
EV_WRITEABLE = 0x02,
|
||||||
KMSCON_HUP = 0x04,
|
EV_HUP = 0x04,
|
||||||
KMSCON_ERR = 0x08,
|
EV_ERR = 0x08,
|
||||||
};
|
};
|
||||||
|
|
||||||
int kmscon_eloop_new(struct kmscon_eloop **out);
|
int ev_eloop_new(struct ev_eloop **out);
|
||||||
void kmscon_eloop_ref(struct kmscon_eloop *loop);
|
void ev_eloop_ref(struct ev_eloop *loop);
|
||||||
void kmscon_eloop_unref(struct kmscon_eloop *loop);
|
void ev_eloop_unref(struct ev_eloop *loop);
|
||||||
|
|
||||||
int kmscon_eloop_get_fd(struct kmscon_eloop *loop);
|
int ev_eloop_get_fd(struct ev_eloop *loop);
|
||||||
int kmscon_eloop_dispatch(struct kmscon_eloop *loop, int timeout);
|
int ev_eloop_dispatch(struct ev_eloop *loop, int timeout);
|
||||||
|
|
||||||
/* idle sources */
|
/* idle sources */
|
||||||
|
|
||||||
int kmscon_idle_new(struct kmscon_idle **out);
|
int ev_idle_new(struct ev_idle **out);
|
||||||
void kmscon_idle_ref(struct kmscon_idle *idle);
|
void ev_idle_ref(struct ev_idle *idle);
|
||||||
void kmscon_idle_unref(struct kmscon_idle *idle);
|
void ev_idle_unref(struct ev_idle *idle);
|
||||||
|
|
||||||
int kmscon_eloop_new_idle(struct kmscon_eloop *loop, struct kmscon_idle **out,
|
int ev_eloop_new_idle(struct ev_eloop *loop, struct ev_idle **out,
|
||||||
kmscon_idle_cb cb, void *data);
|
ev_idle_cb cb, void *data);
|
||||||
int kmscon_eloop_add_idle(struct kmscon_eloop *loop, struct kmscon_idle *idle,
|
int ev_eloop_add_idle(struct ev_eloop *loop, struct ev_idle *idle,
|
||||||
kmscon_idle_cb cb, void *data);
|
ev_idle_cb cb, void *data);
|
||||||
void kmscon_eloop_rm_idle(struct kmscon_idle *idle);
|
void ev_eloop_rm_idle(struct ev_idle *idle);
|
||||||
|
|
||||||
/* fd sources */
|
/* fd sources */
|
||||||
|
|
||||||
int kmscon_fd_new(struct kmscon_fd **out);
|
int ev_fd_new(struct ev_fd **out);
|
||||||
void kmscon_fd_ref(struct kmscon_fd *fd);
|
void ev_fd_ref(struct ev_fd *fd);
|
||||||
void kmscon_fd_unref(struct kmscon_fd *fd);
|
void ev_fd_unref(struct ev_fd *fd);
|
||||||
|
|
||||||
int kmscon_eloop_new_fd(struct kmscon_eloop *loop, struct kmscon_fd **out,
|
int ev_eloop_new_fd(struct ev_eloop *loop, struct ev_fd **out,
|
||||||
int rfd, int mask, kmscon_fd_cb cb, void *data);
|
int rfd, int mask, ev_fd_cb cb, void *data);
|
||||||
int kmscon_eloop_add_fd(struct kmscon_eloop *loop, struct kmscon_fd *fd,
|
int ev_eloop_add_fd(struct ev_eloop *loop, struct ev_fd *fd,
|
||||||
int rfd, int mask, kmscon_fd_cb cb, void *data);
|
int rfd, int mask, ev_fd_cb cb, void *data);
|
||||||
void kmscon_eloop_rm_fd(struct kmscon_fd *fd);
|
void ev_eloop_rm_fd(struct ev_fd *fd);
|
||||||
int kmscon_eloop_update_fd(struct kmscon_fd *fd, int mask);
|
int ev_eloop_update_fd(struct ev_fd *fd, int mask);
|
||||||
|
|
||||||
/* signal sources */
|
/* signal sources */
|
||||||
|
|
||||||
int kmscon_signal_new(struct kmscon_signal **out);
|
int ev_signal_new(struct ev_signal **out);
|
||||||
void kmscon_signal_ref(struct kmscon_signal *sig);
|
void ev_signal_ref(struct ev_signal *sig);
|
||||||
void kmscon_signal_unref(struct kmscon_signal *sig);
|
void ev_signal_unref(struct ev_signal *sig);
|
||||||
|
|
||||||
int kmscon_eloop_new_signal(struct kmscon_eloop *loop,
|
int ev_eloop_new_signal(struct ev_eloop *loop,
|
||||||
struct kmscon_signal **out, int signum, kmscon_signal_cb cb,
|
struct ev_signal **out, int signum, ev_signal_cb cb,
|
||||||
void *data);
|
void *data);
|
||||||
int kmscon_eloop_add_signal(struct kmscon_eloop *loop,
|
int ev_eloop_add_signal(struct ev_eloop *loop,
|
||||||
struct kmscon_signal *sig, int signum, kmscon_signal_cb cb, void *data);
|
struct ev_signal *sig, int signum, ev_signal_cb cb, void *data);
|
||||||
void kmscon_eloop_rm_signal(struct kmscon_signal *sig);
|
void ev_eloop_rm_signal(struct ev_signal *sig);
|
||||||
|
|
||||||
/* timer sources */
|
/* timer sources */
|
||||||
|
|
||||||
int kmscon_timer_new(struct kmscon_timer **out);
|
int ev_timer_new(struct ev_timer **out);
|
||||||
void kmscon_timer_ref(struct kmscon_timer *timer);
|
void ev_timer_ref(struct ev_timer *timer);
|
||||||
void kmscon_timer_unref(struct kmscon_timer *timer);
|
void ev_timer_unref(struct ev_timer *timer);
|
||||||
|
|
||||||
int kmscon_eloop_new_timer(struct kmscon_eloop *loop, struct kmscon_timer **out,
|
int ev_eloop_new_timer(struct ev_eloop *loop, struct ev_timer **out,
|
||||||
const struct itimerspec *spec, kmscon_timer_cb cb, void *data);
|
const struct itimerspec *spec, ev_timer_cb cb, void *data);
|
||||||
int kmscon_eloop_add_timer(struct kmscon_eloop *loop,
|
int ev_eloop_add_timer(struct ev_eloop *loop,
|
||||||
struct kmscon_timer *timer, const struct itimerspec *spec,
|
struct ev_timer *timer, const struct itimerspec *spec,
|
||||||
kmscon_timer_cb cb, void *data);
|
ev_timer_cb cb, void *data);
|
||||||
void kmscon_eloop_rm_timer(struct kmscon_timer *timer);
|
void ev_eloop_rm_timer(struct ev_timer *timer);
|
||||||
int kmscon_eloop_update_timer(struct kmscon_timer *timer,
|
int ev_eloop_update_timer(struct ev_timer *timer,
|
||||||
const struct itimerspec *spec);
|
const struct itimerspec *spec);
|
||||||
|
|
||||||
#endif /* KMSCON_ELOOP_H */
|
#endif /* EV_ELOOP_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user