source: svn/trunk/newcon3bcm2_21bu/toolchain/mipsel-linux-uclibc/include/linux/cpu.h @ 48

Last change on this file since 48 was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 2.3 KB
Line 
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
26struct cpu {
27        int node_id;            /* The node which contains the CPU */
28        int no_control;         /* Should the sysfs control file be created? */
29        struct sys_device sysdev;
30};
31
32extern int register_cpu(struct cpu *, int, struct node *);
33#ifdef CONFIG_HOTPLUG_CPU
34extern void unregister_cpu(struct cpu *, struct node *);
35#endif
36struct notifier_block;
37
38#ifdef CONFIG_SMP
39/* Need to know about CPUs going up/down? */
40extern int register_cpu_notifier(struct notifier_block *nb);
41extern void unregister_cpu_notifier(struct notifier_block *nb);
42
43int cpu_up(unsigned int cpu);
44
45#else
46
47static inline int register_cpu_notifier(struct notifier_block *nb)
48{
49        return 0;
50}
51static inline void unregister_cpu_notifier(struct notifier_block *nb)
52{
53}
54
55#endif /* CONFIG_SMP */
56extern struct sysdev_class cpu_sysdev_class;
57
58#ifdef CONFIG_HOTPLUG_CPU
59/* Stop CPUs going up and down. */
60extern struct semaphore cpucontrol;
61#define lock_cpu_hotplug()      down(&cpucontrol)
62#define unlock_cpu_hotplug()    up(&cpucontrol)
63#define lock_cpu_hotplug_interruptible() down_interruptible(&cpucontrol)
64#define hotcpu_notifier(fn, pri) {                              \
65        static struct notifier_block fn##_nb =                  \
66                { .notifier_call = fn, .priority = pri };       \
67        register_cpu_notifier(&fn##_nb);                        \
68}
69int cpu_down(unsigned int cpu);
70#define cpu_is_offline(cpu) unlikely(!cpu_online(cpu))
71#else
72#define lock_cpu_hotplug()      do { } while (0)
73#define unlock_cpu_hotplug()    do { } while (0)
74#define lock_cpu_hotplug_interruptible() 0
75#define hotcpu_notifier(fn, pri)
76
77/* CPUs don't go offline once they're online w/o CONFIG_HOTPLUG_CPU */
78static inline int cpu_is_offline(int cpu) { return 0; }
79#endif
80
81#endif /* _LINUX_CPU_H_ */
Note: See TracBrowser for help on using the repository browser.