diff options
author | msmith <msmith@FreeBSD.org> | 1999-07-20 06:52:35 +0000 |
---|---|---|
committer | msmith <msmith@FreeBSD.org> | 1999-07-20 06:52:35 +0000 |
commit | 84c939ef118a545b74e42d1ab9013ea9ba8b1b3f (patch) | |
tree | f285b114a76c38187b7d9910bdede9788d00ae9e /sys/i386/isa/intr_machdep.h | |
parent | 905bcc118433dc6747bf9091a2bae04370334c34 (diff) | |
download | FreeBSD-src-84c939ef118a545b74e42d1ab9013ea9ba8b1b3f.zip FreeBSD-src-84c939ef118a545b74e42d1ab9013ea9ba8b1b3f.tar.gz |
Implement an all-CPU shootdown-style rendezvous facility. This allows
the caller to specify a function to be guarded between an entry and exit
barrier, as well as pre- and post-barrier functions.
The primary use for this function is synchronised update of per-cpu private
data. The implementation is almost (but not quite) MI; with a better
mechanism for masking per-CPU interrupts it could probably be hoisted.
Reviewed by: peter (partially)
Diffstat (limited to 'sys/i386/isa/intr_machdep.h')
-rw-r--r-- | sys/i386/isa/intr_machdep.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/i386/isa/intr_machdep.h b/sys/i386/isa/intr_machdep.h index 675714d..06593cf 100644 --- a/sys/i386/isa/intr_machdep.h +++ b/sys/i386/isa/intr_machdep.h @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: intr_machdep.h,v 1.14 1999/04/21 07:26:27 peter Exp $ + * $Id: intr_machdep.h,v 1.15 1999/06/03 20:41:00 peter Exp $ */ #ifndef _I386_ISA_INTR_MACHDEP_H_ @@ -112,6 +112,9 @@ #define XCPUCHECKSTATE_OFFSET (ICU_OFFSET + 113) #endif +/* inter-CPU rendezvous */ +#define XRENDEZVOUS_OFFSET (ICU_OFFSET + 114) + /* IPI to generate an additional software trap at the target CPU */ #define XCPUAST_OFFSET (ICU_OFFSET + 48) @@ -178,7 +181,8 @@ inthand_t Xcpuast, /* Additional software trap on other cpu */ Xforward_irq, /* Forward irq to cpu holding ISR lock */ Xcpustop, /* CPU stops & waits for another CPU to restart it */ - Xspuriousint; /* handle APIC "spurious INTs" */ + Xspuriousint, /* handle APIC "spurious INTs" */ + Xrendezvous; /* handle CPU rendezvous */ #ifdef TEST_TEST1 inthand_t |