static int aio_io(struct aiocb *iocb, int (*sysfunc)(struct aiocb *iocb)) { struct sigev_node *sn; struct sigevent saved_ev; int ret, err; if (iocb->aio_sigevent.sigev_notify != SIGEV_THREAD) { ret = sysfunc(iocb); return (ret); } ret = aio_sigev_alloc(iocb, &sn, &saved_ev); if (ret) return (ret); ret = sysfunc(iocb); iocb->aio_sigevent = saved_ev; if (ret != 0) { err = errno; __sigev_list_lock(); __sigev_delete_node(sn); __sigev_list_unlock(); errno = err; } return (ret); }
int main(int argc, char * argv[]) { int x[] = {0xFF,0xFF}; return sysfunc(TOARU_SYS_FUNC_SETVGACURSOR, (char **)x); }