smp.h revision 66458
166458Sdfr/*
266458Sdfr * $FreeBSD: head/sys/ia64/include/smp.h 66458 2000-09-29 13:46:07Z dfr $
366458Sdfr */
466458Sdfr#ifndef _MACHINE_SMP_H_
566458Sdfr#define _MACHINE_SMP_H_
666458Sdfr
766458Sdfr#ifdef _KERNEL
866458Sdfr
966458Sdfr#include <machine/mutex.h>
1066458Sdfr#include <machine/ipl.h>
1166458Sdfr#include <sys/ktr.h>
1266458Sdfr
1366458Sdfr#ifndef LOCORE
1466458Sdfr
1566458Sdfr#define BETTER_CLOCK		/* unconditional on ia64 */
1666458Sdfr
1766458Sdfr/* global data in mp_machdep.c */
1866458Sdfrextern volatile u_int		checkstate_probed_cpus;
1966458Sdfrextern volatile u_int		checkstate_need_ast;
2066458Sdfrextern volatile u_int		resched_cpus;
2166458Sdfrextern void (*cpustop_restartfunc) __P((void));
2266458Sdfr
2366458Sdfrextern int			smp_active;
2466458Sdfrextern int			mp_ncpus;
2566458Sdfrextern u_int			all_cpus;
2666458Sdfrextern u_int			started_cpus;
2766458Sdfrextern u_int			stopped_cpus;
2866458Sdfr
2966458Sdfr/* functions in mp_machdep.c */
3066458Sdfrvoid	mp_start(void);
3166458Sdfrvoid	mp_announce(void);
3266458Sdfrvoid	smp_invltlb(void);
3366458Sdfrvoid	forward_statclock(int pscnt);
3466458Sdfrvoid	forward_hardclock(int pscnt);
3566458Sdfrvoid	forward_signal(struct proc *);
3666458Sdfrvoid	forward_roundrobin(void);
3766458Sdfrint	stop_cpus(u_int);
3866458Sdfrint	restart_cpus(u_int);
3966458Sdfrvoid	smp_rendezvous_action(void);
4066458Sdfrvoid	smp_rendezvous(void (*)(void *),
4166458Sdfr		       void (*)(void *),
4266458Sdfr		       void (*)(void *),
4366458Sdfr		       void *arg);
4466458Sdfrvoid	smp_init_secondary(void);
4566458Sdfr
4666458Sdfr#endif /* !LOCORE */
4766458Sdfr#endif /* _KERNEL */
4866458Sdfr#endif
49