|
@@ -21,8 +21,8 @@ static int check_clock(const clockid_t which_clock)
|
|
|
|
|
|
read_lock(&tasklist_lock);
|
|
|
p = find_task_by_pid(pid);
|
|
|
- if (!p || (CPUCLOCK_PERTHREAD(which_clock) ?
|
|
|
- p->tgid != current->tgid : p->tgid != pid)) {
|
|
|
+ if (!p || !(CPUCLOCK_PERTHREAD(which_clock) ?
|
|
|
+ same_thread_group(p, current) : thread_group_leader(p))) {
|
|
|
error = -EINVAL;
|
|
|
}
|
|
|
read_unlock(&tasklist_lock);
|
|
@@ -308,13 +308,13 @@ int posix_cpu_clock_get(const clockid_t which_clock, struct timespec *tp)
|
|
|
p = find_task_by_pid(pid);
|
|
|
if (p) {
|
|
|
if (CPUCLOCK_PERTHREAD(which_clock)) {
|
|
|
- if (p->tgid == current->tgid) {
|
|
|
+ if (same_thread_group(p, current)) {
|
|
|
error = cpu_clock_sample(which_clock,
|
|
|
p, &rtn);
|
|
|
}
|
|
|
} else {
|
|
|
read_lock(&tasklist_lock);
|
|
|
- if (p->tgid == pid && p->signal) {
|
|
|
+ if (thread_group_leader(p) && p->signal) {
|
|
|
error =
|
|
|
cpu_clock_sample_group(which_clock,
|
|
|
p, &rtn);
|
|
@@ -355,7 +355,7 @@ int posix_cpu_timer_create(struct k_itimer *new_timer)
|
|
|
p = current;
|
|
|
} else {
|
|
|
p = find_task_by_pid(pid);
|
|
|
- if (p && p->tgid != current->tgid)
|
|
|
+ if (p && !same_thread_group(p, current))
|
|
|
p = NULL;
|
|
|
}
|
|
|
} else {
|
|
@@ -363,7 +363,7 @@ int posix_cpu_timer_create(struct k_itimer *new_timer)
|
|
|
p = current->group_leader;
|
|
|
} else {
|
|
|
p = find_task_by_pid(pid);
|
|
|
- if (p && p->tgid != pid)
|
|
|
+ if (p && !thread_group_leader(p))
|
|
|
p = NULL;
|
|
|
}
|
|
|
}
|