diff options
Diffstat (limited to 'freebsd/sys/kern/kern_time.c')
-rw-r--r-- | freebsd/sys/kern/kern_time.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/freebsd/sys/kern/kern_time.c b/freebsd/sys/kern/kern_time.c index dbb10d01..2050d03b 100644 --- a/freebsd/sys/kern/kern_time.c +++ b/freebsd/sys/kern/kern_time.c @@ -204,13 +204,10 @@ kern_clock_getcpuclockid2(struct thread *td, id_t id, int which, switch (which) { case CPUCLOCK_WHICH_PID: if (id != 0) { - p = pfind(id); - if (p == NULL) - return (ESRCH); - error = p_cansee(td, p); - PROC_UNLOCK(p); + error = pget(id, PGET_CANSEE | PGET_NOTID, &p); if (error != 0) return (error); + PROC_UNLOCK(p); pid = id; } else { pid = td->td_proc->p_pid; @@ -1357,13 +1354,20 @@ struct timer_getoverrun_args { int sys_ktimer_getoverrun(struct thread *td, struct ktimer_getoverrun_args *uap) { + + return (kern_ktimer_getoverrun(td, uap->timerid)); +} + +int +kern_ktimer_getoverrun(struct thread *td, int timer_id) +{ struct proc *p = td->td_proc; struct itimer *it; int error ; PROC_LOCK(p); - if (uap->timerid < 3 || - (it = itimer_find(p, uap->timerid)) == NULL) { + if (timer_id < 3 || + (it = itimer_find(p, timer_id)) == NULL) { PROC_UNLOCK(p); error = EINVAL; } else { |