summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/kern/kern_time.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/kern/kern_time.c')
-rw-r--r--freebsd/sys/kern/kern_time.c18
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 {