diff options
author | Jake Burkholder <jake@FreeBSD.org> | 2001-01-21 19:25:07 +0000 |
---|---|---|
committer | Jake Burkholder <jake@FreeBSD.org> | 2001-01-21 19:25:07 +0000 |
commit | a448b62ac998ab4ae5e85fc7235cbb5c5dbe60ef (patch) | |
tree | a8fab5ee465b0d67b785fe50774997a21db3fdd5 /sys/i386/include | |
parent | 96b15e09d91b60bbe41d2a3ff239e9a38022ab57 (diff) | |
download | src-a448b62ac998ab4ae5e85fc7235cbb5c5dbe60ef.tar.gz src-a448b62ac998ab4ae5e85fc7235cbb5c5dbe60ef.zip |
Make intr_nesting_level per-process, rather than per-cpu. Setup
interrupt threads to run with it always >= 1, so that malloc can
detect M_WAITOK from "interrupt" context. This is also necessary
in order to context switch from sched_ithd() directly.
Reviewed By: peter
Notes
Notes:
svn path=/head/; revision=71337
Diffstat (limited to 'sys/i386/include')
-rw-r--r-- | sys/i386/include/cpu.h | 2 | ||||
-rw-r--r-- | sys/i386/include/globaldata.h | 2 | ||||
-rw-r--r-- | sys/i386/include/mptable.h | 4 | ||||
-rw-r--r-- | sys/i386/include/pcpu.h | 2 |
4 files changed, 4 insertions, 6 deletions
diff --git a/sys/i386/include/cpu.h b/sys/i386/include/cpu.h index 6c4162b339bc..87c47c5b871b 100644 --- a/sys/i386/include/cpu.h +++ b/sys/i386/include/cpu.h @@ -62,7 +62,7 @@ #define CLKF_USERMODE(framep) \ ((ISPL((framep)->cf_cs) == SEL_UPL) || (framep->cf_eflags & PSL_VM)) -#define CLKF_INTR(framep) (PCPU_GET(intr_nesting_level) >= 2) +#define CLKF_INTR(framep) (curproc->p_intr_nesting_level >= 2) #define CLKF_PC(framep) ((framep)->cf_eip) /* diff --git a/sys/i386/include/globaldata.h b/sys/i386/include/globaldata.h index 149026e450c7..7a7437a6e7ef 100644 --- a/sys/i386/include/globaldata.h +++ b/sys/i386/include/globaldata.h @@ -58,8 +58,6 @@ struct globaldata { struct timeval gd_switchtime; struct i386tss gd_common_tss; int gd_switchticks; - u_char gd_intr_nesting_level; - u_char gd_pad0[3]; struct segment_descriptor gd_common_tssd; struct segment_descriptor *gd_tss_gdt; int gd_currentldt; /* only used for USER_LDT */ diff --git a/sys/i386/include/mptable.h b/sys/i386/include/mptable.h index bf560cd07efa..966d3f897d52 100644 --- a/sys/i386/include/mptable.h +++ b/sys/i386/include/mptable.h @@ -581,10 +581,12 @@ mp_enable(u_int boot_addr) /* install an inter-CPU IPI for forcing an additional software trap */ setidt(XCPUAST_OFFSET, Xcpuast, SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); - + +#if 0 /* install an inter-CPU IPI for interrupt forwarding */ setidt(XFORWARD_IRQ_OFFSET, Xforward_irq, SDT_SYS386IGT, SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); +#endif /* install an inter-CPU IPI for CPU stop/restart */ setidt(XCPUSTOP_OFFSET, Xcpustop, diff --git a/sys/i386/include/pcpu.h b/sys/i386/include/pcpu.h index 149026e450c7..7a7437a6e7ef 100644 --- a/sys/i386/include/pcpu.h +++ b/sys/i386/include/pcpu.h @@ -58,8 +58,6 @@ struct globaldata { struct timeval gd_switchtime; struct i386tss gd_common_tss; int gd_switchticks; - u_char gd_intr_nesting_level; - u_char gd_pad0[3]; struct segment_descriptor gd_common_tssd; struct segment_descriptor *gd_tss_gdt; int gd_currentldt; /* only used for USER_LDT */ |