From a7b0880a8d4d87a78eb247330d28d9ff6b54da0f Mon Sep 17 00:00:00 2001 From: Masamichi Takagi Date: Tue, 23 Sep 2014 12:01:51 +0900 Subject: [PATCH] Make findthread_and_lock take ihk_spinlock_t ** --- kernel/include/process.h | 2 +- kernel/process.c | 6 +++--- kernel/procfs.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/kernel/include/process.h b/kernel/include/process.h index 9d0c743e..b3f5f7a1 100644 --- a/kernel/include/process.h +++ b/kernel/include/process.h @@ -282,7 +282,7 @@ void check_need_resched(void); void cpu_set(int cpu, cpu_set_t *cpu_set, ihk_spinlock_t *lock); void cpu_clear(int cpu, cpu_set_t *cpu_set, ihk_spinlock_t *lock); -struct process *findthread_and_lock(int pid, int tid, void *savelock, unsigned long *irqstate); +struct process *findthread_and_lock(int pid, int tid, ihk_spinlock_t **savelock, unsigned long *irqstate); void process_unlock(void *savelock, unsigned long irqstate); #endif diff --git a/kernel/process.c b/kernel/process.c index c6430c43..012a809e 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -2066,7 +2066,7 @@ void runq_del_proc(struct process *proc, int cpu_id) } struct process * -findthread_and_lock(int pid, int tid, void *savelock, unsigned long *irqstate) +findthread_and_lock(int pid, int tid, ihk_spinlock_t **savelock, unsigned long *irqstate) { struct cpu_local_var *v; struct process *p; @@ -2075,11 +2075,11 @@ findthread_and_lock(int pid, int tid, void *savelock, unsigned long *irqstate) for(i = 0; i < num_processors; i++){ v = get_cpu_local_var(i); - *(ihk_spinlock_t **)savelock = &(v->runq_lock); + *savelock = &(v->runq_lock); *irqstate = ihk_mc_spinlock_lock(&(v->runq_lock)); list_for_each_entry(p, &(v->runq), sched_list){ if(p->pid == pid && - p->tid == tid){ + (tid == -1 || p->tid == tid)){ return p; } } diff --git a/kernel/procfs.c b/kernel/procfs.c index e7ddb73d..08acf7c0 100644 --- a/kernel/procfs.c +++ b/kernel/procfs.c @@ -200,7 +200,7 @@ void process_procfs_request(unsigned long rarg) int rosnum, ret, pid, tid, ans = -EIO, eof = 0; char *buf, *p; struct ihk_ikc_channel_desc *syscall_channel; - void *savelock; + ihk_spinlock_t *savelock; unsigned long irqstate; dprintf("process_procfs_request: invoked.\n");