PMClose xf86OSPMOpen(void) { int kq; struct kevent ev; if (APMihPtr || !xf86Info.pmFlag) { return NULL; } if ((devFd = open(_PATH_APM_DEV, O_RDONLY)) == -1) { return NULL; } if ((kq = kqueue()) <= 0) { close(devFd); return NULL; } EV_SET(&ev, devFd, EVFILT_READ, EV_ADD | EV_ENABLE | EV_CLEAR, 0, 0, NULL); if (kevent(kq, &ev, 1, NULL, 0, NULL) < 0) { close(devFd); return NULL; } xf86PMGetEventFromOs = bsdPMGetEventFromOS; xf86PMConfirmEventToOs = bsdPMConfirmEventToOs; APMihPtr = xf86AddInputHandler(kq, xf86HandlePMEvents, NULL); return bsdCloseAPM; }
PMClose xf86OSPMOpen(void) { int fd; if (APMihPtr || !xf86Info.pmFlag) { return NULL; } if ((fd = open(APM_DEVICE, O_RDWR)) == -1) { return NULL; } xf86PMGetEventFromOs = bsdPMGetEventFromOS; xf86PMConfirmEventToOs = bsdPMConfirmEventToOs; APMihPtr = xf86AddInputHandler(fd, xf86HandlePMEvents, NULL); return bsdCloseAPM; }