Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 1
/*
2
 * include/linux/cpu.h - generic cpu definition
3
 *
4
 * This is mainly for topological representation. We define the
5
 * basic 'struct cpu' here, which can be embedded in per-arch
6
 * definitions of processors.
7
 *
8
 * Basic handling of the devices is done in drivers/base/cpu.c
9
 * and system devices are handled in drivers/base/sys.c.
10
 *
11
 * CPUs are exported via driverfs in the class/cpu/devices/
12
 * directory.
13
 *
14
 * Per-cpu interfaces can be implemented using a struct device_interface.
15
 * See the following for how to do this:
16
 * - drivers/base/intf.c
17
 * - Documentation/driver-model/interface.txt
18
 */
19
#ifndef _LINUX_CPU_H_
20
#define _LINUX_CPU_H_
21
 
22
#include <linux/sysdev.h>
23
#include <linux/node.h>
24
#include <asm/semaphore.h>
25
 
26
struct cpu {
27
        int node_id;            /* The node which contains the CPU */
28
        struct sys_device sysdev;
29
};
30
 
31
extern int register_cpu(struct cpu *, int, struct node *);
32
struct notifier_block;
33
 
34
#ifdef CONFIG_SMP
35
/* Need to know about CPUs going up/down? */
36
extern int register_cpu_notifier(struct notifier_block *nb);
37
extern void unregister_cpu_notifier(struct notifier_block *nb);
38
 
39
int cpu_up(unsigned int cpu);
40
#else
41
static inline int register_cpu_notifier(struct notifier_block *nb)
42
{
43
        return 0;
44
}
45
static inline void unregister_cpu_notifier(struct notifier_block *nb)
46
{
47
}
48
#endif /* CONFIG_SMP */
49
extern struct sysdev_class cpu_sysdev_class;
50
 
51
/* Stop CPUs going up and down. */
52
extern struct semaphore cpucontrol;
53
#endif /* _LINUX_CPU_H_ */