summaryrefslogtreecommitdiffstats
path: root/sys/ia64/include/smp.h
blob: 65c85ef15a0a52b747778d8f34ccc0a75bc9f073 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
 * $FreeBSD$
 */
#ifndef _MACHINE_SMP_H_
#define _MACHINE_SMP_H_

#ifdef _KERNEL

#include <machine/mutex.h>
#include <machine/ipl.h>
#include <sys/ktr.h>

#ifndef LOCORE

#define BETTER_CLOCK		/* unconditional on ia64 */

/* global data in mp_machdep.c */
extern volatile u_int		checkstate_probed_cpus;
extern volatile u_int		checkstate_need_ast;
extern volatile u_int		resched_cpus;
extern void (*cpustop_restartfunc) __P((void));

extern int			smp_active;
extern int			mp_ncpus;
extern u_int			all_cpus;
extern u_int			started_cpus;
extern u_int			stopped_cpus;

/* functions in mp_machdep.c */
void	mp_start(void);
void	mp_announce(void);
void	smp_invltlb(void);
void	forward_statclock(int pscnt);
void	forward_hardclock(int pscnt);
void	forward_signal(struct proc *);
void	forward_roundrobin(void);
int	stop_cpus(u_int);
int	restart_cpus(u_int);
void	smp_rendezvous_action(void);
void	smp_rendezvous(void (*)(void *), 
		       void (*)(void *),
		       void (*)(void *),
		       void *arg);
void	smp_init_secondary(void);

#endif /* !LOCORE */
#endif /* _KERNEL */
#endif
OpenPOWER on IntegriCloud