int netbsd32_timer_delete(struct lwp *l, const struct netbsd32_timer_delete_args *uap, register_t *retval) { /* { syscallarg(netbsd32_timer_t) timerid; } */ struct sys_timer_delete_args ua; NETBSD32TO64_UAP(timerid); return sys_timer_delete(l, (void *)&ua, retval); }
static int create_posix_timers(struct task_restore_args *args) { int ret, i; timer_t next_id; struct sigevent sev; for (i = 0; i < args->timer_n; i++) { sev.sigev_notify = args->posix_timers[i].spt.it_sigev_notify; sev.sigev_signo = args->posix_timers[i].spt.si_signo; sev.sigev_value.sival_ptr = args->posix_timers[i].spt.sival_ptr; while (1) { ret = sys_timer_create(args->posix_timers[i].spt.clock_id, &sev, &next_id); if (ret < 0) { pr_err("Can't create posix timer - %d\n", i); return ret; } if ((long)next_id == args->posix_timers[i].spt.it_id) break; ret = sys_timer_delete(next_id); if (ret < 0) { pr_err("Can't remove temporaty posix timer %lx\n", (long) next_id); return ret; } if ((long)next_id > args->posix_timers[i].spt.it_id) { pr_err("Can't create timers, kernel don't give them consequently"); return -1; } } } return 0; }