aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-07-30 20:25:34 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-07-30 20:25:34 -0400
commit27c1ee3f929555b71fa39ec0d81a7e7185de1b16 (patch)
tree42e40bdfe4efac660d650658019391536ce67a42 /include
parent37cd9600a9e20359b0283983c9e3a55d84347168 (diff)
parent086ff4b3a7fb9cdf41e6a5d0ccd99b86d84633a1 (diff)
Merge branch 'akpm' (Andrew's patch-bomb)
Merge Andrew's first set of patches: "Non-MM patches: - lots of misc bits - tree-wide have_clk() cleanups - quite a lot of printk tweaks. I draw your attention to "printk: convert the format for KERN_<LEVEL> to a 2 byte pattern" which looks a bit scary. But afaict it's solid. - backlight updates - lib/ feature work (notably the addition and use of memweight()) - checkpatch updates - rtc updates - nilfs updates - fatfs updates (partial, still waiting for acks) - kdump, proc, fork, IPC, sysctl, taskstats, pps, etc - new fault-injection feature work" * Merge emailed patches from Andrew Morton <akpm@linux-foundation.org>: (128 commits) drivers/misc/lkdtm.c: fix missing allocation failure check lib/scatterlist: do not re-write gfp_flags in __sg_alloc_table() fault-injection: add tool to run command with failslab or fail_page_alloc fault-injection: add selftests for cpu and memory hotplug powerpc: pSeries reconfig notifier error injection module memory: memory notifier error injection module PM: PM notifier error injection module cpu: rewrite cpu-notifier-error-inject module fault-injection: notifier error injection c/r: fcntl: add F_GETOWNER_UIDS option resource: make sure requested range is included in the root range include/linux/aio.h: cpp->C conversions fs: cachefiles: add support for large files in filesystem caching pps: return PTR_ERR on error in device_create taskstats: check nla_reserve() return sysctl: suppress kmemleak messages ipc: use Kconfig options for __ARCH_WANT_[COMPAT_]IPC_PARSE_VERSION ipc: compat: use signed size_t types for msgsnd and msgrcv ipc: allow compat IPC version field parsing if !ARCH_WANT_OLD_COMPAT_IPC ipc: add COMPAT_SHMLBA support ...
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/fcntl.h4
-rw-r--r--include/linux/aio.h38
-rw-r--r--include/linux/clk.h168
-rw-r--r--include/linux/compat.h4
-rw-r--r--include/linux/kern_levels.h25
-rw-r--r--include/linux/nilfs2_fs.h63
-rw-r--r--include/linux/platform_data/lp855x.h (renamed from include/linux/lp855x.h)6
-rw-r--r--include/linux/platform_data/mv_usb.h9
-rw-r--r--include/linux/printk.h41
-rw-r--r--include/linux/sched.h13
-rw-r--r--include/linux/shm.h6
-rw-r--r--include/linux/string.h3
12 files changed, 243 insertions, 137 deletions
diff --git a/include/asm-generic/fcntl.h b/include/asm-generic/fcntl.h
index 9e5b0356e2bb..a48937d4a5ea 100644
--- a/include/asm-generic/fcntl.h
+++ b/include/asm-generic/fcntl.h
@@ -120,6 +120,10 @@
120#define F_GETOWN_EX 16 120#define F_GETOWN_EX 16
121#endif 121#endif
122 122
123#ifndef F_GETOWNER_UIDS
124#define F_GETOWNER_UIDS 17
125#endif
126
123#define F_OWNER_TID 0 127#define F_OWNER_TID 0
124#define F_OWNER_PID 1 128#define F_OWNER_PID 1
125#define F_OWNER_PGRP 2 129#define F_OWNER_PGRP 2
diff --git a/include/linux/aio.h b/include/linux/aio.h
index b1a520ec8b59..31ff6dba4872 100644
--- a/include/linux/aio.h
+++ b/include/linux/aio.h
@@ -126,22 +126,20 @@ struct kiocb {
126 struct eventfd_ctx *ki_eventfd; 126 struct eventfd_ctx *ki_eventfd;
127}; 127};
128 128
129#define is_sync_kiocb(iocb) ((iocb)->ki_key == KIOCB_SYNC_KEY) 129static inline bool is_sync_kiocb(struct kiocb *kiocb)
130#define init_sync_kiocb(x, filp) \ 130{
131 do { \ 131 return kiocb->ki_key == KIOCB_SYNC_KEY;
132 struct task_struct *tsk = current; \ 132}
133 (x)->ki_flags = 0; \ 133
134 (x)->ki_users = 1; \ 134static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
135 (x)->ki_key = KIOCB_SYNC_KEY; \ 135{
136 (x)->ki_filp = (filp); \ 136 *kiocb = (struct kiocb) {
137 (x)->ki_ctx = NULL; \ 137 .ki_users = 1,
138 (x)->ki_cancel = NULL; \ 138 .ki_key = KIOCB_SYNC_KEY,
139 (x)->ki_retry = NULL; \ 139 .ki_filp = filp,
140 (x)->ki_dtor = NULL; \ 140 .ki_obj.tsk = current,
141 (x)->ki_obj.tsk = tsk; \ 141 };
142 (x)->ki_user_data = 0; \ 142}
143 (x)->private = NULL; \
144 } while (0)
145 143
146#define AIO_RING_MAGIC 0xa10a10a1 144#define AIO_RING_MAGIC 0xa10a10a1
147#define AIO_RING_COMPAT_FEATURES 1 145#define AIO_RING_COMPAT_FEATURES 1
@@ -161,8 +159,6 @@ struct aio_ring {
161 struct io_event io_events[0]; 159 struct io_event io_events[0];
162}; /* 128 bytes + ring size */ 160}; /* 128 bytes + ring size */
163 161
164#define aio_ring_avail(info, ring) (((ring)->head + (info)->nr - 1 - (ring)->tail) % (info)->nr)
165
166#define AIO_RING_PAGES 8 162#define AIO_RING_PAGES 8
167struct aio_ring_info { 163struct aio_ring_info {
168 unsigned long mmap_base; 164 unsigned long mmap_base;
@@ -177,6 +173,12 @@ struct aio_ring_info {
177 struct page *internal_pages[AIO_RING_PAGES]; 173 struct page *internal_pages[AIO_RING_PAGES];
178}; 174};
179 175
176static inline unsigned aio_ring_avail(struct aio_ring_info *info,
177 struct aio_ring *ring)
178{
179 return (ring->head + info->nr - 1 - ring->tail) % info->nr;
180}
181
180struct kioctx { 182struct kioctx {
181 atomic_t users; 183 atomic_t users;
182 int dead; 184 int dead;
diff --git a/include/linux/clk.h b/include/linux/clk.h
index 2fd6a4234531..b3ac22d0fc1f 100644
--- a/include/linux/clk.h
+++ b/include/linux/clk.h
@@ -85,6 +85,43 @@ int clk_notifier_unregister(struct clk *clk, struct notifier_block *nb);
85#endif 85#endif
86 86
87/** 87/**
88 * clk_prepare - prepare a clock source
89 * @clk: clock source
90 *
91 * This prepares the clock source for use.
92 *
93 * Must not be called from within atomic context.
94 */
95#ifdef CONFIG_HAVE_CLK_PREPARE
96int clk_prepare(struct clk *clk);
97#else
98static inline int clk_prepare(struct clk *clk)
99{
100 might_sleep();
101 return 0;
102}
103#endif
104
105/**
106 * clk_unprepare - undo preparation of a clock source
107 * @clk: clock source
108 *
109 * This undoes a previously prepared clock. The caller must balance
110 * the number of prepare and unprepare calls.
111 *
112 * Must not be called from within atomic context.
113 */
114#ifdef CONFIG_HAVE_CLK_PREPARE
115void clk_unprepare(struct clk *clk);
116#else
117static inline void clk_unprepare(struct clk *clk)
118{
119 might_sleep();
120}
121#endif
122
123#ifdef CONFIG_HAVE_CLK
124/**
88 * clk_get - lookup and obtain a reference to a clock producer. 125 * clk_get - lookup and obtain a reference to a clock producer.
89 * @dev: device for clock "consumer" 126 * @dev: device for clock "consumer"
90 * @id: clock consumer ID 127 * @id: clock consumer ID
@@ -122,24 +159,6 @@ struct clk *clk_get(struct device *dev, const char *id);
122struct clk *devm_clk_get(struct device *dev, const char *id); 159struct clk *devm_clk_get(struct device *dev, const char *id);
123 160
124/** 161/**
125 * clk_prepare - prepare a clock source
126 * @clk: clock source
127 *
128 * This prepares the clock source for use.
129 *
130 * Must not be called from within atomic context.
131 */
132#ifdef CONFIG_HAVE_CLK_PREPARE
133int clk_prepare(struct clk *clk);
134#else
135static inline int clk_prepare(struct clk *clk)
136{
137 might_sleep();
138 return 0;
139}
140#endif
141
142/**
143 * clk_enable - inform the system when the clock source should be running. 162 * clk_enable - inform the system when the clock source should be running.
144 * @clk: clock source 163 * @clk: clock source
145 * 164 *
@@ -167,47 +186,6 @@ int clk_enable(struct clk *clk);
167 */ 186 */
168void clk_disable(struct clk *clk); 187void clk_disable(struct clk *clk);
169 188
170
171/**
172 * clk_unprepare - undo preparation of a clock source
173 * @clk: clock source
174 *
175 * This undoes a previously prepared clock. The caller must balance
176 * the number of prepare and unprepare calls.
177 *
178 * Must not be called from within atomic context.
179 */
180#ifdef CONFIG_HAVE_CLK_PREPARE
181void clk_unprepare(struct clk *clk);
182#else
183static inline void clk_unprepare(struct clk *clk)
184{
185 might_sleep();
186}
187#endif
188
189/* clk_prepare_enable helps cases using clk_enable in non-atomic context. */
190static inline int clk_prepare_enable(struct clk *clk)
191{
192 int ret;
193
194 ret = clk_prepare(clk);
195 if (ret)
196 return ret;
197 ret = clk_enable(clk);
198 if (ret)
199 clk_unprepare(clk);
200
201 return ret;
202}
203
204/* clk_disable_unprepare helps cases using clk_disable in non-atomic context. */
205static inline void clk_disable_unprepare(struct clk *clk)
206{
207 clk_disable(clk);
208 clk_unprepare(clk);
209}
210
211/** 189/**
212 * clk_get_rate - obtain the current clock rate (in Hz) for a clock source. 190 * clk_get_rate - obtain the current clock rate (in Hz) for a clock source.
213 * This is only valid once the clock source has been enabled. 191 * This is only valid once the clock source has been enabled.
@@ -298,6 +276,78 @@ struct clk *clk_get_parent(struct clk *clk);
298 */ 276 */
299struct clk *clk_get_sys(const char *dev_id, const char *con_id); 277struct clk *clk_get_sys(const char *dev_id, const char *con_id);
300 278
279#else /* !CONFIG_HAVE_CLK */
280
281static inline struct clk *clk_get(struct device *dev, const char *id)
282{
283 return NULL;
284}
285
286static inline struct clk *devm_clk_get(struct device *dev, const char *id)
287{
288 return NULL;
289}
290
291static inline void clk_put(struct clk *clk) {}
292
293static inline void devm_clk_put(struct device *dev, struct clk *clk) {}
294
295static inline int clk_enable(struct clk *clk)
296{
297 return 0;
298}
299
300static inline void clk_disable(struct clk *clk) {}
301
302static inline unsigned long clk_get_rate(struct clk *clk)
303{
304 return 0;
305}
306
307static inline int clk_set_rate(struct clk *clk, unsigned long rate)
308{
309 return 0;
310}
311
312static inline long clk_round_rate(struct clk *clk, unsigned long rate)
313{
314 return 0;
315}
316
317static inline int clk_set_parent(struct clk *clk, struct clk *parent)
318{
319 return 0;
320}
321
322static inline struct clk *clk_get_parent(struct clk *clk)
323{
324 return NULL;
325}
326
327#endif
328
329/* clk_prepare_enable helps cases using clk_enable in non-atomic context. */
330static inline int clk_prepare_enable(struct clk *clk)
331{
332 int ret;
333
334 ret = clk_prepare(clk);
335 if (ret)
336 return ret;
337 ret = clk_enable(clk);
338 if (ret)
339 clk_unprepare(clk);
340
341 return ret;
342}
343
344/* clk_disable_unprepare helps cases using clk_disable in non-atomic context. */
345static inline void clk_disable_unprepare(struct clk *clk)
346{
347 clk_disable(clk);
348 clk_unprepare(clk);
349}
350
301/** 351/**
302 * clk_add_alias - add a new clock alias 352 * clk_add_alias - add a new clock alias
303 * @alias: name for clock alias 353 * @alias: name for clock alias
diff --git a/include/linux/compat.h b/include/linux/compat.h
index 4e890394ef99..09b28b7369d7 100644
--- a/include/linux/compat.h
+++ b/include/linux/compat.h
@@ -265,9 +265,9 @@ long compat_sys_shmat(int first, int second, compat_uptr_t third, int version,
265#else 265#else
266long compat_sys_semctl(int semid, int semnum, int cmd, int arg); 266long compat_sys_semctl(int semid, int semnum, int cmd, int arg);
267long compat_sys_msgsnd(int msqid, struct compat_msgbuf __user *msgp, 267long compat_sys_msgsnd(int msqid, struct compat_msgbuf __user *msgp,
268 size_t msgsz, int msgflg); 268 compat_ssize_t msgsz, int msgflg);
269long compat_sys_msgrcv(int msqid, struct compat_msgbuf __user *msgp, 269long compat_sys_msgrcv(int msqid, struct compat_msgbuf __user *msgp,
270 size_t msgsz, long msgtyp, int msgflg); 270 compat_ssize_t msgsz, long msgtyp, int msgflg);
271long compat_sys_shmat(int shmid, compat_uptr_t shmaddr, int shmflg); 271long compat_sys_shmat(int shmid, compat_uptr_t shmaddr, int shmflg);
272#endif 272#endif
273long compat_sys_msgctl(int first, int second, void __user *uptr); 273long compat_sys_msgctl(int first, int second, void __user *uptr);
diff --git a/include/linux/kern_levels.h b/include/linux/kern_levels.h
new file mode 100644
index 000000000000..866caaa9e2bb
--- /dev/null
+++ b/include/linux/kern_levels.h
@@ -0,0 +1,25 @@
1#ifndef __KERN_LEVELS_H__
2#define __KERN_LEVELS_H__
3
4#define KERN_SOH "\001" /* ASCII Start Of Header */
5#define KERN_SOH_ASCII '\001'
6
7#define KERN_EMERG KERN_SOH "0" /* system is unusable */
8#define KERN_ALERT KERN_SOH "1" /* action must be taken immediately */
9#define KERN_CRIT KERN_SOH "2" /* critical conditions */
10#define KERN_ERR KERN_SOH "3" /* error conditions */
11#define KERN_WARNING KERN_SOH "4" /* warning conditions */
12#define KERN_NOTICE KERN_SOH "5" /* normal but significant condition */
13#define KERN_INFO KERN_SOH "6" /* informational */
14#define KERN_DEBUG KERN_SOH "7" /* debug-level messages */
15
16#define KERN_DEFAULT KERN_SOH "d" /* the default kernel loglevel */
17
18/*
19 * Annotation for a "continued" line of log printout (only done after a
20 * line that had no enclosing \n). Only to be used by core/arch code
21 * during early bootup (a continued line is not SMP-safe otherwise).
22 */
23#define KERN_CONT ""
24
25#endif
diff --git a/include/linux/nilfs2_fs.h b/include/linux/nilfs2_fs.h
index 89bd4a4dcfb4..98755767c7b0 100644
--- a/include/linux/nilfs2_fs.h
+++ b/include/linux/nilfs2_fs.h
@@ -293,7 +293,7 @@ struct nilfs_dir_entry {
293 __le64 inode; /* Inode number */ 293 __le64 inode; /* Inode number */
294 __le16 rec_len; /* Directory entry length */ 294 __le16 rec_len; /* Directory entry length */
295 __u8 name_len; /* Name length */ 295 __u8 name_len; /* Name length */
296 __u8 file_type; 296 __u8 file_type; /* Dir entry type (file, dir, etc) */
297 char name[NILFS_NAME_LEN]; /* File name */ 297 char name[NILFS_NAME_LEN]; /* File name */
298 char pad; 298 char pad;
299}; 299};
@@ -395,7 +395,7 @@ union nilfs_binfo {
395}; 395};
396 396
397/** 397/**
398 * struct nilfs_segment_summary - segment summary 398 * struct nilfs_segment_summary - segment summary header
399 * @ss_datasum: checksum of data 399 * @ss_datasum: checksum of data
400 * @ss_sumsum: checksum of segment summary 400 * @ss_sumsum: checksum of segment summary
401 * @ss_magic: magic number 401 * @ss_magic: magic number
@@ -683,9 +683,9 @@ struct nilfs_sufile_header {
683 683
684/** 684/**
685 * nilfs_suinfo - segment usage information 685 * nilfs_suinfo - segment usage information
686 * @sui_lastmod: 686 * @sui_lastmod: timestamp of last modification
687 * @sui_nblocks: 687 * @sui_nblocks: number of written blocks in segment
688 * @sui_flags: 688 * @sui_flags: segment usage flags
689 */ 689 */
690struct nilfs_suinfo { 690struct nilfs_suinfo {
691 __u64 sui_lastmod; 691 __u64 sui_lastmod;
@@ -716,9 +716,10 @@ enum {
716}; 716};
717 717
718/** 718/**
719 * struct nilfs_cpmode - 719 * struct nilfs_cpmode - change checkpoint mode structure
720 * @cc_cno: 720 * @cm_cno: checkpoint number
721 * @cc_mode: 721 * @cm_mode: mode of checkpoint
722 * @cm_pad: padding
722 */ 723 */
723struct nilfs_cpmode { 724struct nilfs_cpmode {
724 __u64 cm_cno; 725 __u64 cm_cno;
@@ -728,11 +729,11 @@ struct nilfs_cpmode {
728 729
729/** 730/**
730 * struct nilfs_argv - argument vector 731 * struct nilfs_argv - argument vector
731 * @v_base: 732 * @v_base: pointer on data array from userspace
732 * @v_nmembs: 733 * @v_nmembs: number of members in data array
733 * @v_size: 734 * @v_size: size of data array in bytes
734 * @v_flags: 735 * @v_flags: flags
735 * @v_index: 736 * @v_index: start number of target data items
736 */ 737 */
737struct nilfs_argv { 738struct nilfs_argv {
738 __u64 v_base; 739 __u64 v_base;
@@ -743,9 +744,9 @@ struct nilfs_argv {
743}; 744};
744 745
745/** 746/**
746 * struct nilfs_period - 747 * struct nilfs_period - period of checkpoint numbers
747 * @p_start: 748 * @p_start: start checkpoint number (inclusive)
748 * @p_end: 749 * @p_end: end checkpoint number (exclusive)
749 */ 750 */
750struct nilfs_period { 751struct nilfs_period {
751 __u64 p_start; 752 __u64 p_start;
@@ -753,7 +754,7 @@ struct nilfs_period {
753}; 754};
754 755
755/** 756/**
756 * struct nilfs_cpstat - 757 * struct nilfs_cpstat - checkpoint statistics
757 * @cs_cno: checkpoint number 758 * @cs_cno: checkpoint number
758 * @cs_ncps: number of checkpoints 759 * @cs_ncps: number of checkpoints
759 * @cs_nsss: number of snapshots 760 * @cs_nsss: number of snapshots
@@ -765,7 +766,7 @@ struct nilfs_cpstat {
765}; 766};
766 767
767/** 768/**
768 * struct nilfs_sustat - 769 * struct nilfs_sustat - segment usage statistics
769 * @ss_nsegs: number of segments 770 * @ss_nsegs: number of segments
770 * @ss_ncleansegs: number of clean segments 771 * @ss_ncleansegs: number of clean segments
771 * @ss_ndirtysegs: number of dirty segments 772 * @ss_ndirtysegs: number of dirty segments
@@ -784,10 +785,10 @@ struct nilfs_sustat {
784 785
785/** 786/**
786 * struct nilfs_vinfo - virtual block number information 787 * struct nilfs_vinfo - virtual block number information
787 * @vi_vblocknr: 788 * @vi_vblocknr: virtual block number
788 * @vi_start: 789 * @vi_start: start checkpoint number (inclusive)
789 * @vi_end: 790 * @vi_end: end checkpoint number (exclusive)
790 * @vi_blocknr: 791 * @vi_blocknr: disk block number
791 */ 792 */
792struct nilfs_vinfo { 793struct nilfs_vinfo {
793 __u64 vi_vblocknr; 794 __u64 vi_vblocknr;
@@ -797,7 +798,15 @@ struct nilfs_vinfo {
797}; 798};
798 799
799/** 800/**
800 * struct nilfs_vdesc - 801 * struct nilfs_vdesc - descriptor of virtual block number
802 * @vd_ino: inode number
803 * @vd_cno: checkpoint number
804 * @vd_vblocknr: virtual block number
805 * @vd_period: period of checkpoint numbers
806 * @vd_blocknr: disk block number
807 * @vd_offset: logical block offset inside a file
808 * @vd_flags: flags (data or node block)
809 * @vd_pad: padding
801 */ 810 */
802struct nilfs_vdesc { 811struct nilfs_vdesc {
803 __u64 vd_ino; 812 __u64 vd_ino;
@@ -811,7 +820,13 @@ struct nilfs_vdesc {
811}; 820};
812 821
813/** 822/**
814 * struct nilfs_bdesc - 823 * struct nilfs_bdesc - descriptor of disk block number
824 * @bd_ino: inode number
825 * @bd_oblocknr: disk block address (for skipping dead blocks)
826 * @bd_blocknr: disk block address
827 * @bd_offset: logical block offset inside a file
828 * @bd_level: level in the b-tree organization
829 * @bd_pad: padding
815 */ 830 */
816struct nilfs_bdesc { 831struct nilfs_bdesc {
817 __u64 bd_ino; 832 __u64 bd_ino;
diff --git a/include/linux/lp855x.h b/include/linux/platform_data/lp855x.h
index 781a490a451b..cc76f1f18f18 100644
--- a/include/linux/lp855x.h
+++ b/include/linux/platform_data/lp855x.h
@@ -47,12 +47,6 @@
47 (LP8556_I2C_ONLY << BRT_MODE_SHFT)) 47 (LP8556_I2C_ONLY << BRT_MODE_SHFT))
48#define LP8556_COMB2_CONFIG (LP8556_COMBINED2 << BRT_MODE_SHFT) 48#define LP8556_COMB2_CONFIG (LP8556_COMBINED2 << BRT_MODE_SHFT)
49 49
50/* ROM area boundary */
51#define EEPROM_START (0xA0)
52#define EEPROM_END (0xA7)
53#define EPROM_START (0xA0)
54#define EPROM_END (0xAF)
55
56enum lp855x_chip_id { 50enum lp855x_chip_id {
57 LP8550, 51 LP8550,
58 LP8551, 52 LP8551,
diff --git a/include/linux/platform_data/mv_usb.h b/include/linux/platform_data/mv_usb.h
index d94804aca764..944b01dd103e 100644
--- a/include/linux/platform_data/mv_usb.h
+++ b/include/linux/platform_data/mv_usb.h
@@ -52,13 +52,4 @@ struct mv_usb_platform_data {
52 int (*set_vbus)(unsigned int vbus); 52 int (*set_vbus)(unsigned int vbus);
53 int (*private_init)(void __iomem *opregs, void __iomem *phyregs); 53 int (*private_init)(void __iomem *opregs, void __iomem *phyregs);
54}; 54};
55
56#ifndef CONFIG_HAVE_CLK
57/* Dummy stub for clk framework */
58#define clk_get(dev, id) NULL
59#define clk_put(clock) do {} while (0)
60#define clk_enable(clock) do {} while (0)
61#define clk_disable(clock) do {} while (0)
62#endif
63
64#endif 55#endif
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 1bec2f7a2d42..9afc01e5a0a6 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -2,27 +2,34 @@
2#define __KERNEL_PRINTK__ 2#define __KERNEL_PRINTK__
3 3
4#include <linux/init.h> 4#include <linux/init.h>
5#include <linux/kern_levels.h>
5 6
6extern const char linux_banner[]; 7extern const char linux_banner[];
7extern const char linux_proc_banner[]; 8extern const char linux_proc_banner[];
8 9
9#define KERN_EMERG "<0>" /* system is unusable */ 10static inline int printk_get_level(const char *buffer)
10#define KERN_ALERT "<1>" /* action must be taken immediately */ 11{
11#define KERN_CRIT "<2>" /* critical conditions */ 12 if (buffer[0] == KERN_SOH_ASCII && buffer[1]) {
12#define KERN_ERR "<3>" /* error conditions */ 13 switch (buffer[1]) {
13#define KERN_WARNING "<4>" /* warning conditions */ 14 case '0' ... '7':
14#define KERN_NOTICE "<5>" /* normal but significant condition */ 15 case 'd': /* KERN_DEFAULT */
15#define KERN_INFO "<6>" /* informational */ 16 return buffer[1];
16#define KERN_DEBUG "<7>" /* debug-level messages */ 17 }
17 18 }
18/* Use the default kernel loglevel */ 19 return 0;
19#define KERN_DEFAULT "<d>" 20}
20/* 21
21 * Annotation for a "continued" line of log printout (only done after a 22static inline const char *printk_skip_level(const char *buffer)
22 * line that had no enclosing \n). Only to be used by core/arch code 23{
23 * during early bootup (a continued line is not SMP-safe otherwise). 24 if (printk_get_level(buffer)) {
24 */ 25 switch (buffer[1]) {
25#define KERN_CONT "<c>" 26 case '0' ... '7':
27 case 'd': /* KERN_DEFAULT */
28 return buffer + 2;
29 }
30 }
31 return buffer;
32}
26 33
27extern int console_printk[]; 34extern int console_printk[];
28 35
diff --git a/include/linux/sched.h b/include/linux/sched.h
index a721cef7e2d4..68dcffaa62a0 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -334,6 +334,14 @@ static inline void lockup_detector_init(void)
334} 334}
335#endif 335#endif
336 336
337#if defined(CONFIG_LOCKUP_DETECTOR) && defined(CONFIG_SUSPEND)
338void lockup_detector_bootcpu_resume(void);
339#else
340static inline void lockup_detector_bootcpu_resume(void)
341{
342}
343#endif
344
337#ifdef CONFIG_DETECT_HUNG_TASK 345#ifdef CONFIG_DETECT_HUNG_TASK
338extern unsigned int sysctl_hung_task_panic; 346extern unsigned int sysctl_hung_task_panic;
339extern unsigned long sysctl_hung_task_check_count; 347extern unsigned long sysctl_hung_task_check_count;
@@ -406,6 +414,11 @@ static inline void arch_pick_mmap_layout(struct mm_struct *mm) {}
406extern void set_dumpable(struct mm_struct *mm, int value); 414extern void set_dumpable(struct mm_struct *mm, int value);
407extern int get_dumpable(struct mm_struct *mm); 415extern int get_dumpable(struct mm_struct *mm);
408 416
417/* get/set_dumpable() values */
418#define SUID_DUMPABLE_DISABLED 0
419#define SUID_DUMPABLE_ENABLED 1
420#define SUID_DUMPABLE_SAFE 2
421
409/* mm flags */ 422/* mm flags */
410/* dumpable bits */ 423/* dumpable bits */
411#define MMF_DUMPABLE 0 /* core dump is permitted */ 424#define MMF_DUMPABLE 0 /* core dump is permitted */
diff --git a/include/linux/shm.h b/include/linux/shm.h
index 92808b86703b..edd086883ccb 100644
--- a/include/linux/shm.h
+++ b/include/linux/shm.h
@@ -107,12 +107,14 @@ struct shmid_kernel /* private to the kernel */
107#define SHM_NORESERVE 010000 /* don't check for reservations */ 107#define SHM_NORESERVE 010000 /* don't check for reservations */
108 108
109#ifdef CONFIG_SYSVIPC 109#ifdef CONFIG_SYSVIPC
110long do_shmat(int shmid, char __user *shmaddr, int shmflg, unsigned long *addr); 110long do_shmat(int shmid, char __user *shmaddr, int shmflg, unsigned long *addr,
111 unsigned long shmlba);
111extern int is_file_shm_hugepages(struct file *file); 112extern int is_file_shm_hugepages(struct file *file);
112extern void exit_shm(struct task_struct *task); 113extern void exit_shm(struct task_struct *task);
113#else 114#else
114static inline long do_shmat(int shmid, char __user *shmaddr, 115static inline long do_shmat(int shmid, char __user *shmaddr,
115 int shmflg, unsigned long *addr) 116 int shmflg, unsigned long *addr,
117 unsigned long shmlba)
116{ 118{
117 return -ENOSYS; 119 return -ENOSYS;
118} 120}
diff --git a/include/linux/string.h b/include/linux/string.h
index e033564f10ba..ffe0442e18d2 100644
--- a/include/linux/string.h
+++ b/include/linux/string.h
@@ -145,4 +145,7 @@ static inline bool strstarts(const char *str, const char *prefix)
145 return strncmp(str, prefix, strlen(prefix)) == 0; 145 return strncmp(str, prefix, strlen(prefix)) == 0;
146} 146}
147#endif 147#endif
148
149extern size_t memweight(const void *ptr, size_t bytes);
150
148#endif /* _LINUX_STRING_H_ */ 151#endif /* _LINUX_STRING_H_ */