Permalink
Browse files

Add -Wextra to CFLAGS and fix all related warnings on Linux.

This will also need to be done on Solaris.


git-svn-id: svn://mark.heily.com/libkqueue/trunk@513 34a59efb-09c4-4dcf-b95f-994a32aba0d8
  • Loading branch information...
1 parent b8d3500 commit c9198d25b47211ead0788ccb105d9b06f9d282c0 mheily committed May 22, 2011
View
6 TODO
@@ -1,4 +1,10 @@
+ * Create a FILTER_DECL() macro that initializes the 'struct filter' object,
+ with all members properly initialized. Then -Wno-missing-field-initializers
+ can be removed from CFLAGS.
+
+ * Implement the knote_modify() hook for all filters.
+
* Add a dbg_printf() statement within kevent_wait() to report the value
of the timeout.
View
@@ -3,7 +3,7 @@ version="2.0a"
abi_major="0"
abi_minor="0"
abi_version="$abi_major.$abi_minor"
-cflags="-Wall -Werror -g -O2 -std=c99 -D_XOPEN_SOURCE=600"
+cflags="-Wall -Wextra -Wno-missing-field-initializers -Werror -g -O2 -std=c99 -D_XOPEN_SOURCE=600"
ldflags=""
sources="src/common/filter.c src/common/knote.c src/common/map.c
src/common/kevent.c src/common/kqueue.c"
View
@@ -31,7 +31,7 @@
static const char *
kevent_filter_dump(const struct kevent *kev)
{
- static char __thread buf[64];
+ static __thread char buf[64];
snprintf(&buf[0], sizeof(buf), "%d (%s)",
kev->filter, filter_name(kev->filter));
@@ -41,7 +41,7 @@ kevent_filter_dump(const struct kevent *kev)
static const char *
kevent_fflags_dump(const struct kevent *kev)
{
- static char __thread buf[1024];
+ static __thread char buf[1024];
#define KEVFFL_DUMP(attrib) \
if (kev->fflags & attrib) \
@@ -74,7 +74,7 @@ kevent_fflags_dump(const struct kevent *kev)
static const char *
kevent_flags_dump(const struct kevent *kev)
{
- static char __thread buf[1024];
+ static __thread char buf[1024];
#define KEVFL_DUMP(attrib) \
if (kev->flags & attrib) \
@@ -101,7 +101,7 @@ kevent_flags_dump(const struct kevent *kev)
const char *
kevent_dump(const struct kevent *kev)
{
- static char __thread buf[1024];
+ static __thread char buf[1024];
snprintf((char *) &buf[0], sizeof(buf),
"{ ident=%d, filter=%s, %s, %s, data=%d, udata=%p }",
@@ -147,7 +147,7 @@ kevent_copyin_one(struct kqueue *kq, const struct kevent *src)
kn->kn_kq = kq;
assert(filt->kn_create);
if (filt->kn_create(filt, kn) < 0) {
- knote_release(filt, kn);
+ knote_release(kn);
errno = EFAULT;
return (-1);
}
View
@@ -53,7 +53,7 @@ knote_new(void)
}
void
-knote_release(struct filter *filt, struct knote *kn)
+knote_release(struct knote *kn)
{
assert (kn->kn_ref > 0);
@@ -114,7 +114,7 @@ knote_delete(struct filter *filt, struct knote *kn)
kn->kn_flags |= KNFL_KNOTE_DELETED;
- knote_release(filt, kn);
+ knote_release(kn);
return (0);
}
View
@@ -189,7 +189,7 @@ struct knote * knote_lookup(struct filter *, short);
//DEADWOOD: struct knote * knote_get_by_data(struct filter *filt, intptr_t);
struct knote * knote_new(void);
#define knote_retain(kn) atomic_inc(&kn->kn_ref)
-void knote_release(struct filter *, struct knote *);
+void knote_release(struct knote *);
void knote_insert(struct filter *, struct knote *);
int knote_delete(struct filter *, struct knote *);
int knote_init(void);
View
@@ -23,7 +23,7 @@ const struct filter evfilt_proc = EVFILT_NOTIMPL;
* Per-thread epoll event buffer used to ferry data between
* kevent_wait() and kevent_copyout().
*/
-static struct epoll_event __thread epevt[MAX_KEVENT];
+static __thread struct epoll_event epevt[MAX_KEVENT];
const struct kqueue_vtable kqops = {
linux_kqueue_init,
@@ -80,7 +80,7 @@ linux_kqueue_init(struct kqueue *kq)
}
void
-linux_kqueue_free(struct kqueue *kq)
+linux_kqueue_free(struct kqueue *kq UNUSED)
{
abort();//FIXME
}
@@ -146,7 +146,7 @@ linux_kevent_wait(
int
linux_kevent_copyout(struct kqueue *kq, int nready,
- struct kevent *eventlist, int nevents)
+ struct kevent *eventlist, int nevents UNUSED)
{
struct epoll_event *ev;
struct filter *filt;
@@ -247,11 +247,13 @@ int
linux_eventfd_lower(struct eventfd *e)
{
uint64_t cur;
+ ssize_t n;
int rv = 0;
/* Reset the counter */
dbg_puts("lowering event level");
- if (read(e->ef_id, &cur, sizeof(cur)) < sizeof(cur)) {
+ n = read(e->ef_id, &cur, sizeof(cur));
+ if (n < 0) {
switch (errno) {
case EAGAIN:
/* Not considered an error */
@@ -265,7 +267,10 @@ linux_eventfd_lower(struct eventfd *e)
dbg_printf("read(2): %s", strerror(errno));
rv = -1;
}
- }
+ } else if (n != sizeof(cur)) {
+ dbg_puts("short read");
+ rv = -1;
+ }
return (rv);
}
@@ -322,7 +327,7 @@ linux_get_descriptor_type(struct knote *kn)
char *
epoll_event_dump(struct epoll_event *evt)
{
- static char __thread buf[128];
+ static __thread char buf[128];
if (evt == NULL)
return "(null)";
View
@@ -191,6 +191,9 @@ int
evfilt_read_knote_modify(struct filter *filt, struct knote *kn,
const struct kevent *kev)
{
+ (void) filt;
+ (void) kn;
+ (void) kev;
return (-1); /* STUB */
}
View
@@ -24,7 +24,7 @@ signalfd_reset(int sigfd)
/* Discard any pending signal */
n = read(sigfd, &sig, sizeof(sig));
- if (n < sizeof(sig)) {
+ if (n < 0 || n != sizeof(sig)) {
if (errno == EWOULDBLOCK)
return;
//FIXME: eintr?
@@ -94,7 +94,7 @@ signalfd_create(int epfd, void *ptr, int signum)
}
int
-evfilt_signal_copyout(struct kevent *dst, struct knote *src, void *unused)
+evfilt_signal_copyout(struct kevent *dst, struct knote *src, void *x UNUSED)
{
int sigfd;
@@ -128,8 +128,9 @@ evfilt_signal_knote_create(struct filter *filt, struct knote *kn)
}
int
-evfilt_signal_knote_modify(struct filter *filt, struct knote *kn,
- const struct kevent *kev)
+evfilt_signal_knote_modify(struct filter *filt UNUSED,
+ struct knote *kn UNUSED,
+ const struct kevent *kev UNUSED)
{
/* Nothing to do since the signal number does not change. */
View
@@ -20,7 +20,7 @@
static char *
itimerspec_dump(struct itimerspec *ts)
{
- static char __thread buf[1024];
+ static __thread char buf[1024];
snprintf(buf, sizeof(buf),
"itimer: [ interval=%lu s %lu ns, next expire=%lu s %lu ns ]",
@@ -73,7 +73,7 @@ evfilt_timer_copyout(struct kevent *dst, struct knote *src, void *ptr)
timer has been trigered.
*/
n = read(src->data.pfd, &expired, sizeof(expired));
- if (n < 0 || n < sizeof(expired)) {
+ if (n != sizeof(expired)) {
dbg_puts("invalid read from timerfd");
expired = 1; /* Fail gracefully */
}
@@ -122,6 +122,9 @@ int
evfilt_timer_knote_modify(struct filter *filt, struct knote *kn,
const struct kevent *kev)
{
+ (void)filt;
+ (void)kn;
+ (void)kev;
return (0); /* STUB */
}
View
@@ -61,11 +61,13 @@ static int
eventfd_lower(int evfd)
{
uint64_t cur;
+ ssize_t n;
int rv = 0;
/* Reset the counter */
dbg_puts("lowering event level");
- if (read(evfd, &cur, sizeof(cur)) < sizeof(cur)) {
+ n = read(evfd, &cur, sizeof(cur));
+ if (n < 0) {
switch (errno) {
case EAGAIN:
/* Not considered an error */
@@ -79,13 +81,16 @@ eventfd_lower(int evfd)
dbg_printf("read(2): %s", strerror(errno));
rv = -1;
}
- }
+ } else if (n != sizeof(cur)) {
+ dbg_puts("short read");
+ rv = -1;
+ }
return (rv);
}
int
-evfilt_user_copyout(struct kevent *dst, struct knote *src, void *ptr)
+evfilt_user_copyout(struct kevent *dst, struct knote *src, void *ptr UNUSED)
{
memcpy(dst, &src->kev, sizeof(*dst));
dst->fflags &= ~NOTE_FFCTRLMASK; //FIXME: Not sure if needed
@@ -140,7 +145,7 @@ evfilt_user_knote_create(struct filter *filt, struct knote *kn)
}
int
-evfilt_user_knote_modify(struct filter *filt, struct knote *kn,
+evfilt_user_knote_modify(struct filter *filt UNUSED, struct knote *kn,
const struct kevent *kev)
{
unsigned int ffctrl;
View
@@ -19,7 +19,7 @@
static char *
inotify_mask_dump(uint32_t mask)
{
- static char __thread buf[1024];
+ static __thread char buf[1024];
#define INEVT_MASK_DUMP(attrib) \
if (mask & attrib) \
@@ -46,7 +46,7 @@ inotify_mask_dump(uint32_t mask)
static char *
inotify_event_dump(struct inotify_event *evt)
{
- static char __thread buf[1024];
+ static __thread char buf[1024];
snprintf(buf, sizeof(buf), "wd=%d mask=%s",
evt->wd,
@@ -165,7 +165,7 @@ delete_watch(struct filter *filt, struct knote *kn)
}
int
-evfilt_vnode_copyout(struct kevent *dst, struct knote *src, void *ptr)
+evfilt_vnode_copyout(struct kevent *dst, struct knote *src, void *ptr UNUSED)
{
struct inotify_event evt;
struct stat sb;
@@ -241,6 +241,9 @@ int
evfilt_vnode_knote_modify(struct filter *filt, struct knote *kn,
const struct kevent *kev)
{
+ (void)filt;
+ (void)kn;
+ (void)kev;
return (-1); /* FIXME - STUB */
}
View
@@ -87,6 +87,9 @@ int
evfilt_socket_knote_modify(struct filter *filt, struct knote *kn,
const struct kevent *kev)
{
+ (void) filt;
+ (void) kn;
+ (void) kev;
return (-1); /* STUB */
}
View
@@ -17,13 +17,13 @@
#include "../common/private.h"
int
-posix_kqueue_init(struct kqueue *kq)
+posix_kqueue_init(struct kqueue *kq UNUSED)
{
return (0);
}
void
-posix_kqueue_free(struct kqueue *kq)
+posix_kqueue_free(struct kqueue *kq UNUSED)
{
}
View
@@ -36,13 +36,17 @@
#define fastpath(x) __builtin_expect((x), 1)
#define slowpath(x) __builtin_expect((x), 0)
+/*
+ * GCC-compatible attributes
+ */
#ifdef MAKE_STATIC
# define CONSTRUCTOR
#else
# define CONSTRUCTOR __attribute__ ((constructor))
#endif
#define VISIBLE __attribute__((visibility("default")))
#define HIDDEN __attribute__((visibility("hidden")))
+#define UNUSED __attribute__((unused))
#include <fcntl.h>
#include <limits.h>

0 comments on commit c9198d2

Please sign in to comment.