From: Lionel Sambuc Date: Sat, 18 Jun 2016 08:00:40 +0000 (+0200) Subject: kernel/cpulocals.h: Simplify macros X-Git-Url: http://zhaoyanbai.com/repos/zpipe.c?a=commitdiff_plain;h=733a844ac6282c03308d5ea03426b5863dfb06c3;p=minix.git kernel/cpulocals.h: Simplify macros Change-Id: Ice845fb0743ff686398293cef2620f5ac9c902ad --- diff --git a/minix/kernel/cpulocals.c b/minix/kernel/cpulocals.c index 17be8075a..d2a173470 100644 --- a/minix/kernel/cpulocals.c +++ b/minix/kernel/cpulocals.c @@ -1,3 +1,3 @@ #include "kernel/kernel.h" -DEFINE_CPULOCAL_VARS; +struct __cpu_local_vars __cpu_local_vars CPULOCAL_ARRAY; diff --git a/minix/kernel/cpulocals.h b/minix/kernel/cpulocals.h index a13e58a61..588196e5e 100644 --- a/minix/kernel/cpulocals.h +++ b/minix/kernel/cpulocals.h @@ -10,7 +10,7 @@ #define CPULOCAL_ARRAY [CONFIG_MAX_CPUS] -#define get_cpu_var(cpu, name) CPULOCAL_STRUCT[cpu].name +#define get_cpu_var(cpu, name) __cpu_local_vars[cpu].name #define get_cpu_var_ptr(cpu, name) (&(get_cpu_var(cpu, name))) #define get_cpulocal_var(name) get_cpu_var(cpuid, name) #define get_cpulocal_var_ptr(name) get_cpu_var_ptr(cpuid, name) @@ -24,69 +24,55 @@ #define CPULOCAL_ARRAY -#define get_cpulocal_var(name) CPULOCAL_STRUCT.name +#define get_cpulocal_var(name) __cpu_local_vars.name #define get_cpulocal_var_ptr(name) &(get_cpulocal_var(name)) #define get_cpu_var(cpu, name) get_cpulocal_var(name) #define get_cpu_var_ptr(cpu, name) get_cpulocal_var_ptr(name) #endif - - -#define DECLARE_CPULOCAL(type, name) type name - -#define CPULOCAL_STRUCT __cpu_local_vars -#define ___CPULOCAL_START struct CPULOCAL_STRUCT { -#define ___CPULOCAL_END } CPULOCAL_STRUCT CPULOCAL_ARRAY; - -#define DECLARE_CPULOCAL_START extern ___CPULOCAL_START -#define DECLARE_CPULOCAL_END ___CPULOCAL_END - -#define DEFINE_CPULOCAL_VARS struct CPULOCAL_STRUCT CPULOCAL_STRUCT CPULOCAL_ARRAY - - /* * The global cpu local variables in use */ -DECLARE_CPULOCAL_START +extern struct __cpu_local_vars { /* Process scheduling information and the kernel reentry count. */ -DECLARE_CPULOCAL(struct proc *,proc_ptr);/* pointer to currently running process */ -DECLARE_CPULOCAL(struct proc *,bill_ptr);/* process to bill for clock ticks */ -DECLARE_CPULOCAL(struct proc ,idle_proc);/* stub for an idle process */ + struct proc *proc_ptr;/* pointer to currently running process */ + struct proc *bill_ptr;/* process to bill for clock ticks */ + struct proc idle_proc;/* stub for an idle process */ /* * signal whether pagefault is already being handled to detect recursive * pagefaults */ -DECLARE_CPULOCAL(int, pagefault_handled); + int pagefault_handled; /* * which processpage tables are loaded right now. We need to know this because * some processes are loaded in each process pagetables and don't have their own * pagetables. Therefore we cannot use the proc_ptr pointer */ -DECLARE_CPULOCAL(struct proc *, ptproc); + struct proc * ptproc; /* CPU private run queues */ -DECLARE_CPULOCAL(struct proc *, run_q_head[NR_SCHED_QUEUES]); /* ptrs to ready list headers */ -DECLARE_CPULOCAL(struct proc *, run_q_tail[NR_SCHED_QUEUES]); /* ptrs to ready list tails */ -DECLARE_CPULOCAL(volatile int, cpu_is_idle); /* let the others know that you are idle */ + struct proc * run_q_head[NR_SCHED_QUEUES]; /* ptrs to ready list headers */ + struct proc * run_q_tail[NR_SCHED_QUEUES]; /* ptrs to ready list tails */ + int cpu_is_idle; /* let the others know that you are idle */ -DECLARE_CPULOCAL(volatile int, idle_interrupted); /* to interrupt busy-idle + int idle_interrupted; /* to interrupt busy-idle while profiling */ -DECLARE_CPULOCAL(u64_t ,tsc_ctr_switch); /* when did we switched time accounting */ + u64_t tsc_ctr_switch; /* when did we switched time accounting */ /* last values read from cpu when sending ooq msg to scheduler */ -DECLARE_CPULOCAL(u64_t, cpu_last_tsc); -DECLARE_CPULOCAL(u64_t, cpu_last_idle); + u64_t cpu_last_tsc; + u64_t cpu_last_idle; -DECLARE_CPULOCAL(char ,fpu_presence); /* whether the cpu has FPU or not */ -DECLARE_CPULOCAL(struct proc * ,fpu_owner); /* who owns the FPU of the local cpu */ + char fpu_presence; /* whether the cpu has FPU or not */ + struct proc * fpu_owner; /* who owns the FPU of the local cpu */ -DECLARE_CPULOCAL_END +} __cpu_local_vars CPULOCAL_ARRAY; #endif /* __ASSEMBLY__ */