#include "config.h"
-#include <sys/signalfd.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define max(a, b) (((a) > (b)) ? (a) : (b))
+static int signalled = 0;
+
struct measurements {
int distance;
double max_frequency;
return 0;
}
+static void
+signal_handler(__attribute__((__unused__)) int signal)
+{
+ signalled++;
+}
+
static int
mainloop(struct libevdev *dev, struct measurements *m) {
- struct pollfd fds[2];
- sigset_t mask;
-
- fds[0].fd = libevdev_get_fd(dev);
- fds[0].events = POLLIN;
+ struct pollfd fds;
- sigemptyset(&mask);
- sigaddset(&mask, SIGINT);
- fds[1].fd = signalfd(-1, &mask, SFD_NONBLOCK);
- fds[1].events = POLLIN;
+ fds.fd = libevdev_get_fd(dev);
+ fds.events = POLLIN;
- sigprocmask(SIG_BLOCK, &mask, NULL);
+ signal(SIGINT, signal_handler);
- while (poll(fds, 2, -1)) {
+ while (poll(&fds, 1, -1)) {
struct input_event ev;
int rc;
- if (fds[1].revents)
+ if (signalled)
break;
do {
#include "config.h"
-#include <sys/signalfd.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define max(a, b) (((a) > (b)) ? (a) : (b))
+static int signalled = 0;
+
static int
usage(void) {
printf("Usage: %s 12x34 /dev/input/eventX\n", program_invocation_short_name);
return 0;
}
+static void
+signal_handler(__attribute__((__unused__)) int signal)
+{
+ signalled++;
+}
+
static int
mainloop(struct libevdev *dev, struct dimensions *dim) {
- struct pollfd fds[2];
- sigset_t mask;
-
- fds[0].fd = libevdev_get_fd(dev);
- fds[0].events = POLLIN;
+ struct pollfd fds;
- sigemptyset(&mask);
- sigaddset(&mask, SIGINT);
- fds[1].fd = signalfd(-1, &mask, SFD_NONBLOCK);
- fds[1].events = POLLIN;
+ fds.fd = libevdev_get_fd(dev);
+ fds.events = POLLIN;
- sigprocmask(SIG_BLOCK, &mask, NULL);
+ signal(SIGINT, signal_handler);
- while (poll(fds, 2, -1)) {
+ while (poll(&fds, 1, -1)) {
struct input_event ev;
int rc;
- if (fds[1].revents)
+ if (signalled)
break;
do {