Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/include/xen/cpu.h
Line
Count
Source (jump to first uncovered line)
1
#ifndef __XEN_CPU_H__
2
#define __XEN_CPU_H__
3
4
#include <xen/types.h>
5
#include <xen/spinlock.h>
6
#include <xen/notifier.h>
7
8
/* Safely access cpu_online_map, cpu_present_map, etc. */
9
bool_t get_cpu_maps(void);
10
void put_cpu_maps(void);
11
12
/* Safely perform CPU hotplug and update cpu_online_map, etc. */
13
bool_t cpu_hotplug_begin(void);
14
void cpu_hotplug_done(void);
15
16
/* Receive notification of CPU hotplug events. */
17
void register_cpu_notifier(struct notifier_block *nb);
18
19
/*
20
 * Possible event sequences for a given CPU:
21
 *  CPU_UP_PREPARE -> CPU_UP_CANCELLED           -- failed CPU up
22
 *  CPU_UP_PREPARE -> CPU_STARTING -> CPU_ONLINE -- successful CPU up
23
 *  CPU_DOWN_PREPARE -> CPU_DOWN_FAILED          -- failed CPU down
24
 *  CPU_DOWN_PREPARE -> CPU_DYING -> CPU_DEAD    -- successful CPU down
25
 * 
26
 * Hence note that only CPU_*_PREPARE handlers are allowed to fail. Also note
27
 * that once CPU_DYING is delivered, an offline action can no longer fail.
28
 * 
29
 * Notifiers are called highest-priority-first when:
30
 *  (a) A CPU is coming up; or (b) CPU_DOWN_FAILED
31
 * Notifiers are called lowest-priority-first when:
32
 *  (a) A CPU is going down; or (b) CPU_UP_CANCELED
33
 */
34
/* CPU_UP_PREPARE: Preparing to bring CPU online. */
35
166
#define CPU_UP_PREPARE   (0x0001 | NOTIFY_FORWARD)
36
/* CPU_UP_CANCELED: CPU is no longer being brought online. */
37
0
#define CPU_UP_CANCELED  (0x0002 | NOTIFY_REVERSE)
38
/* CPU_STARTING: CPU nearly online. Runs on new CPU, irqs still disabled. */
39
22
#define CPU_STARTING     (0x0003 | NOTIFY_FORWARD)
40
/* CPU_ONLINE: CPU is up. */
41
48
#define CPU_ONLINE       (0x0004 | NOTIFY_FORWARD)
42
/* CPU_DOWN_PREPARE: CPU is going down. */
43
0
#define CPU_DOWN_PREPARE (0x0005 | NOTIFY_REVERSE)
44
/* CPU_DOWN_FAILED: CPU is no longer going down. */
45
23
#define CPU_DOWN_FAILED  (0x0006 | NOTIFY_FORWARD)
46
/* CPU_DYING: CPU is nearly dead (in stop_machine context). */
47
0
#define CPU_DYING        (0x0007 | NOTIFY_REVERSE)
48
/* CPU_DEAD: CPU is dead. */
49
0
#define CPU_DEAD         (0x0008 | NOTIFY_REVERSE)
50
51
/* Perform CPU hotplug. May return -EAGAIN. */
52
int cpu_down(unsigned int cpu);
53
int cpu_up(unsigned int cpu);
54
55
/* From arch code, send CPU_STARTING notification. */
56
void notify_cpu_starting(unsigned int cpu);
57
58
/* Power management. */
59
int disable_nonboot_cpus(void);
60
void enable_nonboot_cpus(void);
61
62
/* Private arch-dependent helpers for CPU hotplug. */
63
int __cpu_up(unsigned int cpunum);
64
void __cpu_disable(void);
65
void __cpu_die(unsigned int cpu);
66
67
#endif /* __XEN_CPU_H__ */