Пример #1
0
Файл: bsd_apm.c Проект: aosm/X11
/*
 * 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;
}