/* * APM events can be requested direclty from /dev/apm */ static int bsdPMGetEventFromOS(int fd, pmEvent *events, int num) { struct apm_event_info bsdEvent; int i; for (i = 0; i < num; i++) { if (ioctl(fd, APM_IOC_NEXTEVENT, &bsdEvent) < 0) { if (errno != EAGAIN) { xf86Msg(X_WARNING, "bsdPMGetEventFromOS: APM_IOC_NEXTEVENT" " errno = %d\n", errno); } break; } events[i] = bsdToXF86(bsdEvent.type); } return i; }
/* * APM events can be requested direclty from /dev/apm */ static int bsdPMGetEventFromOS(int kq, pmEvent *events, int num) { struct kevent ev; int i, result; struct timespec ts = { 0, 0 }; for (i = 0; i < num; i++) { result = kevent(kq, NULL, 0, &ev, 1, &ts); if (result == 0 || APM_EVENT_TYPE(ev.data) == APM_NOEVENT) { /* no event */ break; } else if (result < 0) { xf86Msg(X_WARNING, "bsdPMGetEventFromOS: kevent returns" " errno = %d\n", errno); break; } events[i] = bsdToXF86(APM_EVENT_TYPE(ev.data)); } return i; }