| /* |
| * Some helper stuff shared between the sample programs. |
| */ |
| #ifndef _TESTHELPER_H |
| #define _TESTHELPER_H |
| |
| /* poll until POLLOUT, then call CIOCASYNCCRYPT */ |
| inline int do_async_crypt(int cfd, struct crypt_op *cryp) |
| { |
| struct pollfd pfd; |
| |
| pfd.fd = cfd; |
| pfd.events = POLLOUT; |
| |
| if (poll(&pfd, 1, -1) < 1) { |
| perror("poll()"); |
| return 1; |
| } |
| |
| if (ioctl(cfd, CIOCASYNCCRYPT, cryp)) { |
| perror("ioctl(CIOCCRYPT)"); |
| return 1; |
| } |
| return 0; |
| } |
| |
| /* poll until POLLIN, then call CIOCASYNCFETCH */ |
| inline int do_async_fetch(int cfd, struct crypt_op *cryp) |
| { |
| struct pollfd pfd; |
| |
| pfd.fd = cfd; |
| pfd.events = POLLIN; |
| |
| if (poll(&pfd, 1, -1) < 1) { |
| perror("poll()"); |
| return 1; |
| } |
| |
| if (ioctl(cfd, CIOCASYNCFETCH, cryp)) { |
| perror("ioctl(CIOCCRYPT)"); |
| return 1; |
| } |
| return 0; |
| } |
| |
| /* Check return value of stmt for identity with goodval. If they |
| * don't match, call return with the value of stmt. */ |
| #define DO_OR_DIE(stmt, goodval) { \ |
| int __rc_val; \ |
| if ((__rc_val = stmt) != goodval) { \ |
| perror("DO_OR_DIE(" #stmt "," #goodval ")"); \ |
| return __rc_val; \ |
| } \ |
| } |
| |
| #endif /* _TESTHELPER_H */ |