OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [memory.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * include/linux/memory.h - generic memory definition
3
 *
4
 * This is mainly for topological representation. We define the
5
 * basic "struct memory_block" here, which can be embedded in per-arch
6
 * definitions or NUMA information.
7
 *
8
 * Basic handling of the devices is done in drivers/base/memory.c
9
 * and system devices are handled in drivers/base/sys.c.
10
 *
11
 * Memory block are exported via sysfs in the class/memory/devices/
12
 * directory.
13
 *
14
 */
15
#ifndef _LINUX_MEMORY_H_
16
#define _LINUX_MEMORY_H_
17
 
18
#include <linux/sysdev.h>
19
#include <linux/node.h>
20
#include <linux/compiler.h>
21
 
22
#include <asm/semaphore.h>
23
 
24
struct memory_block {
25
        unsigned long phys_index;
26
        unsigned long state;
27
        /*
28
         * This serializes all state change requests.  It isn't
29
         * held during creation because the control files are
30
         * created long after the critical areas during
31
         * initialization.
32
         */
33
        struct semaphore state_sem;
34
        int phys_device;                /* to which fru does this belong? */
35
        void *hw;                       /* optional pointer to fw/hw data */
36
        int (*phys_callback)(struct memory_block *);
37
        struct sys_device sysdev;
38
};
39
 
40
/* These states are exposed to userspace as text strings in sysfs */
41
#define MEM_ONLINE              (1<<0) /* exposed to userspace */
42
#define MEM_GOING_OFFLINE       (1<<1) /* exposed to userspace */
43
#define MEM_OFFLINE             (1<<2) /* exposed to userspace */
44
#define MEM_GOING_ONLINE        (1<<3)
45
#define MEM_CANCEL_ONLINE       (1<<4)
46
#define MEM_CANCEL_OFFLINE      (1<<5)
47
 
48
struct memory_notify {
49
        unsigned long start_pfn;
50
        unsigned long nr_pages;
51
        int status_change_nid;
52
};
53
 
54
struct notifier_block;
55
struct mem_section;
56
 
57
#ifndef CONFIG_MEMORY_HOTPLUG_SPARSE
58
static inline int memory_dev_init(void)
59
{
60
        return 0;
61
}
62
static inline int register_memory_notifier(struct notifier_block *nb)
63
{
64
        return 0;
65
}
66
static inline void unregister_memory_notifier(struct notifier_block *nb)
67
{
68
}
69
static inline int memory_notify(unsigned long val, void *v)
70
{
71
        return 0;
72
}
73
#else
74
extern int register_memory_notifier(struct notifier_block *nb);
75
extern void unregister_memory_notifier(struct notifier_block *nb);
76
extern int register_new_memory(struct mem_section *);
77
extern int unregister_memory_section(struct mem_section *);
78
extern int memory_dev_init(void);
79
extern int remove_memory_block(unsigned long, struct mem_section *, int);
80
extern int memory_notify(unsigned long val, void *v);
81
#define CONFIG_MEM_BLOCK_SIZE   (PAGES_PER_SECTION<<PAGE_SHIFT)
82
 
83
 
84
#endif /* CONFIG_MEMORY_HOTPLUG_SPARSE */
85
 
86
#ifdef CONFIG_MEMORY_HOTPLUG
87
#define hotplug_memory_notifier(fn, pri) {                      \
88
        static struct notifier_block fn##_mem_nb =              \
89
                { .notifier_call = fn, .priority = pri };       \
90
        register_memory_notifier(&fn##_mem_nb);                 \
91
}
92
#else
93
#define hotplug_memory_notifier(fn, pri) do { } while (0)
94
#endif
95
 
96
#endif /* _LINUX_MEMORY_H_ */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.