xref: /illumos-gate/usr/src/uts/intel/sys/smt.h (revision 0cc97882c52f30e61739644e480f5f9f980b1621)
1 /*
2  * This file and its contents are supplied under the terms of the
3  * Common Development and Distribution License ("CDDL"), version 1.0.
4  * You may only use this file in accordance with the terms of version
5  * 1.0 of the CDDL.
6  *
7  * A full copy of the text of the CDDL should have accompanied this
8  * source.  A copy of the CDDL is also available via the Internet at
9  * http://www.illumos.org/license/CDDL.
10  */
11 
12 /*
13  * Copyright 2019 Joyent, Inc.
14  */
15 
16 #ifndef	_SYS_SMT_H
17 #define	_SYS_SMT_H
18 
19 #include <sys/types.h>
20 #include <sys/thread.h>
21 
22 #ifdef	__cplusplus
23 extern "C" {
24 #endif
25 
26 struct cpu;
27 
28 extern int smt_boot_disable;
29 
30 extern void smt_init(void);
31 extern void smt_late_init(void);
32 extern int smt_disable(void);
33 extern boolean_t smt_can_enable(struct cpu *, int);
34 extern void smt_force_enabled(void);
35 
36 extern void smt_intr_alloc_pil(uint_t);
37 
38 extern int smt_acquire(void);
39 extern void smt_release(void);
40 extern void smt_mark(void);
41 extern void smt_begin_unsafe(void);
42 extern void smt_end_unsafe(void);
43 extern void smt_begin_intr(uint_t);
44 extern void smt_end_intr(void);
45 extern void smt_mark_as_vcpu(void);
46 
47 extern boolean_t smt_should_run(kthread_t *, struct cpu *);
48 extern pri_t smt_adjust_cpu_score(kthread_t *, struct cpu *, pri_t);
49 
50 #ifdef	__cplusplus
51 }
52 #endif
53 
54 #endif	/* _SYS_SMT_H */
55