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;
}
Esempio n. 2
0
File: bsd_apm.c Progetto: aosm/X11
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;
}