Preperation for moving cpl into critical region access.

Several new fine-grained locks.
Control of new FAST_INTR() methods.
This commit is contained in:
Steve Passe 1997-08-20 05:22:33 +00:00
parent 77625cfe0b
commit 5996461961
4 changed files with 37 additions and 23 deletions

View File

@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
* $Id: smp.h,v 1.25 1997/08/15 02:34:32 fsmp Exp $
* $Id: smp.h,v 1.26 1997/08/18 03:35:59 fsmp Exp $
*
*/
@ -59,6 +59,7 @@ void bootMP __P((void));
/* global data in mplock.s */
extern u_int mp_lock;
extern u_int isr_lock;
/* functions in mplock.s */
void get_mplock __P((void));
@ -74,7 +75,10 @@ extern volatile u_int started_cpus;
extern u_int vec[];
extern u_int Xintr8254;
extern u_int mask8254;
extern volatile struct simplelock imen_lock;
extern struct simplelock imen_lock;
extern struct simplelock cpl_lock;
extern struct simplelock fast_intr_lock;
extern struct simplelock intr_lock;
/* functions in apic_ipl.s */
void vec8254 __P((void));
@ -109,6 +113,8 @@ extern u_int all_cpus;
extern u_int SMP_prvpt[];
extern u_char SMP_ioapic[];
extern struct simplelock com_lock;
/* functions in mp_machdep.c */
u_int mp_bootaddress __P((u_int));
int mp_probe __P((void));

View File

@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
* $Id: smp.h,v 1.25 1997/08/15 02:34:32 fsmp Exp $
* $Id: smp.h,v 1.26 1997/08/18 03:35:59 fsmp Exp $
*
*/
@ -59,6 +59,7 @@ void bootMP __P((void));
/* global data in mplock.s */
extern u_int mp_lock;
extern u_int isr_lock;
/* functions in mplock.s */
void get_mplock __P((void));
@ -74,7 +75,10 @@ extern volatile u_int started_cpus;
extern u_int vec[];
extern u_int Xintr8254;
extern u_int mask8254;
extern volatile struct simplelock imen_lock;
extern struct simplelock imen_lock;
extern struct simplelock cpl_lock;
extern struct simplelock fast_intr_lock;
extern struct simplelock intr_lock;
/* functions in apic_ipl.s */
void vec8254 __P((void));
@ -109,6 +113,8 @@ extern u_int all_cpus;
extern u_int SMP_prvpt[];
extern u_char SMP_ioapic[];
extern struct simplelock com_lock;
/* functions in mp_machdep.c */
u_int mp_bootaddress __P((u_int));
int mp_probe __P((void));

View File

@ -22,7 +22,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: smptests.h,v 1.20 1997/08/04 17:20:39 smp Exp smp $
* $Id: smptests.h,v 1.19 1997/08/04 17:31:28 fsmp Exp $
*/
#ifndef _MACHINE_SMPTESTS_H_
@ -34,6 +34,18 @@
*/
/*
* Ignore the ipending bits when exiting FAST_INTR() routines.
*/
#define FAST_WITHOUTCPL
/*
* Use a simplelock to serialize FAST_INTR()s.
*/
#define FAST_SIMPLELOCK
/*
* Use the new INT passoff algorithm:
*
@ -45,22 +57,6 @@
* do_eoi();
* cleanup_and_iret();
* }
*
* This algorithm seems to speed up kernel compiles a little,
* my previous times were about 100s - 101s.
* Also of note is the "point of diminishing returns" for the '-j'
* arg to make seems to have increased from 8 to 12, AND the numbers
* don't fall off as rapidly as before.
*
* 98.17s real 129.24s user 50.82s system # time make -j8
* 98.67s real 128.44s user 52.55s system # time make -j10
* 97.70s real 128.54s user 51.86s system # time make -j12
* 98.57s real 130.14s user 50.46s system # time make -j14
* 99.12s real 130.04s user 51.82s system # time make -j16
* 97.75s real 129.91s user 51.62s system # time make -j18
* 100.51s real 132.67s user 50.91s system # time make -j20
*
* Note: currently broken for INTerrupting ISA cards, including onboard IDE.
*/
#define PEND_INTS

View File

@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
* $Id: smp.h,v 1.25 1997/08/15 02:34:32 fsmp Exp $
* $Id: smp.h,v 1.26 1997/08/18 03:35:59 fsmp Exp $
*
*/
@ -59,6 +59,7 @@ void bootMP __P((void));
/* global data in mplock.s */
extern u_int mp_lock;
extern u_int isr_lock;
/* functions in mplock.s */
void get_mplock __P((void));
@ -74,7 +75,10 @@ extern volatile u_int started_cpus;
extern u_int vec[];
extern u_int Xintr8254;
extern u_int mask8254;
extern volatile struct simplelock imen_lock;
extern struct simplelock imen_lock;
extern struct simplelock cpl_lock;
extern struct simplelock fast_intr_lock;
extern struct simplelock intr_lock;
/* functions in apic_ipl.s */
void vec8254 __P((void));
@ -109,6 +113,8 @@ extern u_int all_cpus;
extern u_int SMP_prvpt[];
extern u_char SMP_ioapic[];
extern struct simplelock com_lock;
/* functions in mp_machdep.c */
u_int mp_bootaddress __P((u_int));
int mp_probe __P((void));