eloop: move to llog

Move every use of log_* to llog_* and make all objects aware of llog
objects.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
David Herrmann 2012-06-24 18:53:46 +02:00
parent bbcdbe61bd
commit 0f19a8496d
4 changed files with 165 additions and 98 deletions

View File

@ -63,16 +63,15 @@
#include <unistd.h>
#include "eloop.h"
#include "llog.h"
#include "log.h"
#include "misc.h"
#define LLOG_SUBSYSTEM "eloop"
#define LOG_SUBSYSTEM LLOG_SUBSYSTEM
/**
* ev_eloop:
* @efd: The epoll file descriptor.
* @ref: refcnt of this object
* @llog: llog log function
* @efd: The epoll file descriptor.
* @fd: Event source around \efd so you can nest event loops
* @cnt: Counter source used for idle events
* @sig_list: Shared signal sources
@ -86,9 +85,9 @@
* firing up. An event loop itself is an event source so you can nest them.
*/
struct ev_eloop {
int efd;
unsigned long ref;
llog_submit_t llog;
int efd;
struct ev_fd *fd;
struct ev_counter *cnt;
@ -104,6 +103,7 @@ struct ev_eloop {
/**
* ev_fd:
* @ref: refcnt for object
* @llog: llog log function
* @fd: the actual file desciptor
* @mask: the event mask for this fd (EV_READABLE, EV_WRITABLE, ...)
* @cb: the user callback
@ -116,6 +116,7 @@ struct ev_eloop {
*/
struct ev_fd {
unsigned long ref;
llog_submit_t llog;
int fd;
int mask;
ev_fd_cb cb;
@ -128,6 +129,7 @@ struct ev_fd {
/**
* ev_timer:
* @ref: refcnt of this object
* @llog: llog log function
* @cb: user callback
* @data: user data
* @fd: the timerfd file desciptor
@ -137,6 +139,7 @@ struct ev_fd {
*/
struct ev_timer {
unsigned long ref;
llog_submit_t llog;
ev_timer_cb cb;
void *data;
@ -147,6 +150,7 @@ struct ev_timer {
/**
* ev_counter:
* @ref: refcnt of counter object
* @llog: llog log function
* @cb: user callback
* @data: user data
* @fd: eventfd file desciptor
@ -157,6 +161,7 @@ struct ev_timer {
*/
struct ev_counter {
unsigned long ref;
llog_submit_t llog;
ev_counter_cb cb;
void *data;
@ -202,7 +207,7 @@ struct ev_signal_shared {
* user has registered for SIGCHLD callbacks.
*/
static void sig_child()
static void sig_child(struct ev_fd *fd)
{
pid_t pid;
int status;
@ -211,19 +216,20 @@ static void sig_child()
pid = waitpid(-1, &status, WNOHANG);
if (pid == -1) {
if (errno != ECHILD)
log_warn("cannot wait on child: %m");
llog_warn(fd, "cannot wait on child: %m");
break;
} else if (pid == 0) {
break;
} else if (WIFEXITED(status)) {
if (WEXITSTATUS(status) != 0)
log_debug("child %d exited with status %d",
pid, WEXITSTATUS(status));
llog_debug(fd, "child %d exited with status %d",
pid, WEXITSTATUS(status));
else
log_debug("child %d exited successfully", pid);
llog_debug(fd, "child %d exited successfully",
pid);
} else if (WIFSIGNALED(status)) {
log_debug("child %d exited by signal %d", pid,
WTERMSIG(status));
llog_debug(fd, "child %d exited by signal %d", pid,
WTERMSIG(status));
}
}
}
@ -237,14 +243,14 @@ static void shared_signal_cb(struct ev_fd *fd, int mask, void *data)
if (mask & EV_READABLE) {
len = read(fd->fd, &info, sizeof(info));
if (len != sizeof(info))
log_warn("cannot read signalfd (%d): %m", errno);
llog_warn(fd, "cannot read signalfd (%d): %m", errno);
else
kmscon_hook_call(sig->hook, sig->fd->loop, &info);
if (info.ssi_signo == SIGCHLD)
sig_child();
sig_child(fd);
} else if (mask & (EV_HUP | EV_ERR)) {
log_warn("HUP/ERR on signal source");
llog_warn(fd, "HUP/ERR on signal source");
}
}
@ -267,12 +273,12 @@ static int signal_new(struct ev_signal_shared **out, struct ev_eloop *loop,
int ret, fd;
struct ev_signal_shared *sig;
if (!out || !loop || signum < 0)
return -EINVAL;
if (signum < 0)
return llog_EINVAL(loop);
sig = malloc(sizeof(*sig));
if (!sig)
return -ENOMEM;
return llog_ENOMEM(loop);
memset(sig, 0, sizeof(*sig));
sig->signum = signum;
@ -286,6 +292,7 @@ static int signal_new(struct ev_signal_shared **out, struct ev_eloop *loop,
fd = signalfd(-1, &mask, SFD_CLOEXEC | SFD_NONBLOCK);
if (fd < 0) {
ret = -errno;
llog_error(loop, "cannot created signalfd");
goto err_hook;
}
@ -372,7 +379,7 @@ static void eloop_event(struct ev_fd *fd, int mask, void *data)
if (mask & EV_READABLE)
ev_eloop_dispatch(eloop, 0);
if (mask & (EV_HUP | EV_ERR))
log_warn("HUP/ERR on eloop source");
llog_warn(eloop, "HUP/ERR on eloop source");
}
static void eloop_cnt_event(struct ev_counter *cnt, uint64_t num, void *data)
@ -381,7 +388,7 @@ static void eloop_cnt_event(struct ev_counter *cnt, uint64_t num, void *data)
int ret;
if (!num) {
log_warning("HUP/ERR on eloop idle-counter");
llog_warning(eloop, "HUP/ERR on eloop idle-counter");
return;
}
@ -410,11 +417,11 @@ int ev_eloop_new(struct ev_eloop **out, ev_log_t log)
int ret;
if (!out)
return -EINVAL;
return llog_dEINVAL(log);
loop = malloc(sizeof(*loop));
if (!loop)
return -ENOMEM;
return llog_dENOMEM(log);
memset(loop, 0, sizeof(*loop));
loop->ref = 1;
@ -425,7 +432,7 @@ int ev_eloop_new(struct ev_eloop **out, ev_log_t log)
loop->cur_fds = malloc(sizeof(struct epoll_event) *
loop->cur_fds_cnt);
if (!loop->cur_fds) {
ret = -ENOMEM;
ret = llog_ENOMEM(loop);
goto err_free;
}
@ -436,14 +443,16 @@ int ev_eloop_new(struct ev_eloop **out, ev_log_t log)
loop->efd = epoll_create1(EPOLL_CLOEXEC);
if (loop->efd < 0) {
ret = -errno;
llog_error(loop, "cannot create epoll-fd");
goto err_idlers;
}
ret = ev_fd_new(&loop->fd, loop->efd, EV_READABLE, eloop_event, loop);
ret = ev_fd_new(&loop->fd, loop->efd, EV_READABLE, eloop_event, loop,
loop->llog);
if (ret)
goto err_close;
ret = ev_counter_new(&loop->cnt, eloop_cnt_event, loop);
ret = ev_counter_new(&loop->cnt, eloop_cnt_event, loop, loop->llog);
if (ret)
goto err_fd;
@ -460,7 +469,7 @@ int ev_eloop_new(struct ev_eloop **out, ev_log_t log)
* basically what we want anyway.
*/
log_debug("new eloop object %p", loop);
llog_debug(loop, "new eloop object %p", loop);
*out = loop;
return 0;
@ -504,10 +513,14 @@ void ev_eloop_unref(struct ev_eloop *loop)
{
struct ev_signal_shared *sig;
if (!loop || !loop->ref || --loop->ref)
if (!loop)
return;
if (!loop->ref)
return llog_vEINVAL(loop);
if (--loop->ref)
return;
log_debug("free eloop object %p", loop);
llog_debug(loop, "free eloop object %p", loop);
while (loop->sig_list.next != &loop->sig_list) {
sig = kmscon_dlist_entry(loop->sig_list.next,
@ -536,8 +549,10 @@ void ev_eloop_flush_fd(struct ev_eloop *loop, struct ev_fd *fd)
{
int i;
if (!loop || !fd)
if (!loop)
return;
if (!fd)
return llog_vEINVAL(loop);
if (loop->dispatching) {
for (i = 0; i < loop->cur_fds_cnt; ++i) {
@ -571,8 +586,10 @@ int ev_eloop_dispatch(struct ev_eloop *loop, int timeout)
struct ev_fd *fd;
int i, count, mask;
if (!loop || loop->exit)
if (!loop)
return -EINVAL;
if (loop->exit)
return llog_EINVAL(loop);
count = epoll_wait(loop->efd,
loop->cur_fds,
@ -582,7 +599,7 @@ int ev_eloop_dispatch(struct ev_eloop *loop, int timeout)
if (errno == EINTR) {
return 0;
} else {
log_warn("epoll_wait dispatching failed: %m");
llog_warn(loop, "epoll_wait dispatching failed: %m");
return -errno;
}
} else if (count > loop->cur_fds_cnt) {
@ -618,7 +635,7 @@ int ev_eloop_dispatch(struct ev_eloop *loop, int timeout)
ep = realloc(loop->cur_fds, sizeof(struct epoll_event) *
loop->cur_fds_cnt * 2);
if (!ep) {
log_warning("cannot reallocate dispatch cache to size %u",
llog_warning(loop, "cannot reallocate dispatch cache to size %u",
loop->cur_fds_cnt * 2);
} else {
loop->cur_fds = ep;
@ -655,7 +672,7 @@ int ev_eloop_run(struct ev_eloop *loop, int timeout)
return -EINVAL;
loop->exit = false;
log_debug("run for %d msecs", timeout);
llog_debug(loop, "run for %d msecs", timeout);
gettimeofday(&start, NULL);
while (!loop->exit) {
@ -694,7 +711,7 @@ void ev_eloop_exit(struct ev_eloop *loop)
if (!loop)
return;
log_debug("exiting %p", loop);
llog_debug(loop, "exiting %p", loop);
loop->exit = true;
if (loop->fd->loop)
@ -716,8 +733,10 @@ int ev_eloop_new_eloop(struct ev_eloop *loop, struct ev_eloop **out)
struct ev_eloop *el;
int ret;
if (!out || !loop)
if (!loop)
return -EINVAL;
if (!out)
return llog_EINVAL(loop);
ret = ev_eloop_new(&el, loop->llog);
if (ret)
@ -748,8 +767,10 @@ int ev_eloop_add_eloop(struct ev_eloop *loop, struct ev_eloop *add)
{
int ret;
if (!loop || !add)
if (!loop)
return -EINVAL;
if (!add)
return llog_EINVAL(loop);
if (add->fd->loop)
return -EALREADY;
@ -806,6 +827,7 @@ void ev_eloop_rm_eloop(struct ev_eloop *rm)
* @mask: Bitmask of %EV_READABLE and %EV_WRITeABLE flags
* @cb: User callback
* @data: User data
* @log: llog function or NULL
*
* This creates a new file desciptor source that is watched for the events set
* in @mask. @rfd is the system filedescriptor. The resulting object is stored
@ -815,19 +837,21 @@ void ev_eloop_rm_eloop(struct ev_eloop *rm)
*
* Returns: 0 on success, otherwise negative error code
*/
int ev_fd_new(struct ev_fd **out, int rfd, int mask, ev_fd_cb cb, void *data)
int ev_fd_new(struct ev_fd **out, int rfd, int mask, ev_fd_cb cb, void *data,
ev_log_t log)
{
struct ev_fd *fd;
if (!out || rfd < 0)
return -EINVAL;
return llog_dEINVAL(log);
fd = malloc(sizeof(*fd));
if (!fd)
return -ENOMEM;
return llog_dEINVAL(log);
memset(fd, 0, sizeof(*fd));
fd->ref = 1;
fd->llog = log;
fd->fd = rfd;
fd->mask = mask;
fd->cb = cb;
@ -848,6 +872,8 @@ void ev_fd_ref(struct ev_fd *fd)
{
if (!fd)
return;
if (!fd->ref)
return llog_vEINVAL(fd);
++fd->ref;
}
@ -861,7 +887,11 @@ void ev_fd_ref(struct ev_fd *fd)
*/
void ev_fd_unref(struct ev_fd *fd)
{
if (!fd || !fd->ref || --fd->ref)
if (!fd)
return;
if (!fd->ref)
return llog_vEINVAL(fd);
if (--fd->ref)
return;
free(fd);
@ -884,8 +914,8 @@ static int fd_epoll_add(struct ev_fd *fd)
ret = epoll_ctl(fd->loop->efd, EPOLL_CTL_ADD, fd->fd, &ep);
if (ret) {
log_warning("cannot add fd %d to epoll set (%d): %m",
fd->fd, errno);
llog_warning(fd, "cannot add fd %d to epoll set (%d): %m",
fd->fd, errno);
return -EFAULT;
}
@ -901,8 +931,8 @@ static void fd_epoll_remove(struct ev_fd *fd)
ret = epoll_ctl(fd->loop->efd, EPOLL_CTL_DEL, fd->fd, NULL);
if (ret)
log_warning("cannto remote fd %d from epoll set (%d): %m",
fd->fd, errno);
llog_warning(fd, "cannto remote fd %d from epoll set (%d): %m",
fd->fd, errno);
}
static int fd_epoll_update(struct ev_fd *fd)
@ -922,8 +952,8 @@ static int fd_epoll_update(struct ev_fd *fd)
ret = epoll_ctl(fd->loop->efd, EPOLL_CTL_MOD, fd->fd, &ep);
if (ret) {
log_warning("cannot update epoll fd %d (%d): %m",
fd->fd, errno);
llog_warning(fd, "cannot update epoll fd %d (%d): %m",
fd->fd, errno);
return -EFAULT;
}
@ -1072,10 +1102,12 @@ int ev_eloop_new_fd(struct ev_eloop *loop, struct ev_fd **out, int rfd,
struct ev_fd *fd;
int ret;
if (!out || !loop || rfd < 0)
if (!loop)
return -EINVAL;
if (!out || rfd < 0)
return llog_EINVAL(loop);
ret = ev_fd_new(&fd, rfd, mask, cb, data);
ret = ev_fd_new(&fd, rfd, mask, cb, data, loop->llog);
if (ret)
return ret;
@ -1105,8 +1137,10 @@ int ev_eloop_add_fd(struct ev_eloop *loop, struct ev_fd *fd)
{
int ret;
if (!loop || !fd || fd->loop)
if (!loop)
return -EINVAL;
if (!fd || fd->loop)
return llog_EINVAL(loop);
fd->loop = loop;
@ -1180,7 +1214,7 @@ static void timer_cb(struct ev_fd *fd, int mask, void *data)
int len;
if (mask & (EV_HUP | EV_ERR)) {
log_warn("HUP/ERR on timer source");
llog_warn(fd, "HUP/ERR on timer source");
if (timer->cb)
timer->cb(timer, 0, timer->data);
return;
@ -1190,19 +1224,19 @@ static void timer_cb(struct ev_fd *fd, int mask, void *data)
len = read(timer->fd, &expirations, sizeof(expirations));
if (len < 0) {
if (errno != EAGAIN) {
log_warning("cannot read timerfd (%d): %m",
llog_warning(fd, "cannot read timerfd (%d): %m",
errno);
ev_timer_disable(timer);
if (timer->cb)
timer->cb(timer, 0, timer->data);
}
} else if (len == 0) {
log_warning("EOF on timer source");
llog_warning(fd, "EOF on timer source");
ev_timer_disable(timer);
if (timer->cb)
timer->cb(timer, 0, timer->data);
} else if (len != sizeof(expirations)) {
log_warn("invalid size %d read on timerfd", len);
llog_warn(fd, "invalid size %d read on timerfd", len);
ev_timer_disable(timer);
if (timer->cb)
timer->cb(timer, 0, timer->data);
@ -1214,38 +1248,40 @@ static void timer_cb(struct ev_fd *fd, int mask, void *data)
}
int ev_timer_new(struct ev_timer **out, const struct itimerspec *spec,
ev_timer_cb cb, void *data)
ev_timer_cb cb, void *data, ev_log_t log)
{
struct ev_timer *timer;
int ret;
if (!out)
return -EINVAL;
return llog_dEINVAL(log);
timer = malloc(sizeof(*timer));
if (!timer)
return -ENOMEM;
return llog_dENOMEM(log);
memset(timer, 0, sizeof(*timer));
timer->ref = 1;
timer->llog = log;
timer->cb = cb;
timer->data = data;
timer->fd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC);
if (timer->fd < 0) {
log_error("cannot create timerfd (%d): %m", errno);
llog_error(timer, "cannot create timerfd (%d): %m", errno);
ret = -EFAULT;
goto err_free;
}
ret = timerfd_settime(timer->fd, 0, spec, NULL);
if (ret) {
log_warn("cannot set timerfd (%d): %m", errno);
llog_warn(timer, "cannot set timerfd (%d): %m", errno);
ret = -EFAULT;
goto err_close;
}
ret = ev_fd_new(&timer->efd, timer->fd, EV_READABLE, timer_cb, timer);
ret = ev_fd_new(&timer->efd, timer->fd, EV_READABLE, timer_cb, timer,
timer->llog);
if (ret)
goto err_close;
@ -1261,15 +1297,21 @@ err_free:
void ev_timer_ref(struct ev_timer *timer)
{
if (!timer || !timer->ref)
if (!timer)
return;
if (!timer->ref)
return llog_vEINVAL(timer);
++timer->ref;
}
void ev_timer_unref(struct ev_timer *timer)
{
if (!timer || !timer->ref || --timer->ref)
if (!timer)
return;
if (!timer->ref)
return llog_vEINVAL(timer);
if (--timer->ref)
return;
ev_fd_unref(timer->efd);
@ -1316,12 +1358,14 @@ int ev_timer_update(struct ev_timer *timer, const struct itimerspec *spec)
{
int ret;
if (!timer || !spec)
if (!timer)
return -EINVAL;
if (!spec)
return llog_EINVAL(timer);
ret = timerfd_settime(timer->fd, 0, spec, NULL);
if (ret) {
log_warn("cannot set timerfd (%d): %m", errno);
llog_warn(timer, "cannot set timerfd (%d): %m", errno);
return -EFAULT;
}
@ -1335,10 +1379,12 @@ int ev_eloop_new_timer(struct ev_eloop *loop, struct ev_timer **out,
struct ev_timer *timer;
int ret;
if (!out || !loop)
if (!loop)
return -EINVAL;
if (!out)
return llog_EINVAL(loop);
ret = ev_timer_new(&timer, spec, cb, data);
ret = ev_timer_new(&timer, spec, cb, data, loop->llog);
if (ret)
return ret;
@ -1357,8 +1403,10 @@ int ev_eloop_add_timer(struct ev_eloop *loop, struct ev_timer *timer)
{
int ret;
if (!loop || !timer)
if (!loop)
return -EINVAL;
if (!timer)
return llog_EINVAL(loop);
if (ev_fd_is_bound(timer->efd))
return -EALREADY;
@ -1401,7 +1449,7 @@ static void counter_event(struct ev_fd *fd, int mask, void *data)
uint64_t val;
if (mask & (EV_HUP | EV_ERR)) {
log_warning("HUP/ERR on eventfd");
llog_warning(fd, "HUP/ERR on eventfd");
if (cnt->cb)
cnt->cb(cnt, 0, cnt->data);
return;
@ -1413,18 +1461,18 @@ static void counter_event(struct ev_fd *fd, int mask, void *data)
ret = read(cnt->fd, &val, sizeof(val));
if (ret < 0) {
if (errno != EAGAIN) {
log_warning("reading eventfd failed (%d): %m", errno);
llog_warning(fd, "reading eventfd failed (%d): %m", errno);
ev_counter_disable(cnt);
if (cnt->cb)
cnt->cb(cnt, 0, cnt->data);
}
} else if (ret == 0) {
log_warning("EOF on eventfd");
llog_warning(fd, "EOF on eventfd");
ev_counter_disable(cnt);
if (cnt->cb)
cnt->cb(cnt, 0, cnt->data);
} else if (ret != sizeof(val)) {
log_warning("read %d bytes instead of 8 on eventfd", ret);
llog_warning(fd, "read %d bytes instead of 8 on eventfd", ret);
ev_counter_disable(cnt);
if (cnt->cb)
cnt->cb(cnt, 0, cnt->data);
@ -1434,30 +1482,33 @@ static void counter_event(struct ev_fd *fd, int mask, void *data)
}
}
int ev_counter_new(struct ev_counter **out, ev_counter_cb cb, void *data)
int ev_counter_new(struct ev_counter **out, ev_counter_cb cb, void *data,
ev_log_t log)
{
struct ev_counter *cnt;
int ret;
if (!out)
return -EINVAL;
return llog_dEINVAL(log);
cnt = malloc(sizeof(*cnt));
if (!cnt)
return -ENOMEM;
return llog_dENOMEM(log);
memset(cnt, 0, sizeof(*cnt));
cnt->ref = 1;
cnt->llog = log;
cnt->cb = cb;
cnt->data = data;
cnt->fd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);
if (cnt->fd < 0) {
log_error("cannot create eventfd (%d): %m", errno);
llog_error(cnt, "cannot create eventfd (%d): %m", errno);
ret = -EFAULT;
goto err_free;
}
ret = ev_fd_new(&cnt->efd, cnt->fd, EV_READABLE, counter_event, cnt);
ret = ev_fd_new(&cnt->efd, cnt->fd, EV_READABLE, counter_event, cnt,
cnt->llog);
if (ret)
goto err_close;
@ -1473,15 +1524,21 @@ err_free:
void ev_counter_ref(struct ev_counter *cnt)
{
if (!cnt || !cnt->ref)
if (!cnt)
return;
if (!cnt->ref)
return llog_vEINVAL(cnt);
++cnt->ref;
}
void ev_counter_unref(struct ev_counter *cnt)
{
if (!cnt || !cnt->ref || --cnt->ref)
if (!cnt)
return;
if (!cnt->ref)
return llog_vEINVAL(cnt);
if (--cnt->ref)
return;
ev_fd_unref(cnt->efd);
@ -1529,23 +1586,25 @@ int ev_counter_inc(struct ev_counter *cnt, uint64_t val)
{
int ret;
if (!cnt || !val)
if (!cnt)
return -EINVAL;
if (!val)
return llog_EINVAL(cnt);
if (val == 0xffffffffffffffffULL) {
log_warning("increasing counter with invalid value %llu", val);
llog_warning(cnt, "increasing counter with invalid value %llu", val);
return -EINVAL;;
}
ret = write(cnt->fd, &val, sizeof(val));
if (ret < 0) {
if (errno == EAGAIN)
log_warning("eventfd overflow while writing %llu", val);
llog_warning(cnt, "eventfd overflow while writing %llu", val);
else
log_warning("eventfd write error (%d): %m", errno);
llog_warning(cnt, "eventfd write error (%d): %m", errno);
return -EFAULT;
} else if (ret != sizeof(val)) {
log_warning("wrote %d bytes instead of 8 to eventdfd", ret);
llog_warning(cnt, "wrote %d bytes instead of 8 to eventdfd", ret);
return -EFAULT;
}
@ -1558,10 +1617,12 @@ int ev_eloop_new_counter(struct ev_eloop *eloop, struct ev_counter **out,
int ret;
struct ev_counter *cnt;
if (!eloop || !out)
if (!eloop)
return -EINVAL;
if (!out)
return llog_EINVAL(eloop);
ret = ev_counter_new(&cnt, cb, data);
ret = ev_counter_new(&cnt, cb, data, eloop->llog);
if (ret)
return ret;
@ -1580,8 +1641,10 @@ int ev_eloop_add_counter(struct ev_eloop *eloop, struct ev_counter *cnt)
{
int ret;
if (!eloop || !cnt)
if (!eloop)
return -EINVAL;
if (!cnt)
return llog_EINVAL(eloop);
if (ev_fd_is_bound(cnt->efd))
return -EALREADY;
@ -1618,8 +1681,10 @@ int ev_eloop_register_signal_cb(struct ev_eloop *loop, int signum,
int ret;
struct kmscon_dlist *iter;
if (!loop || signum < 0 || !cb)
if (!loop)
return -EINVAL;
if (signum < 0 || !cb)
return llog_EINVAL(loop);
kmscon_dlist_for_each(iter, &loop->sig_list) {
sig = kmscon_dlist_entry(iter, struct ev_signal_shared, list);
@ -1688,7 +1753,7 @@ int ev_eloop_register_idle_cb(struct ev_eloop *eloop, ev_idle_cb cb,
ret = ev_counter_inc(eloop->cnt, 1);
if (ret) {
log_warning("cannot increase eloop idle-counter");
llog_warning(eloop, "cannot increase eloop idle-counter");
ev_eloop_rm_counter(eloop->cnt);
kmscon_hook_rm_cast(eloop->idlers, cb, data);
return ret;

View File

@ -87,7 +87,8 @@ void ev_eloop_rm_eloop(struct ev_eloop *rm);
/* fd sources */
int ev_fd_new(struct ev_fd **out, int fd, int mask, ev_fd_cb cb, void *data);
int ev_fd_new(struct ev_fd **out, int fd, int mask, ev_fd_cb cb, void *data,
ev_log_t log);
void ev_fd_ref(struct ev_fd *fd);
void ev_fd_unref(struct ev_fd *fd);
@ -106,7 +107,7 @@ void ev_eloop_rm_fd(struct ev_fd *fd);
/* timer sources */
int ev_timer_new(struct ev_timer **out, const struct itimerspec *spec,
ev_timer_cb cb, void *data);
ev_timer_cb cb, void *data, ev_log_t log);
void ev_timer_ref(struct ev_timer *timer);
void ev_timer_unref(struct ev_timer *timer);
@ -125,7 +126,8 @@ void ev_eloop_rm_timer(struct ev_timer *timer);
/* counter sources */
int ev_counter_new(struct ev_counter **out, ev_counter_cb, void *data);
int ev_counter_new(struct ev_counter **out, ev_counter_cb, void *data,
ev_log_t log);
void ev_counter_ref(struct ev_counter *cnt);
void ev_counter_unref(struct ev_counter *cnt);

View File

@ -375,14 +375,14 @@ int log_set_file(const char *file)
*/
static const char *log__sev2str[] = {
"DEBUG", /* LOG_DEBUG */
"INFO", /* LOG_INFO */
"NOTICE", /* LOG_NOTICE */
"WARNING", /* LOG_WARNING */
"ERROR", /* LOG_ERROR */
"CRITICAL", /* LOG_CRITICAL */
"ALERT", /* LOG_ALERT */
"FATAL", /* LOG_FATAL */
[LOG_DEBUG] = "DEBUG",
[LOG_INFO] = "INFO",
[LOG_NOTICE] = "NOTICE",
[LOG_WARNING] = "WARNING",
[LOG_ERROR] = "ERROR",
[LOG_CRITICAL] = "CRITICAL",
[LOG_ALERT] = "ALERT",
[LOG_FATAL] = "FATAL",
};
static void log__submit(const char *file,

View File

@ -259,7 +259,7 @@ static int setup_app(struct kmscon_app *app)
{
int ret;
ret = ev_eloop_new(&app->eloop);
ret = ev_eloop_new(&app->eloop, log_llog);
if (ret)
goto err_app;