aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/cgroup.h1
-rw-r--r--include/linux/kprobes.h47
-rw-r--r--include/linux/sched.h1
-rw-r--r--include/linux/syscalls.h5
-rw-r--r--include/media/videobuf-dma-sg.h2
-rw-r--r--include/mtd/ubi-user.h132
6 files changed, 143 insertions, 45 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
index e267e62827bb..e4e8e117d27d 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -99,6 +99,7 @@ static inline bool css_tryget(struct cgroup_subsys_state *css)
99 while (!atomic_inc_not_zero(&css->refcnt)) { 99 while (!atomic_inc_not_zero(&css->refcnt)) {
100 if (test_bit(CSS_REMOVED, &css->flags)) 100 if (test_bit(CSS_REMOVED, &css->flags))
101 return false; 101 return false;
102 cpu_relax();
102 } 103 }
103 return true; 104 return true;
104} 105}
diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h
index d6ea19e314bb..32851eef48f0 100644
--- a/include/linux/kprobes.h
+++ b/include/linux/kprobes.h
@@ -49,6 +49,13 @@
49 49
50/* Attach to insert probes on any functions which should be ignored*/ 50/* Attach to insert probes on any functions which should be ignored*/
51#define __kprobes __attribute__((__section__(".kprobes.text"))) notrace 51#define __kprobes __attribute__((__section__(".kprobes.text"))) notrace
52#else /* CONFIG_KPROBES */
53typedef int kprobe_opcode_t;
54struct arch_specific_insn {
55 int dummy;
56};
57#define __kprobes notrace
58#endif /* CONFIG_KPROBES */
52 59
53struct kprobe; 60struct kprobe;
54struct pt_regs; 61struct pt_regs;
@@ -131,23 +138,6 @@ struct jprobe {
131/* For backward compatibility with old code using JPROBE_ENTRY() */ 138/* For backward compatibility with old code using JPROBE_ENTRY() */
132#define JPROBE_ENTRY(handler) (handler) 139#define JPROBE_ENTRY(handler) (handler)
133 140
134DECLARE_PER_CPU(struct kprobe *, current_kprobe);
135DECLARE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
136
137#ifdef CONFIG_KRETPROBES
138extern void arch_prepare_kretprobe(struct kretprobe_instance *ri,
139 struct pt_regs *regs);
140extern int arch_trampoline_kprobe(struct kprobe *p);
141#else /* CONFIG_KRETPROBES */
142static inline void arch_prepare_kretprobe(struct kretprobe *rp,
143 struct pt_regs *regs)
144{
145}
146static inline int arch_trampoline_kprobe(struct kprobe *p)
147{
148 return 0;
149}
150#endif /* CONFIG_KRETPROBES */
151/* 141/*
152 * Function-return probe - 142 * Function-return probe -
153 * Note: 143 * Note:
@@ -188,6 +178,25 @@ struct kprobe_blackpoint {
188 unsigned long range; 178 unsigned long range;
189}; 179};
190 180
181#ifdef CONFIG_KPROBES
182DECLARE_PER_CPU(struct kprobe *, current_kprobe);
183DECLARE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
184
185#ifdef CONFIG_KRETPROBES
186extern void arch_prepare_kretprobe(struct kretprobe_instance *ri,
187 struct pt_regs *regs);
188extern int arch_trampoline_kprobe(struct kprobe *p);
189#else /* CONFIG_KRETPROBES */
190static inline void arch_prepare_kretprobe(struct kretprobe *rp,
191 struct pt_regs *regs)
192{
193}
194static inline int arch_trampoline_kprobe(struct kprobe *p)
195{
196 return 0;
197}
198#endif /* CONFIG_KRETPROBES */
199
191extern struct kretprobe_blackpoint kretprobe_blacklist[]; 200extern struct kretprobe_blackpoint kretprobe_blacklist[];
192 201
193static inline void kretprobe_assert(struct kretprobe_instance *ri, 202static inline void kretprobe_assert(struct kretprobe_instance *ri,
@@ -264,10 +273,6 @@ void recycle_rp_inst(struct kretprobe_instance *ri, struct hlist_head *head);
264 273
265#else /* CONFIG_KPROBES */ 274#else /* CONFIG_KPROBES */
266 275
267#define __kprobes notrace
268struct jprobe;
269struct kretprobe;
270
271static inline struct kprobe *get_kprobe(void *addr) 276static inline struct kprobe *get_kprobe(void *addr)
272{ 277{
273 return NULL; 278 return NULL;
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 02e16d207304..5a7c76388731 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -630,7 +630,6 @@ struct user_struct {
630 atomic_t inotify_devs; /* How many inotify devs does this user have opened? */ 630 atomic_t inotify_devs; /* How many inotify devs does this user have opened? */
631#endif 631#endif
632#ifdef CONFIG_EPOLL 632#ifdef CONFIG_EPOLL
633 atomic_t epoll_devs; /* The number of epoll descriptors currently open */
634 atomic_t epoll_watches; /* The number of file descriptors currently watched */ 633 atomic_t epoll_watches; /* The number of file descriptors currently watched */
635#endif 634#endif
636#ifdef CONFIG_POSIX_MQUEUE 635#ifdef CONFIG_POSIX_MQUEUE
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index 16875f89e6a7..0eda02ff2414 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -108,9 +108,14 @@ struct old_linux_dirent;
108 asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \ 108 asm ("\t.globl " #alias "\n\t.set " #alias ", " #name "\n" \
109 "\t.globl ." #alias "\n\t.set ." #alias ", ." #name) 109 "\t.globl ." #alias "\n\t.set ." #alias ", ." #name)
110#else 110#else
111#ifdef CONFIG_ALPHA
112#define SYSCALL_ALIAS(alias, name) \
113 asm ( #alias " = " #name "\n\t.globl " #alias)
114#else
111#define SYSCALL_ALIAS(alias, name) \ 115#define SYSCALL_ALIAS(alias, name) \
112 asm ("\t.globl " #alias "\n\t.set " #alias ", " #name) 116 asm ("\t.globl " #alias "\n\t.set " #alias ", " #name)
113#endif 117#endif
118#endif
114 119
115#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS 120#ifdef CONFIG_HAVE_SYSCALL_WRAPPERS
116 121
diff --git a/include/media/videobuf-dma-sg.h b/include/media/videobuf-dma-sg.h
index 90edd22d343c..dda47f0082e9 100644
--- a/include/media/videobuf-dma-sg.h
+++ b/include/media/videobuf-dma-sg.h
@@ -49,7 +49,7 @@ struct scatterlist* videobuf_pages_to_sg(struct page **pages, int nr_pages,
49 * does memory allocation too using vmalloc_32(). 49 * does memory allocation too using vmalloc_32().
50 * 50 *
51 * videobuf_dma_*() 51 * videobuf_dma_*()
52 * see Documentation/DMA-mapping.txt, these functions to 52 * see Documentation/PCI/PCI-DMA-mapping.txt, these functions to
53 * basically the same. The map function does also build a 53 * basically the same. The map function does also build a
54 * scatterlist for the buffer (and unmap frees it ...) 54 * scatterlist for the buffer (and unmap frees it ...)
55 * 55 *
diff --git a/include/mtd/ubi-user.h b/include/mtd/ubi-user.h
index 2dc2eb2b8e22..296efae3525e 100644
--- a/include/mtd/ubi-user.h
+++ b/include/mtd/ubi-user.h
@@ -40,37 +40,37 @@
40 * UBI volume creation 40 * UBI volume creation
41 * ~~~~~~~~~~~~~~~~~~~ 41 * ~~~~~~~~~~~~~~~~~~~
42 * 42 *
43 * UBI volumes are created via the %UBI_IOCMKVOL IOCTL command of UBI character 43 * UBI volumes are created via the %UBI_IOCMKVOL ioctl command of UBI character
44 * device. A &struct ubi_mkvol_req object has to be properly filled and a 44 * device. A &struct ubi_mkvol_req object has to be properly filled and a
45 * pointer to it has to be passed to the IOCTL. 45 * pointer to it has to be passed to the ioctl.
46 * 46 *
47 * UBI volume deletion 47 * UBI volume deletion
48 * ~~~~~~~~~~~~~~~~~~~ 48 * ~~~~~~~~~~~~~~~~~~~
49 * 49 *
50 * To delete a volume, the %UBI_IOCRMVOL IOCTL command of the UBI character 50 * To delete a volume, the %UBI_IOCRMVOL ioctl command of the UBI character
51 * device should be used. A pointer to the 32-bit volume ID hast to be passed 51 * device should be used. A pointer to the 32-bit volume ID hast to be passed
52 * to the IOCTL. 52 * to the ioctl.
53 * 53 *
54 * UBI volume re-size 54 * UBI volume re-size
55 * ~~~~~~~~~~~~~~~~~~ 55 * ~~~~~~~~~~~~~~~~~~
56 * 56 *
57 * To re-size a volume, the %UBI_IOCRSVOL IOCTL command of the UBI character 57 * To re-size a volume, the %UBI_IOCRSVOL ioctl command of the UBI character
58 * device should be used. A &struct ubi_rsvol_req object has to be properly 58 * device should be used. A &struct ubi_rsvol_req object has to be properly
59 * filled and a pointer to it has to be passed to the IOCTL. 59 * filled and a pointer to it has to be passed to the ioctl.
60 * 60 *
61 * UBI volumes re-name 61 * UBI volumes re-name
62 * ~~~~~~~~~~~~~~~~~~~ 62 * ~~~~~~~~~~~~~~~~~~~
63 * 63 *
64 * To re-name several volumes atomically at one go, the %UBI_IOCRNVOL command 64 * To re-name several volumes atomically at one go, the %UBI_IOCRNVOL command
65 * of the UBI character device should be used. A &struct ubi_rnvol_req object 65 * of the UBI character device should be used. A &struct ubi_rnvol_req object
66 * has to be properly filled and a pointer to it has to be passed to the IOCTL. 66 * has to be properly filled and a pointer to it has to be passed to the ioctl.
67 * 67 *
68 * UBI volume update 68 * UBI volume update
69 * ~~~~~~~~~~~~~~~~~ 69 * ~~~~~~~~~~~~~~~~~
70 * 70 *
71 * Volume update should be done via the %UBI_IOCVOLUP IOCTL command of the 71 * Volume update should be done via the %UBI_IOCVOLUP ioctl command of the
72 * corresponding UBI volume character device. A pointer to a 64-bit update 72 * corresponding UBI volume character device. A pointer to a 64-bit update
73 * size should be passed to the IOCTL. After this, UBI expects user to write 73 * size should be passed to the ioctl. After this, UBI expects user to write
74 * this number of bytes to the volume character device. The update is finished 74 * this number of bytes to the volume character device. The update is finished
75 * when the claimed number of bytes is passed. So, the volume update sequence 75 * when the claimed number of bytes is passed. So, the volume update sequence
76 * is something like: 76 * is something like:
@@ -80,14 +80,58 @@
80 * write(fd, buf, image_size); 80 * write(fd, buf, image_size);
81 * close(fd); 81 * close(fd);
82 * 82 *
83 * Atomic eraseblock change 83 * Logical eraseblock erase
84 * ~~~~~~~~~~~~~~~~~~~~~~~~ 84 * ~~~~~~~~~~~~~~~~~~~~~~~~
85 * 85 *
86 * Atomic eraseblock change operation is done via the %UBI_IOCEBCH IOCTL 86 * To erase a logical eraseblock, the %UBI_IOCEBER ioctl command of the
87 * command of the corresponding UBI volume character device. A pointer to 87 * corresponding UBI volume character device should be used. This command
88 * &struct ubi_leb_change_req has to be passed to the IOCTL. Then the user is 88 * unmaps the requested logical eraseblock, makes sure the corresponding
89 * expected to write the requested amount of bytes. This is similar to the 89 * physical eraseblock is successfully erased, and returns.
90 * "volume update" IOCTL. 90 *
91 * Atomic logical eraseblock change
92 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
93 *
94 * Atomic logical eraseblock change operation is called using the %UBI_IOCEBCH
95 * ioctl command of the corresponding UBI volume character device. A pointer to
96 * a &struct ubi_leb_change_req object has to be passed to the ioctl. Then the
97 * user is expected to write the requested amount of bytes (similarly to what
98 * should be done in case of the "volume update" ioctl).
99 *
100 * Logical eraseblock map
101 * ~~~~~~~~~~~~~~~~~~~~~
102 *
103 * To map a logical eraseblock to a physical eraseblock, the %UBI_IOCEBMAP
104 * ioctl command should be used. A pointer to a &struct ubi_map_req object is
105 * expected to be passed. The ioctl maps the requested logical eraseblock to
106 * a physical eraseblock and returns. Only non-mapped logical eraseblocks can
107 * be mapped. If the logical eraseblock specified in the request is already
108 * mapped to a physical eraseblock, the ioctl fails and returns error.
109 *
110 * Logical eraseblock unmap
111 * ~~~~~~~~~~~~~~~~~~~~~~~~
112 *
113 * To unmap a logical eraseblock to a physical eraseblock, the %UBI_IOCEBUNMAP
114 * ioctl command should be used. The ioctl unmaps the logical eraseblocks,
115 * schedules corresponding physical eraseblock for erasure, and returns. Unlike
116 * the "LEB erase" command, it does not wait for the physical eraseblock being
117 * erased. Note, the side effect of this is that if an unclean reboot happens
118 * after the unmap ioctl returns, you may find the LEB mapped again to the same
119 * physical eraseblock after the UBI is run again.
120 *
121 * Check if logical eraseblock is mapped
122 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
123 *
124 * To check if a logical eraseblock is mapped to a physical eraseblock, the
125 * %UBI_IOCEBISMAP ioctl command should be used. It returns %0 if the LEB is
126 * not mapped, and %1 if it is mapped.
127 *
128 * Set an UBI volume property
129 * ~~~~~~~~~~~~~~~~~~~~~~~~~
130 *
131 * To set an UBI volume property the %UBI_IOCSETPROP ioctl command should be
132 * used. A pointer to a &struct ubi_set_prop_req object is expected to be
133 * passed. The object describes which property should be set, and to which value
134 * it should be set.
91 */ 135 */
92 136
93/* 137/*
@@ -101,7 +145,7 @@
101/* Maximum volume name length */ 145/* Maximum volume name length */
102#define UBI_MAX_VOLUME_NAME 127 146#define UBI_MAX_VOLUME_NAME 127
103 147
104/* IOCTL commands of UBI character devices */ 148/* ioctl commands of UBI character devices */
105 149
106#define UBI_IOC_MAGIC 'o' 150#define UBI_IOC_MAGIC 'o'
107 151
@@ -114,7 +158,7 @@
114/* Re-name volumes */ 158/* Re-name volumes */
115#define UBI_IOCRNVOL _IOW(UBI_IOC_MAGIC, 3, struct ubi_rnvol_req) 159#define UBI_IOCRNVOL _IOW(UBI_IOC_MAGIC, 3, struct ubi_rnvol_req)
116 160
117/* IOCTL commands of the UBI control character device */ 161/* ioctl commands of the UBI control character device */
118 162
119#define UBI_CTRL_IOC_MAGIC 'o' 163#define UBI_CTRL_IOC_MAGIC 'o'
120 164
@@ -123,16 +167,24 @@
123/* Detach an MTD device */ 167/* Detach an MTD device */
124#define UBI_IOCDET _IOW(UBI_CTRL_IOC_MAGIC, 65, int32_t) 168#define UBI_IOCDET _IOW(UBI_CTRL_IOC_MAGIC, 65, int32_t)
125 169
126/* IOCTL commands of UBI volume character devices */ 170/* ioctl commands of UBI volume character devices */
127 171
128#define UBI_VOL_IOC_MAGIC 'O' 172#define UBI_VOL_IOC_MAGIC 'O'
129 173
130/* Start UBI volume update */ 174/* Start UBI volume update */
131#define UBI_IOCVOLUP _IOW(UBI_VOL_IOC_MAGIC, 0, int64_t) 175#define UBI_IOCVOLUP _IOW(UBI_VOL_IOC_MAGIC, 0, int64_t)
132/* An eraseblock erasure command, used for debugging, disabled by default */ 176/* LEB erasure command, used for debugging, disabled by default */
133#define UBI_IOCEBER _IOW(UBI_VOL_IOC_MAGIC, 1, int32_t) 177#define UBI_IOCEBER _IOW(UBI_VOL_IOC_MAGIC, 1, int32_t)
134/* An atomic eraseblock change command */ 178/* Atomic LEB change command */
135#define UBI_IOCEBCH _IOW(UBI_VOL_IOC_MAGIC, 2, int32_t) 179#define UBI_IOCEBCH _IOW(UBI_VOL_IOC_MAGIC, 2, int32_t)
180/* Map LEB command */
181#define UBI_IOCEBMAP _IOW(UBI_VOL_IOC_MAGIC, 3, struct ubi_map_req)
182/* Unmap LEB command */
183#define UBI_IOCEBUNMAP _IOW(UBI_VOL_IOC_MAGIC, 4, int32_t)
184/* Check if LEB is mapped command */
185#define UBI_IOCEBISMAP _IOR(UBI_VOL_IOC_MAGIC, 5, int32_t)
186/* Set an UBI volume property */
187#define UBI_IOCSETPROP _IOW(UBI_VOL_IOC_MAGIC, 6, struct ubi_set_prop_req)
136 188
137/* Maximum MTD device name length supported by UBI */ 189/* Maximum MTD device name length supported by UBI */
138#define MAX_UBI_MTD_NAME_LEN 127 190#define MAX_UBI_MTD_NAME_LEN 127
@@ -168,6 +220,16 @@ enum {
168 UBI_STATIC_VOLUME = 4, 220 UBI_STATIC_VOLUME = 4,
169}; 221};
170 222
223/*
224 * UBI set property ioctl constants
225 *
226 * @UBI_PROP_DIRECT_WRITE: allow / disallow user to directly write and
227 * erase individual eraseblocks on dynamic volumes
228 */
229enum {
230 UBI_PROP_DIRECT_WRITE = 1,
231};
232
171/** 233/**
172 * struct ubi_attach_req - attach MTD device request. 234 * struct ubi_attach_req - attach MTD device request.
173 * @ubi_num: UBI device number to create 235 * @ubi_num: UBI device number to create
@@ -305,8 +367,8 @@ struct ubi_rnvol_req {
305} __attribute__ ((packed)); 367} __attribute__ ((packed));
306 368
307/** 369/**
308 * struct ubi_leb_change_req - a data structure used in atomic logical 370 * struct ubi_leb_change_req - a data structure used in atomic LEB change
309 * eraseblock change requests. 371 * requests.
310 * @lnum: logical eraseblock number to change 372 * @lnum: logical eraseblock number to change
311 * @bytes: how many bytes will be written to the logical eraseblock 373 * @bytes: how many bytes will be written to the logical eraseblock
312 * @dtype: data type (%UBI_LONGTERM, %UBI_SHORTTERM, %UBI_UNKNOWN) 374 * @dtype: data type (%UBI_LONGTERM, %UBI_SHORTTERM, %UBI_UNKNOWN)
@@ -319,4 +381,30 @@ struct ubi_leb_change_req {
319 int8_t padding[7]; 381 int8_t padding[7];
320} __attribute__ ((packed)); 382} __attribute__ ((packed));
321 383
384/**
385 * struct ubi_map_req - a data structure used in map LEB requests.
386 * @lnum: logical eraseblock number to unmap
387 * @dtype: data type (%UBI_LONGTERM, %UBI_SHORTTERM, %UBI_UNKNOWN)
388 * @padding: reserved for future, not used, has to be zeroed
389 */
390struct ubi_map_req {
391 int32_t lnum;
392 int8_t dtype;
393 int8_t padding[3];
394} __attribute__ ((packed));
395
396
397/**
398 * struct ubi_set_prop_req - a data structure used to set an ubi volume
399 * property.
400 * @property: property to set (%UBI_PROP_DIRECT_WRITE)
401 * @padding: reserved for future, not used, has to be zeroed
402 * @value: value to set
403 */
404struct ubi_set_prop_req {
405 uint8_t property;
406 uint8_t padding[7];
407 uint64_t value;
408} __attribute__ ((packed));
409
322#endif /* __UBI_USER_H__ */ 410#endif /* __UBI_USER_H__ */