ret = ioctl(fd, GPIO_V2_GET_LINEINFO_WATCH_IOCTL, &req); if (ret) {
perror("unable to set up line watch"); return EXIT_FAILURE;
}
}
pfd.fd = fd;
pfd.events = POLLIN | POLLPRI;
for (;;) {
ret = poll(&pfd, 1, 5000); if (ret < 0) {
perror("error polling the linechanged fd"); return EXIT_FAILURE;
} elseif (ret > 0) {
memset(&chg, 0, sizeof(chg));
rd = read(pfd.fd, &chg, sizeof(chg)); if (rd < 0 || rd != sizeof(chg)) { if (rd != sizeof(chg))
errno = EIO;
perror("error reading line change event"); return EXIT_FAILURE;
}
switch (chg.event_type) { case GPIO_V2_LINE_CHANGED_REQUESTED:
event = "requested"; break; case GPIO_V2_LINE_CHANGED_RELEASED:
event = "released"; break; case GPIO_V2_LINE_CHANGED_CONFIG:
event = "config changed"; break; default:
fprintf(stderr, "invalid event type received from the kernel\n"); return EXIT_FAILURE;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.