diff options
Diffstat (limited to 'include/linux')
51 files changed, 330 insertions, 101 deletions
diff --git a/include/linux/acct.h b/include/linux/acct.h index 882dc7248766..3e4737fa6cce 100644 --- a/include/linux/acct.h +++ b/include/linux/acct.h | |||
| @@ -121,16 +121,15 @@ struct vfsmount; | |||
| 121 | struct super_block; | 121 | struct super_block; |
| 122 | struct pacct_struct; | 122 | struct pacct_struct; |
| 123 | struct pid_namespace; | 123 | struct pid_namespace; |
| 124 | extern int acct_parm[]; /* for sysctl */ | ||
| 124 | extern void acct_auto_close_mnt(struct vfsmount *m); | 125 | extern void acct_auto_close_mnt(struct vfsmount *m); |
| 125 | extern void acct_auto_close(struct super_block *sb); | 126 | extern void acct_auto_close(struct super_block *sb); |
| 126 | extern void acct_init_pacct(struct pacct_struct *pacct); | ||
| 127 | extern void acct_collect(long exitcode, int group_dead); | 127 | extern void acct_collect(long exitcode, int group_dead); |
| 128 | extern void acct_process(void); | 128 | extern void acct_process(void); |
| 129 | extern void acct_exit_ns(struct pid_namespace *); | 129 | extern void acct_exit_ns(struct pid_namespace *); |
| 130 | #else | 130 | #else |
| 131 | #define acct_auto_close_mnt(x) do { } while (0) | 131 | #define acct_auto_close_mnt(x) do { } while (0) |
| 132 | #define acct_auto_close(x) do { } while (0) | 132 | #define acct_auto_close(x) do { } while (0) |
| 133 | #define acct_init_pacct(x) do { } while (0) | ||
| 134 | #define acct_collect(x,y) do { } while (0) | 133 | #define acct_collect(x,y) do { } while (0) |
| 135 | #define acct_process() do { } while (0) | 134 | #define acct_process() do { } while (0) |
| 136 | #define acct_exit_ns(ns) do { } while (0) | 135 | #define acct_exit_ns(ns) do { } while (0) |
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index c9bbcb2a75ae..b8ad1ea99586 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
| @@ -37,16 +37,24 @@ extern void cgroup_post_fork(struct task_struct *p); | |||
| 37 | extern void cgroup_exit(struct task_struct *p, int run_callbacks); | 37 | extern void cgroup_exit(struct task_struct *p, int run_callbacks); |
| 38 | extern int cgroupstats_build(struct cgroupstats *stats, | 38 | extern int cgroupstats_build(struct cgroupstats *stats, |
| 39 | struct dentry *dentry); | 39 | struct dentry *dentry); |
| 40 | extern int cgroup_load_subsys(struct cgroup_subsys *ss); | ||
| 41 | extern void cgroup_unload_subsys(struct cgroup_subsys *ss); | ||
| 40 | 42 | ||
| 41 | extern const struct file_operations proc_cgroup_operations; | 43 | extern const struct file_operations proc_cgroup_operations; |
| 42 | 44 | ||
| 43 | /* Define the enumeration of all cgroup subsystems */ | 45 | /* Define the enumeration of all builtin cgroup subsystems */ |
| 44 | #define SUBSYS(_x) _x ## _subsys_id, | 46 | #define SUBSYS(_x) _x ## _subsys_id, |
| 45 | enum cgroup_subsys_id { | 47 | enum cgroup_subsys_id { |
| 46 | #include <linux/cgroup_subsys.h> | 48 | #include <linux/cgroup_subsys.h> |
| 47 | CGROUP_SUBSYS_COUNT | 49 | CGROUP_BUILTIN_SUBSYS_COUNT |
| 48 | }; | 50 | }; |
| 49 | #undef SUBSYS | 51 | #undef SUBSYS |
| 52 | /* | ||
| 53 | * This define indicates the maximum number of subsystems that can be loaded | ||
| 54 | * at once. We limit to this many since cgroupfs_root has subsys_bits to keep | ||
| 55 | * track of all of them. | ||
| 56 | */ | ||
| 57 | #define CGROUP_SUBSYS_COUNT (BITS_PER_BYTE*sizeof(unsigned long)) | ||
| 50 | 58 | ||
| 51 | /* Per-subsystem/per-cgroup state maintained by the system. */ | 59 | /* Per-subsystem/per-cgroup state maintained by the system. */ |
| 52 | struct cgroup_subsys_state { | 60 | struct cgroup_subsys_state { |
| @@ -76,6 +84,12 @@ enum { | |||
| 76 | CSS_REMOVED, /* This CSS is dead */ | 84 | CSS_REMOVED, /* This CSS is dead */ |
| 77 | }; | 85 | }; |
| 78 | 86 | ||
| 87 | /* Caller must verify that the css is not for root cgroup */ | ||
| 88 | static inline void __css_get(struct cgroup_subsys_state *css, int count) | ||
| 89 | { | ||
| 90 | atomic_add(count, &css->refcnt); | ||
| 91 | } | ||
| 92 | |||
| 79 | /* | 93 | /* |
| 80 | * Call css_get() to hold a reference on the css; it can be used | 94 | * Call css_get() to hold a reference on the css; it can be used |
| 81 | * for a reference obtained via: | 95 | * for a reference obtained via: |
| @@ -87,7 +101,7 @@ static inline void css_get(struct cgroup_subsys_state *css) | |||
| 87 | { | 101 | { |
| 88 | /* We don't need to reference count the root state */ | 102 | /* We don't need to reference count the root state */ |
| 89 | if (!test_bit(CSS_ROOT, &css->flags)) | 103 | if (!test_bit(CSS_ROOT, &css->flags)) |
| 90 | atomic_inc(&css->refcnt); | 104 | __css_get(css, 1); |
| 91 | } | 105 | } |
| 92 | 106 | ||
| 93 | static inline bool css_is_removed(struct cgroup_subsys_state *css) | 107 | static inline bool css_is_removed(struct cgroup_subsys_state *css) |
| @@ -118,11 +132,11 @@ static inline bool css_tryget(struct cgroup_subsys_state *css) | |||
| 118 | * css_get() or css_tryget() | 132 | * css_get() or css_tryget() |
| 119 | */ | 133 | */ |
| 120 | 134 | ||
| 121 | extern void __css_put(struct cgroup_subsys_state *css); | 135 | extern void __css_put(struct cgroup_subsys_state *css, int count); |
| 122 | static inline void css_put(struct cgroup_subsys_state *css) | 136 | static inline void css_put(struct cgroup_subsys_state *css) |
| 123 | { | 137 | { |
| 124 | if (!test_bit(CSS_ROOT, &css->flags)) | 138 | if (!test_bit(CSS_ROOT, &css->flags)) |
| 125 | __css_put(css); | 139 | __css_put(css, 1); |
| 126 | } | 140 | } |
| 127 | 141 | ||
| 128 | /* bits in struct cgroup flags field */ | 142 | /* bits in struct cgroup flags field */ |
| @@ -221,6 +235,10 @@ struct cgroup { | |||
| 221 | 235 | ||
| 222 | /* For RCU-protected deletion */ | 236 | /* For RCU-protected deletion */ |
| 223 | struct rcu_head rcu_head; | 237 | struct rcu_head rcu_head; |
| 238 | |||
| 239 | /* List of events which userspace want to recieve */ | ||
| 240 | struct list_head event_list; | ||
| 241 | spinlock_t event_list_lock; | ||
| 224 | }; | 242 | }; |
| 225 | 243 | ||
| 226 | /* | 244 | /* |
| @@ -258,7 +276,8 @@ struct css_set { | |||
| 258 | /* | 276 | /* |
| 259 | * Set of subsystem states, one for each subsystem. This array | 277 | * Set of subsystem states, one for each subsystem. This array |
| 260 | * is immutable after creation apart from the init_css_set | 278 | * is immutable after creation apart from the init_css_set |
| 261 | * during subsystem registration (at boot time). | 279 | * during subsystem registration (at boot time) and modular subsystem |
| 280 | * loading/unloading. | ||
| 262 | */ | 281 | */ |
| 263 | struct cgroup_subsys_state *subsys[CGROUP_SUBSYS_COUNT]; | 282 | struct cgroup_subsys_state *subsys[CGROUP_SUBSYS_COUNT]; |
| 264 | 283 | ||
| @@ -363,6 +382,23 @@ struct cftype { | |||
| 363 | int (*trigger)(struct cgroup *cgrp, unsigned int event); | 382 | int (*trigger)(struct cgroup *cgrp, unsigned int event); |
| 364 | 383 | ||
| 365 | int (*release)(struct inode *inode, struct file *file); | 384 | int (*release)(struct inode *inode, struct file *file); |
| 385 | |||
| 386 | /* | ||
| 387 | * register_event() callback will be used to add new userspace | ||
| 388 | * waiter for changes related to the cftype. Implement it if | ||
| 389 | * you want to provide this functionality. Use eventfd_signal() | ||
| 390 | * on eventfd to send notification to userspace. | ||
| 391 | */ | ||
| 392 | int (*register_event)(struct cgroup *cgrp, struct cftype *cft, | ||
| 393 | struct eventfd_ctx *eventfd, const char *args); | ||
| 394 | /* | ||
| 395 | * unregister_event() callback will be called when userspace | ||
| 396 | * closes the eventfd or on cgroup removing. | ||
| 397 | * This callback must be implemented, if you want provide | ||
| 398 | * notification functionality. | ||
| 399 | */ | ||
| 400 | int (*unregister_event)(struct cgroup *cgrp, struct cftype *cft, | ||
| 401 | struct eventfd_ctx *eventfd); | ||
| 366 | }; | 402 | }; |
| 367 | 403 | ||
| 368 | struct cgroup_scanner { | 404 | struct cgroup_scanner { |
| @@ -428,6 +464,8 @@ struct cgroup_subsys { | |||
| 428 | void (*destroy)(struct cgroup_subsys *ss, struct cgroup *cgrp); | 464 | void (*destroy)(struct cgroup_subsys *ss, struct cgroup *cgrp); |
| 429 | int (*can_attach)(struct cgroup_subsys *ss, struct cgroup *cgrp, | 465 | int (*can_attach)(struct cgroup_subsys *ss, struct cgroup *cgrp, |
| 430 | struct task_struct *tsk, bool threadgroup); | 466 | struct task_struct *tsk, bool threadgroup); |
| 467 | void (*cancel_attach)(struct cgroup_subsys *ss, struct cgroup *cgrp, | ||
| 468 | struct task_struct *tsk, bool threadgroup); | ||
| 431 | void (*attach)(struct cgroup_subsys *ss, struct cgroup *cgrp, | 469 | void (*attach)(struct cgroup_subsys *ss, struct cgroup *cgrp, |
| 432 | struct cgroup *old_cgrp, struct task_struct *tsk, | 470 | struct cgroup *old_cgrp, struct task_struct *tsk, |
| 433 | bool threadgroup); | 471 | bool threadgroup); |
| @@ -472,6 +510,9 @@ struct cgroup_subsys { | |||
| 472 | /* used when use_id == true */ | 510 | /* used when use_id == true */ |
| 473 | struct idr idr; | 511 | struct idr idr; |
| 474 | spinlock_t id_lock; | 512 | spinlock_t id_lock; |
| 513 | |||
| 514 | /* should be defined only by modular subsystems */ | ||
| 515 | struct module *module; | ||
| 475 | }; | 516 | }; |
| 476 | 517 | ||
| 477 | #define SUBSYS(_x) extern struct cgroup_subsys _x ## _subsys; | 518 | #define SUBSYS(_x) extern struct cgroup_subsys _x ## _subsys; |
diff --git a/include/linux/compat.h b/include/linux/compat.h index ef68119a4fd2..717c691ecd8e 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | typedef __compat_uid32_t compat_uid_t; | 23 | typedef __compat_uid32_t compat_uid_t; |
| 24 | typedef __compat_gid32_t compat_gid_t; | 24 | typedef __compat_gid32_t compat_gid_t; |
| 25 | 25 | ||
| 26 | struct compat_sel_arg_struct; | ||
| 26 | struct rusage; | 27 | struct rusage; |
| 27 | 28 | ||
| 28 | struct compat_itimerspec { | 29 | struct compat_itimerspec { |
| @@ -249,6 +250,8 @@ asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp, | |||
| 249 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, | 250 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, |
| 250 | struct compat_timeval __user *tvp); | 251 | struct compat_timeval __user *tvp); |
| 251 | 252 | ||
| 253 | asmlinkage long compat_sys_old_select(struct compat_sel_arg_struct __user *arg); | ||
| 254 | |||
| 252 | asmlinkage long compat_sys_wait4(compat_pid_t pid, | 255 | asmlinkage long compat_sys_wait4(compat_pid_t pid, |
| 253 | compat_uint_t __user *stat_addr, int options, | 256 | compat_uint_t __user *stat_addr, int options, |
| 254 | struct compat_rusage __user *ru); | 257 | struct compat_rusage __user *ru); |
diff --git a/include/linux/coredump.h b/include/linux/coredump.h index b3c91d7cede4..8ba66a9d9022 100644 --- a/include/linux/coredump.h +++ b/include/linux/coredump.h | |||
| @@ -16,6 +16,8 @@ static inline int dump_write(struct file *file, const void *addr, int nr) | |||
| 16 | 16 | ||
| 17 | static inline int dump_seek(struct file *file, loff_t off) | 17 | static inline int dump_seek(struct file *file, loff_t off) |
| 18 | { | 18 | { |
| 19 | int ret = 1; | ||
| 20 | |||
| 19 | if (file->f_op->llseek && file->f_op->llseek != no_llseek) { | 21 | if (file->f_op->llseek && file->f_op->llseek != no_llseek) { |
| 20 | if (file->f_op->llseek(file, off, SEEK_CUR) < 0) | 22 | if (file->f_op->llseek(file, off, SEEK_CUR) < 0) |
| 21 | return 0; | 23 | return 0; |
| @@ -29,13 +31,15 @@ static inline int dump_seek(struct file *file, loff_t off) | |||
| 29 | 31 | ||
| 30 | if (n > PAGE_SIZE) | 32 | if (n > PAGE_SIZE) |
| 31 | n = PAGE_SIZE; | 33 | n = PAGE_SIZE; |
| 32 | if (!dump_write(file, buf, n)) | 34 | if (!dump_write(file, buf, n)) { |
| 33 | return 0; | 35 | ret = 0; |
| 36 | break; | ||
| 37 | } | ||
| 34 | off -= n; | 38 | off -= n; |
| 35 | } | 39 | } |
| 36 | free_page((unsigned long)buf); | 40 | free_page((unsigned long)buf); |
| 37 | } | 41 | } |
| 38 | return 1; | 42 | return ret; |
| 39 | } | 43 | } |
| 40 | 44 | ||
| 41 | #endif /* _LINUX_COREDUMP_H */ | 45 | #endif /* _LINUX_COREDUMP_H */ |
diff --git a/include/linux/cred.h b/include/linux/cred.h index 4db09f89b637..52507c3e1387 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h | |||
| @@ -280,7 +280,7 @@ static inline void put_cred(const struct cred *_cred) | |||
| 280 | * task or by holding tasklist_lock to prevent it from being unlinked. | 280 | * task or by holding tasklist_lock to prevent it from being unlinked. |
| 281 | */ | 281 | */ |
| 282 | #define __task_cred(task) \ | 282 | #define __task_cred(task) \ |
| 283 | ((const struct cred *)(rcu_dereference_check((task)->real_cred, rcu_read_lock_held() || lockdep_is_held(&tasklist_lock)))) | 283 | ((const struct cred *)(rcu_dereference_check((task)->real_cred, rcu_read_lock_held() || lockdep_tasklist_lock_is_held()))) |
| 284 | 284 | ||
| 285 | /** | 285 | /** |
| 286 | * get_task_cred - Get another task's objective credentials | 286 | * get_task_cred - Get another task's objective credentials |
diff --git a/include/linux/decompress/mm.h b/include/linux/decompress/mm.h index 5032b9a31ae7..ad5ec1d0475e 100644 --- a/include/linux/decompress/mm.h +++ b/include/linux/decompress/mm.h | |||
| @@ -14,11 +14,21 @@ | |||
| 14 | 14 | ||
| 15 | /* Code active when included from pre-boot environment: */ | 15 | /* Code active when included from pre-boot environment: */ |
| 16 | 16 | ||
| 17 | /* | ||
| 18 | * Some architectures want to ensure there is no local data in their | ||
| 19 | * pre-boot environment, so that data can arbitarily relocated (via | ||
| 20 | * GOT references). This is achieved by defining STATIC_RW_DATA to | ||
| 21 | * be null. | ||
| 22 | */ | ||
| 23 | #ifndef STATIC_RW_DATA | ||
| 24 | #define STATIC_RW_DATA static | ||
| 25 | #endif | ||
| 26 | |||
| 17 | /* A trivial malloc implementation, adapted from | 27 | /* A trivial malloc implementation, adapted from |
| 18 | * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994 | 28 | * malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994 |
| 19 | */ | 29 | */ |
| 20 | static unsigned long malloc_ptr; | 30 | STATIC_RW_DATA unsigned long malloc_ptr; |
| 21 | static int malloc_count; | 31 | STATIC_RW_DATA int malloc_count; |
| 22 | 32 | ||
| 23 | static void *malloc(int size) | 33 | static void *malloc(int size) |
| 24 | { | 34 | { |
diff --git a/include/linux/dm9000.h b/include/linux/dm9000.h index c30879cf93bc..96e87693d933 100644 --- a/include/linux/dm9000.h +++ b/include/linux/dm9000.h | |||
| @@ -23,7 +23,7 @@ | |||
| 23 | #define DM9000_PLATF_NO_EEPROM (0x0010) | 23 | #define DM9000_PLATF_NO_EEPROM (0x0010) |
| 24 | #define DM9000_PLATF_SIMPLE_PHY (0x0020) /* Use NSR to find LinkStatus */ | 24 | #define DM9000_PLATF_SIMPLE_PHY (0x0020) /* Use NSR to find LinkStatus */ |
| 25 | 25 | ||
| 26 | /* platfrom data for platfrom device structure's platfrom_data field */ | 26 | /* platform data for platform device structure's platform_data field */ |
| 27 | 27 | ||
| 28 | struct dm9000_plat_data { | 28 | struct dm9000_plat_data { |
| 29 | unsigned int flags; | 29 | unsigned int flags; |
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 91b761846061..ca32ed78b057 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h | |||
| @@ -127,6 +127,14 @@ static inline u64 dma_get_mask(struct device *dev) | |||
| 127 | return DMA_BIT_MASK(32); | 127 | return DMA_BIT_MASK(32); |
| 128 | } | 128 | } |
| 129 | 129 | ||
| 130 | static inline int dma_set_coherent_mask(struct device *dev, u64 mask) | ||
| 131 | { | ||
| 132 | if (!dma_supported(dev, mask)) | ||
| 133 | return -EIO; | ||
| 134 | dev->coherent_dma_mask = mask; | ||
| 135 | return 0; | ||
| 136 | } | ||
| 137 | |||
| 130 | extern u64 dma_get_required_mask(struct device *dev); | 138 | extern u64 dma_get_required_mask(struct device *dev); |
| 131 | 139 | ||
| 132 | static inline unsigned int dma_get_max_seg_size(struct device *dev) | 140 | static inline unsigned int dma_get_max_seg_size(struct device *dev) |
| @@ -232,4 +240,20 @@ struct dma_attrs; | |||
| 232 | 240 | ||
| 233 | #endif /* CONFIG_HAVE_DMA_ATTRS */ | 241 | #endif /* CONFIG_HAVE_DMA_ATTRS */ |
| 234 | 242 | ||
| 243 | #ifdef CONFIG_NEED_DMA_MAP_STATE | ||
| 244 | #define DEFINE_DMA_UNMAP_ADDR(ADDR_NAME) dma_addr_t ADDR_NAME | ||
| 245 | #define DEFINE_DMA_UNMAP_LEN(LEN_NAME) __u32 LEN_NAME | ||
| 246 | #define dma_unmap_addr(PTR, ADDR_NAME) ((PTR)->ADDR_NAME) | ||
| 247 | #define dma_unmap_addr_set(PTR, ADDR_NAME, VAL) (((PTR)->ADDR_NAME) = (VAL)) | ||
| 248 | #define dma_unmap_len(PTR, LEN_NAME) ((PTR)->LEN_NAME) | ||
| 249 | #define dma_unmap_len_set(PTR, LEN_NAME, VAL) (((PTR)->LEN_NAME) = (VAL)) | ||
| 250 | #else | ||
| 251 | #define DEFINE_DMA_UNMAP_ADDR(ADDR_NAME) | ||
| 252 | #define DEFINE_DMA_UNMAP_LEN(LEN_NAME) | ||
| 253 | #define dma_unmap_addr(PTR, ADDR_NAME) (0) | ||
| 254 | #define dma_unmap_addr_set(PTR, ADDR_NAME, VAL) do { } while (0) | ||
| 255 | #define dma_unmap_len(PTR, LEN_NAME) (0) | ||
| 256 | #define dma_unmap_len_set(PTR, LEN_NAME, VAL) do { } while (0) | ||
| 257 | #endif | ||
| 258 | |||
| 235 | #endif | 259 | #endif |
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index cca1c3de140d..b33f316bb92e 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h | |||
| @@ -61,6 +61,13 @@ struct ethtool_drvinfo { | |||
| 61 | /* For PCI devices, use pci_name(pci_dev). */ | 61 | /* For PCI devices, use pci_name(pci_dev). */ |
| 62 | char reserved1[32]; | 62 | char reserved1[32]; |
| 63 | char reserved2[12]; | 63 | char reserved2[12]; |
| 64 | /* | ||
| 65 | * Some struct members below are filled in | ||
| 66 | * using ops->get_sset_count(). Obtaining | ||
| 67 | * this info from ethtool_drvinfo is now | ||
| 68 | * deprecated; Use ETHTOOL_GSSET_INFO | ||
| 69 | * instead. | ||
| 70 | */ | ||
| 64 | __u32 n_priv_flags; /* number of flags valid in ETHTOOL_GPFLAGS */ | 71 | __u32 n_priv_flags; /* number of flags valid in ETHTOOL_GPFLAGS */ |
| 65 | __u32 n_stats; /* number of u64's from ETHTOOL_GSTATS */ | 72 | __u32 n_stats; /* number of u64's from ETHTOOL_GSTATS */ |
| 66 | __u32 testinfo_len; | 73 | __u32 testinfo_len; |
| @@ -253,6 +260,17 @@ struct ethtool_gstrings { | |||
| 253 | __u8 data[0]; | 260 | __u8 data[0]; |
| 254 | }; | 261 | }; |
| 255 | 262 | ||
| 263 | struct ethtool_sset_info { | ||
| 264 | __u32 cmd; /* ETHTOOL_GSSET_INFO */ | ||
| 265 | __u32 reserved; | ||
| 266 | __u64 sset_mask; /* input: each bit selects an sset to query */ | ||
| 267 | /* output: each bit a returned sset */ | ||
| 268 | __u32 data[0]; /* ETH_SS_xxx count, in order, based on bits | ||
| 269 | in sset_mask. One bit implies one | ||
| 270 | __u32, two bits implies two | ||
| 271 | __u32's, etc. */ | ||
| 272 | }; | ||
| 273 | |||
| 256 | enum ethtool_test_flags { | 274 | enum ethtool_test_flags { |
| 257 | ETH_TEST_FL_OFFLINE = (1 << 0), /* online / offline */ | 275 | ETH_TEST_FL_OFFLINE = (1 << 0), /* online / offline */ |
| 258 | ETH_TEST_FL_FAILED = (1 << 1), /* test passed / failed */ | 276 | ETH_TEST_FL_FAILED = (1 << 1), /* test passed / failed */ |
| @@ -606,9 +624,9 @@ struct ethtool_ops { | |||
| 606 | #define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */ | 624 | #define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */ |
| 607 | #define ETHTOOL_FLASHDEV 0x00000033 /* Flash firmware to device */ | 625 | #define ETHTOOL_FLASHDEV 0x00000033 /* Flash firmware to device */ |
| 608 | #define ETHTOOL_RESET 0x00000034 /* Reset hardware */ | 626 | #define ETHTOOL_RESET 0x00000034 /* Reset hardware */ |
| 609 | 627 | #define ETHTOOL_SRXNTUPLE 0x00000035 /* Add an n-tuple filter to device */ | |
| 610 | #define ETHTOOL_SRXNTUPLE 0x00000035 /* Add an n-tuple filter to device */ | 628 | #define ETHTOOL_GRXNTUPLE 0x00000036 /* Get n-tuple filters from device */ |
| 611 | #define ETHTOOL_GRXNTUPLE 0x00000036 /* Get n-tuple filters from device */ | 629 | #define ETHTOOL_GSSET_INFO 0x00000037 /* Get string set info */ |
| 612 | 630 | ||
| 613 | /* compatibility with older code */ | 631 | /* compatibility with older code */ |
| 614 | #define SPARC_ETH_GSET ETHTOOL_GSET | 632 | #define SPARC_ETH_GSET ETHTOOL_GSET |
diff --git a/include/linux/hil.h b/include/linux/hil.h index 13352d7d0caf..523785a9de70 100644 --- a/include/linux/hil.h +++ b/include/linux/hil.h | |||
| @@ -168,14 +168,14 @@ enum hil_command { | |||
| 168 | HIL_CMD_PR6 = 0x45, /* Prompt6 */ | 168 | HIL_CMD_PR6 = 0x45, /* Prompt6 */ |
| 169 | HIL_CMD_PR7 = 0x46, /* Prompt7 */ | 169 | HIL_CMD_PR7 = 0x46, /* Prompt7 */ |
| 170 | HIL_CMD_PRM = 0x47, /* Prompt (General Purpose) */ | 170 | HIL_CMD_PRM = 0x47, /* Prompt (General Purpose) */ |
| 171 | HIL_CMD_AK1 = 0x48, /* Acknowlege1 */ | 171 | HIL_CMD_AK1 = 0x48, /* Acknowledge1 */ |
| 172 | HIL_CMD_AK2 = 0x49, /* Acknowlege2 */ | 172 | HIL_CMD_AK2 = 0x49, /* Acknowledge2 */ |
| 173 | HIL_CMD_AK3 = 0x4a, /* Acknowlege3 */ | 173 | HIL_CMD_AK3 = 0x4a, /* Acknowledge3 */ |
| 174 | HIL_CMD_AK4 = 0x4b, /* Acknowlege4 */ | 174 | HIL_CMD_AK4 = 0x4b, /* Acknowledge4 */ |
| 175 | HIL_CMD_AK5 = 0x4c, /* Acknowlege5 */ | 175 | HIL_CMD_AK5 = 0x4c, /* Acknowledge5 */ |
| 176 | HIL_CMD_AK6 = 0x4d, /* Acknowlege6 */ | 176 | HIL_CMD_AK6 = 0x4d, /* Acknowledge6 */ |
| 177 | HIL_CMD_AK7 = 0x4e, /* Acknowlege7 */ | 177 | HIL_CMD_AK7 = 0x4e, /* Acknowledge7 */ |
| 178 | HIL_CMD_ACK = 0x4f, /* Acknowlege (General Purpose) */ | 178 | HIL_CMD_ACK = 0x4f, /* Acknowledge (General Purpose) */ |
| 179 | 179 | ||
| 180 | /* 0x50 to 0x78 reserved for future use */ | 180 | /* 0x50 to 0x78 reserved for future use */ |
| 181 | /* 0x80 to 0xEF device-specific commands */ | 181 | /* 0x80 to 0xEF device-specific commands */ |
diff --git a/include/linux/hw_breakpoint.h b/include/linux/hw_breakpoint.h index 5977b724f7c6..c70d27af03f9 100644 --- a/include/linux/hw_breakpoint.h +++ b/include/linux/hw_breakpoint.h | |||
| @@ -66,14 +66,14 @@ register_wide_hw_breakpoint_cpu(struct perf_event_attr *attr, | |||
| 66 | perf_overflow_handler_t triggered, | 66 | perf_overflow_handler_t triggered, |
| 67 | int cpu); | 67 | int cpu); |
| 68 | 68 | ||
| 69 | extern struct perf_event ** | 69 | extern struct perf_event * __percpu * |
| 70 | register_wide_hw_breakpoint(struct perf_event_attr *attr, | 70 | register_wide_hw_breakpoint(struct perf_event_attr *attr, |
| 71 | perf_overflow_handler_t triggered); | 71 | perf_overflow_handler_t triggered); |
| 72 | 72 | ||
| 73 | extern int register_perf_hw_breakpoint(struct perf_event *bp); | 73 | extern int register_perf_hw_breakpoint(struct perf_event *bp); |
| 74 | extern int __register_perf_hw_breakpoint(struct perf_event *bp); | 74 | extern int __register_perf_hw_breakpoint(struct perf_event *bp); |
| 75 | extern void unregister_hw_breakpoint(struct perf_event *bp); | 75 | extern void unregister_hw_breakpoint(struct perf_event *bp); |
| 76 | extern void unregister_wide_hw_breakpoint(struct perf_event **cpu_events); | 76 | extern void unregister_wide_hw_breakpoint(struct perf_event * __percpu *cpu_events); |
| 77 | 77 | ||
| 78 | extern int dbg_reserve_bp_slot(struct perf_event *bp); | 78 | extern int dbg_reserve_bp_slot(struct perf_event *bp); |
| 79 | extern int dbg_release_bp_slot(struct perf_event *bp); | 79 | extern int dbg_release_bp_slot(struct perf_event *bp); |
| @@ -100,7 +100,7 @@ static inline struct perf_event * | |||
| 100 | register_wide_hw_breakpoint_cpu(struct perf_event_attr *attr, | 100 | register_wide_hw_breakpoint_cpu(struct perf_event_attr *attr, |
| 101 | perf_overflow_handler_t triggered, | 101 | perf_overflow_handler_t triggered, |
| 102 | int cpu) { return NULL; } | 102 | int cpu) { return NULL; } |
| 103 | static inline struct perf_event ** | 103 | static inline struct perf_event * __percpu * |
| 104 | register_wide_hw_breakpoint(struct perf_event_attr *attr, | 104 | register_wide_hw_breakpoint(struct perf_event_attr *attr, |
| 105 | perf_overflow_handler_t triggered) { return NULL; } | 105 | perf_overflow_handler_t triggered) { return NULL; } |
| 106 | static inline int | 106 | static inline int |
| @@ -109,7 +109,7 @@ static inline int | |||
| 109 | __register_perf_hw_breakpoint(struct perf_event *bp) { return -ENOSYS; } | 109 | __register_perf_hw_breakpoint(struct perf_event *bp) { return -ENOSYS; } |
| 110 | static inline void unregister_hw_breakpoint(struct perf_event *bp) { } | 110 | static inline void unregister_hw_breakpoint(struct perf_event *bp) { } |
| 111 | static inline void | 111 | static inline void |
| 112 | unregister_wide_hw_breakpoint(struct perf_event **cpu_events) { } | 112 | unregister_wide_hw_breakpoint(struct perf_event * __percpu *cpu_events) { } |
| 113 | static inline int | 113 | static inline int |
| 114 | reserve_bp_slot(struct perf_event *bp) {return -ENOSYS; } | 114 | reserve_bp_slot(struct perf_event *bp) {return -ENOSYS; } |
| 115 | static inline void release_bp_slot(struct perf_event *bp) { } | 115 | static inline void release_bp_slot(struct perf_event *bp) { } |
diff --git a/include/linux/i2c-algo-bit.h b/include/linux/i2c-algo-bit.h index 111334f5b922..4f98148c11c3 100644 --- a/include/linux/i2c-algo-bit.h +++ b/include/linux/i2c-algo-bit.h | |||
| @@ -36,6 +36,8 @@ struct i2c_algo_bit_data { | |||
| 36 | void (*setscl) (void *data, int state); | 36 | void (*setscl) (void *data, int state); |
| 37 | int (*getsda) (void *data); | 37 | int (*getsda) (void *data); |
| 38 | int (*getscl) (void *data); | 38 | int (*getscl) (void *data); |
| 39 | int (*pre_xfer) (struct i2c_adapter *); | ||
| 40 | void (*post_xfer) (struct i2c_adapter *); | ||
| 39 | 41 | ||
| 40 | /* local settings */ | 42 | /* local settings */ |
| 41 | int udelay; /* half clock cycle time in us, | 43 | int udelay; /* half clock cycle time in us, |
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index abec69b63d7e..b1ed1cd8e2a8 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
| @@ -32,14 +32,6 @@ extern struct fs_struct init_fs; | |||
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | extern struct nsproxy init_nsproxy; | 34 | extern struct nsproxy init_nsproxy; |
| 35 | #define INIT_NSPROXY(nsproxy) { \ | ||
| 36 | .pid_ns = &init_pid_ns, \ | ||
| 37 | .count = ATOMIC_INIT(1), \ | ||
| 38 | .uts_ns = &init_uts_ns, \ | ||
| 39 | .mnt_ns = NULL, \ | ||
| 40 | INIT_NET_NS(net_ns) \ | ||
| 41 | INIT_IPC_NS(ipc_ns) \ | ||
| 42 | } | ||
| 43 | 35 | ||
| 44 | #define INIT_SIGHAND(sighand) { \ | 36 | #define INIT_SIGHAND(sighand) { \ |
| 45 | .count = ATOMIC_INIT(1), \ | 37 | .count = ATOMIC_INIT(1), \ |
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index 1195a806fe0c..a0bb301afac0 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h | |||
| @@ -42,7 +42,7 @@ struct io_context { | |||
| 42 | unsigned short ioprio; | 42 | unsigned short ioprio; |
| 43 | unsigned short ioprio_changed; | 43 | unsigned short ioprio_changed; |
| 44 | 44 | ||
| 45 | #ifdef CONFIG_BLK_CGROUP | 45 | #if defined(CONFIG_BLK_CGROUP) || defined(CONFIG_BLK_CGROUP_MODULE) |
| 46 | unsigned short cgroup_changed; | 46 | unsigned short cgroup_changed; |
| 47 | #endif | 47 | #endif |
| 48 | 48 | ||
diff --git a/include/linux/ipc_namespace.h b/include/linux/ipc_namespace.h index 07baa38bce37..51952989ad42 100644 --- a/include/linux/ipc_namespace.h +++ b/include/linux/ipc_namespace.h | |||
| @@ -62,11 +62,6 @@ extern struct ipc_namespace init_ipc_ns; | |||
| 62 | extern atomic_t nr_ipc_ns; | 62 | extern atomic_t nr_ipc_ns; |
| 63 | 63 | ||
| 64 | extern spinlock_t mq_lock; | 64 | extern spinlock_t mq_lock; |
| 65 | #if defined(CONFIG_POSIX_MQUEUE) || defined(CONFIG_SYSVIPC) | ||
| 66 | #define INIT_IPC_NS(ns) .ns = &init_ipc_ns, | ||
| 67 | #else | ||
| 68 | #define INIT_IPC_NS(ns) | ||
| 69 | #endif | ||
| 70 | 65 | ||
| 71 | #ifdef CONFIG_SYSVIPC | 66 | #ifdef CONFIG_SYSVIPC |
| 72 | extern int register_ipcns_notifier(struct ipc_namespace *); | 67 | extern int register_ipcns_notifier(struct ipc_namespace *); |
diff --git a/include/linux/ipmi_smi.h b/include/linux/ipmi_smi.h index f7c9c75a2775..4b48318ac542 100644 --- a/include/linux/ipmi_smi.h +++ b/include/linux/ipmi_smi.h | |||
| @@ -39,7 +39,6 @@ | |||
| 39 | #include <linux/module.h> | 39 | #include <linux/module.h> |
| 40 | #include <linux/device.h> | 40 | #include <linux/device.h> |
| 41 | #include <linux/platform_device.h> | 41 | #include <linux/platform_device.h> |
| 42 | #include <linux/ipmi_smi.h> | ||
| 43 | 42 | ||
| 44 | /* This files describes the interface for IPMI system management interface | 43 | /* This files describes the interface for IPMI system management interface |
| 45 | drivers to bind into the IPMI message handler. */ | 44 | drivers to bind into the IPMI message handler. */ |
diff --git a/include/linux/kmod.h b/include/linux/kmod.h index 384ca8bbf1ac..facb27fe7de0 100644 --- a/include/linux/kmod.h +++ b/include/linux/kmod.h | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | #define KMOD_PATH_LEN 256 | 27 | #define KMOD_PATH_LEN 256 |
| 28 | 28 | ||
| 29 | #ifdef CONFIG_MODULES | 29 | #ifdef CONFIG_MODULES |
| 30 | extern char modprobe_path[]; /* for sysctl */ | ||
| 30 | /* modprobe exit status on success, -ve on error. Return value | 31 | /* modprobe exit status on success, -ve on error. Return value |
| 31 | * usually useless though. */ | 32 | * usually useless though. */ |
| 32 | extern int __request_module(bool wait, const char *name, ...) \ | 33 | extern int __request_module(bool wait, const char *name, ...) \ |
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h index 10206a87da19..a03977a96d7e 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h | |||
| @@ -12,6 +12,10 @@ | |||
| 12 | struct task_struct; | 12 | struct task_struct; |
| 13 | struct lockdep_map; | 13 | struct lockdep_map; |
| 14 | 14 | ||
| 15 | /* for sysctl */ | ||
| 16 | extern int prove_locking; | ||
| 17 | extern int lock_stat; | ||
| 18 | |||
| 15 | #ifdef CONFIG_LOCKDEP | 19 | #ifdef CONFIG_LOCKDEP |
| 16 | 20 | ||
| 17 | #include <linux/linkage.h> | 21 | #include <linux/linkage.h> |
diff --git a/include/linux/lru_cache.h b/include/linux/lru_cache.h index 3a2b2d9b0472..de48d167568b 100644 --- a/include/linux/lru_cache.h +++ b/include/linux/lru_cache.h | |||
| @@ -64,7 +64,7 @@ For crash recovery after replication node failure, | |||
| 64 | usually the condition is softened to regions that _may_ have been target of | 64 | usually the condition is softened to regions that _may_ have been target of |
| 65 | in-flight WRITE IO, e.g. by only lazily clearing the on-disk write-intent | 65 | in-flight WRITE IO, e.g. by only lazily clearing the on-disk write-intent |
| 66 | bitmap, trading frequency of meta data transactions against amount of | 66 | bitmap, trading frequency of meta data transactions against amount of |
| 67 | (possibly unneccessary) resync traffic. | 67 | (possibly unnecessary) resync traffic. |
| 68 | 68 | ||
| 69 | If we set a hard limit on the area that may be "hot" at any given time, we | 69 | If we set a hard limit on the area that may be "hot" at any given time, we |
| 70 | limit the amount of resync traffic needed for crash recovery. | 70 | limit the amount of resync traffic needed for crash recovery. |
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 1f9b119f4ace..44301c6affa8 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
| @@ -124,7 +124,6 @@ static inline bool mem_cgroup_disabled(void) | |||
| 124 | return false; | 124 | return false; |
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | extern bool mem_cgroup_oom_called(struct task_struct *task); | ||
| 128 | void mem_cgroup_update_file_mapped(struct page *page, int val); | 127 | void mem_cgroup_update_file_mapped(struct page *page, int val); |
| 129 | unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order, | 128 | unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order, |
| 130 | gfp_t gfp_mask, int nid, | 129 | gfp_t gfp_mask, int nid, |
| @@ -258,11 +257,6 @@ static inline bool mem_cgroup_disabled(void) | |||
| 258 | return true; | 257 | return true; |
| 259 | } | 258 | } |
| 260 | 259 | ||
| 261 | static inline bool mem_cgroup_oom_called(struct task_struct *task) | ||
| 262 | { | ||
| 263 | return false; | ||
| 264 | } | ||
| 265 | |||
| 266 | static inline int | 260 | static inline int |
| 267 | mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg) | 261 | mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg) |
| 268 | { | 262 | { |
diff --git a/include/linux/mm.h b/include/linux/mm.h index 3899395a03de..e70f21beb4b4 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -971,7 +971,13 @@ static inline void setmax_mm_hiwater_rss(unsigned long *maxrss, | |||
| 971 | *maxrss = hiwater_rss; | 971 | *maxrss = hiwater_rss; |
| 972 | } | 972 | } |
| 973 | 973 | ||
| 974 | #if defined(SPLIT_RSS_COUNTING) | ||
| 974 | void sync_mm_rss(struct task_struct *task, struct mm_struct *mm); | 975 | void sync_mm_rss(struct task_struct *task, struct mm_struct *mm); |
| 976 | #else | ||
| 977 | static inline void sync_mm_rss(struct task_struct *task, struct mm_struct *mm) | ||
| 978 | { | ||
| 979 | } | ||
| 980 | #endif | ||
| 975 | 981 | ||
| 976 | /* | 982 | /* |
| 977 | * A callback you can register to apply pressure to ageable caches. | 983 | * A callback you can register to apply pressure to ageable caches. |
| @@ -1459,5 +1465,7 @@ extern void shake_page(struct page *p, int access); | |||
| 1459 | extern atomic_long_t mce_bad_pages; | 1465 | extern atomic_long_t mce_bad_pages; |
| 1460 | extern int soft_offline_page(struct page *page, int flags); | 1466 | extern int soft_offline_page(struct page *page, int flags); |
| 1461 | 1467 | ||
| 1468 | extern void dump_page(struct page *page); | ||
| 1469 | |||
| 1462 | #endif /* __KERNEL__ */ | 1470 | #endif /* __KERNEL__ */ |
| 1463 | #endif /* _LINUX_MM_H */ | 1471 | #endif /* _LINUX_MM_H */ |
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 048b46270aa5..b8bb9a6a1f37 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h | |||
| @@ -203,7 +203,7 @@ enum { | |||
| 203 | NR_MM_COUNTERS | 203 | NR_MM_COUNTERS |
| 204 | }; | 204 | }; |
| 205 | 205 | ||
| 206 | #if USE_SPLIT_PTLOCKS | 206 | #if USE_SPLIT_PTLOCKS && defined(CONFIG_MMU) |
| 207 | #define SPLIT_RSS_COUNTING | 207 | #define SPLIT_RSS_COUNTING |
| 208 | struct mm_rss_stat { | 208 | struct mm_rss_stat { |
| 209 | atomic_long_t count[NR_MM_COUNTERS]; | 209 | atomic_long_t count[NR_MM_COUNTERS]; |
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index bc209d8b7b5c..cf9e458e96b0 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
| @@ -342,7 +342,7 @@ struct zone { | |||
| 342 | * prev_priority holds the scanning priority for this zone. It is | 342 | * prev_priority holds the scanning priority for this zone. It is |
| 343 | * defined as the scanning priority at which we achieved our reclaim | 343 | * defined as the scanning priority at which we achieved our reclaim |
| 344 | * target at the previous try_to_free_pages() or balance_pgdat() | 344 | * target at the previous try_to_free_pages() or balance_pgdat() |
| 345 | * invokation. | 345 | * invocation. |
| 346 | * | 346 | * |
| 347 | * We use prev_priority as a measure of how much stress page reclaim is | 347 | * We use prev_priority as a measure of how much stress page reclaim is |
| 348 | * under - it drives the swappiness decision: whether to unmap mapped | 348 | * under - it drives the swappiness decision: whether to unmap mapped |
diff --git a/include/linux/module.h b/include/linux/module.h index dd618eb026aa..5e869ffd34aa 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
| @@ -175,6 +175,7 @@ struct notifier_block; | |||
| 175 | 175 | ||
| 176 | #ifdef CONFIG_MODULES | 176 | #ifdef CONFIG_MODULES |
| 177 | 177 | ||
| 178 | extern int modules_disabled; /* for sysctl */ | ||
| 178 | /* Get/put a kernel symbol (calls must be symmetric) */ | 179 | /* Get/put a kernel symbol (calls must be symmetric) */ |
| 179 | void *__symbol_get(const char *symbol); | 180 | void *__symbol_get(const char *symbol); |
| 180 | void *__symbol_get_gpl(const char *symbol); | 181 | void *__symbol_get_gpl(const char *symbol); |
diff --git a/include/linux/msdos_fs.h b/include/linux/msdos_fs.h index ce38f1caa5e1..34066e65fdeb 100644 --- a/include/linux/msdos_fs.h +++ b/include/linux/msdos_fs.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #define MSDOS_DPB_BITS 4 /* log2(MSDOS_DPB) */ | 15 | #define MSDOS_DPB_BITS 4 /* log2(MSDOS_DPB) */ |
| 16 | #define MSDOS_DPS (SECTOR_SIZE / sizeof(struct msdos_dir_entry)) | 16 | #define MSDOS_DPS (SECTOR_SIZE / sizeof(struct msdos_dir_entry)) |
| 17 | #define MSDOS_DPS_BITS 4 /* log2(MSDOS_DPS) */ | 17 | #define MSDOS_DPS_BITS 4 /* log2(MSDOS_DPS) */ |
| 18 | #define MSDOS_LONGNAME 256 /* maximum name length */ | ||
| 18 | #define CF_LE_W(v) le16_to_cpu(v) | 19 | #define CF_LE_W(v) le16_to_cpu(v) |
| 19 | #define CF_LE_L(v) le32_to_cpu(v) | 20 | #define CF_LE_L(v) le32_to_cpu(v) |
| 20 | #define CT_LE_W(v) cpu_to_le16(v) | 21 | #define CT_LE_W(v) cpu_to_le16(v) |
| @@ -47,8 +48,8 @@ | |||
| 47 | #define DELETED_FLAG 0xe5 /* marks file as deleted when in name[0] */ | 48 | #define DELETED_FLAG 0xe5 /* marks file as deleted when in name[0] */ |
| 48 | #define IS_FREE(n) (!*(n) || *(n) == DELETED_FLAG) | 49 | #define IS_FREE(n) (!*(n) || *(n) == DELETED_FLAG) |
| 49 | 50 | ||
| 51 | #define FAT_LFN_LEN 255 /* maximum long name length */ | ||
| 50 | #define MSDOS_NAME 11 /* maximum name length */ | 52 | #define MSDOS_NAME 11 /* maximum name length */ |
| 51 | #define MSDOS_LONGNAME 256 /* maximum name length */ | ||
| 52 | #define MSDOS_SLOTS 21 /* max # of slots for short and long names */ | 53 | #define MSDOS_SLOTS 21 /* max # of slots for short and long names */ |
| 53 | #define MSDOS_DOT ". " /* ".", padded to MSDOS_NAME chars */ | 54 | #define MSDOS_DOT ". " /* ".", padded to MSDOS_NAME chars */ |
| 54 | #define MSDOS_DOTDOT ".. " /* "..", padded to MSDOS_NAME chars */ | 55 | #define MSDOS_DOTDOT ".. " /* "..", padded to MSDOS_NAME chars */ |
diff --git a/include/linux/nodemask.h b/include/linux/nodemask.h index c4fa64b585ff..dba35e413371 100644 --- a/include/linux/nodemask.h +++ b/include/linux/nodemask.h | |||
| @@ -483,7 +483,7 @@ static inline int num_node_state(enum node_states state) | |||
| 483 | type *name = kmalloc(sizeof(*name), gfp_flags) | 483 | type *name = kmalloc(sizeof(*name), gfp_flags) |
| 484 | #define NODEMASK_FREE(m) kfree(m) | 484 | #define NODEMASK_FREE(m) kfree(m) |
| 485 | #else | 485 | #else |
| 486 | #define NODEMASK_ALLOC(type, name, gfp_flags) type _name, *name = &_name | 486 | #define NODEMASK_ALLOC(type, name, gfp_flags) type _##name, *name = &_##name |
| 487 | #define NODEMASK_FREE(m) do {} while (0) | 487 | #define NODEMASK_FREE(m) do {} while (0) |
| 488 | #endif | 488 | #endif |
| 489 | 489 | ||
diff --git a/include/linux/page_cgroup.h b/include/linux/page_cgroup.h index b0e4eb126236..30b08136fdf3 100644 --- a/include/linux/page_cgroup.h +++ b/include/linux/page_cgroup.h | |||
| @@ -118,6 +118,8 @@ static inline void __init page_cgroup_init_flatmem(void) | |||
| 118 | #include <linux/swap.h> | 118 | #include <linux/swap.h> |
| 119 | 119 | ||
| 120 | #ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP | 120 | #ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP |
| 121 | extern unsigned short swap_cgroup_cmpxchg(swp_entry_t ent, | ||
| 122 | unsigned short old, unsigned short new); | ||
| 121 | extern unsigned short swap_cgroup_record(swp_entry_t ent, unsigned short id); | 123 | extern unsigned short swap_cgroup_record(swp_entry_t ent, unsigned short id); |
| 122 | extern unsigned short lookup_swap_cgroup(swp_entry_t ent); | 124 | extern unsigned short lookup_swap_cgroup(swp_entry_t ent); |
| 123 | extern int swap_cgroup_swapon(int type, unsigned long max_pages); | 125 | extern int swap_cgroup_swapon(int type, unsigned long max_pages); |
diff --git a/include/linux/pci-dma.h b/include/linux/pci-dma.h new file mode 100644 index 000000000000..549a041f9c08 --- /dev/null +++ b/include/linux/pci-dma.h | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | #ifndef _LINUX_PCI_DMA_H | ||
| 2 | #define _LINUX_PCI_DMA_H | ||
| 3 | |||
| 4 | #define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME) DEFINE_DMA_UNMAP_ADDR(ADDR_NAME); | ||
| 5 | #define DECLARE_PCI_UNMAP_LEN(LEN_NAME) DEFINE_DMA_UNMAP_LEN(LEN_NAME); | ||
| 6 | #define pci_unmap_addr dma_unmap_addr | ||
| 7 | #define pci_unmap_addr_set dma_unmap_addr_set | ||
| 8 | #define pci_unmap_len dma_unmap_len | ||
| 9 | #define pci_unmap_len_set dma_unmap_len_set | ||
| 10 | |||
| 11 | #endif | ||
diff --git a/include/linux/pci.h b/include/linux/pci.h index cd5809a5963e..a788fa12ff31 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -769,8 +769,6 @@ int pci_try_set_mwi(struct pci_dev *dev); | |||
| 769 | void pci_clear_mwi(struct pci_dev *dev); | 769 | void pci_clear_mwi(struct pci_dev *dev); |
| 770 | void pci_intx(struct pci_dev *dev, int enable); | 770 | void pci_intx(struct pci_dev *dev, int enable); |
| 771 | void pci_msi_off(struct pci_dev *dev); | 771 | void pci_msi_off(struct pci_dev *dev); |
| 772 | int pci_set_dma_mask(struct pci_dev *dev, u64 mask); | ||
| 773 | int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask); | ||
| 774 | int pci_set_dma_max_seg_size(struct pci_dev *dev, unsigned int size); | 772 | int pci_set_dma_max_seg_size(struct pci_dev *dev, unsigned int size); |
| 775 | int pci_set_dma_seg_boundary(struct pci_dev *dev, unsigned long mask); | 773 | int pci_set_dma_seg_boundary(struct pci_dev *dev, unsigned long mask); |
| 776 | int pcix_get_max_mmrbc(struct pci_dev *dev); | 774 | int pcix_get_max_mmrbc(struct pci_dev *dev); |
| @@ -904,6 +902,7 @@ int pci_set_vga_state(struct pci_dev *pdev, bool decode, | |||
| 904 | unsigned int command_bits, bool change_bridge); | 902 | unsigned int command_bits, bool change_bridge); |
| 905 | /* kmem_cache style wrapper around pci_alloc_consistent() */ | 903 | /* kmem_cache style wrapper around pci_alloc_consistent() */ |
| 906 | 904 | ||
| 905 | #include <linux/pci-dma.h> | ||
| 907 | #include <linux/dmapool.h> | 906 | #include <linux/dmapool.h> |
| 908 | 907 | ||
| 909 | #define pci_pool dma_pool | 908 | #define pci_pool dma_pool |
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 7b18b4fd5df7..6f8cd7da1a01 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h | |||
| @@ -487,9 +487,8 @@ struct hw_perf_event { | |||
| 487 | struct hrtimer hrtimer; | 487 | struct hrtimer hrtimer; |
| 488 | }; | 488 | }; |
| 489 | #ifdef CONFIG_HAVE_HW_BREAKPOINT | 489 | #ifdef CONFIG_HAVE_HW_BREAKPOINT |
| 490 | union { /* breakpoint */ | 490 | /* breakpoint */ |
| 491 | struct arch_hw_breakpoint info; | 491 | struct arch_hw_breakpoint info; |
| 492 | }; | ||
| 493 | #endif | 492 | #endif |
| 494 | }; | 493 | }; |
| 495 | atomic64_t prev_count; | 494 | atomic64_t prev_count; |
| @@ -802,6 +801,13 @@ struct perf_sample_data { | |||
| 802 | struct perf_raw_record *raw; | 801 | struct perf_raw_record *raw; |
| 803 | }; | 802 | }; |
| 804 | 803 | ||
| 804 | static inline | ||
| 805 | void perf_sample_data_init(struct perf_sample_data *data, u64 addr) | ||
| 806 | { | ||
| 807 | data->addr = addr; | ||
| 808 | data->raw = NULL; | ||
| 809 | } | ||
| 810 | |||
| 805 | extern void perf_output_sample(struct perf_output_handle *handle, | 811 | extern void perf_output_sample(struct perf_output_handle *handle, |
| 806 | struct perf_event_header *header, | 812 | struct perf_event_header *header, |
| 807 | struct perf_sample_data *data, | 813 | struct perf_sample_data *data, |
| @@ -858,6 +864,21 @@ extern int sysctl_perf_event_paranoid; | |||
| 858 | extern int sysctl_perf_event_mlock; | 864 | extern int sysctl_perf_event_mlock; |
| 859 | extern int sysctl_perf_event_sample_rate; | 865 | extern int sysctl_perf_event_sample_rate; |
| 860 | 866 | ||
| 867 | static inline bool perf_paranoid_tracepoint_raw(void) | ||
| 868 | { | ||
| 869 | return sysctl_perf_event_paranoid > -1; | ||
| 870 | } | ||
| 871 | |||
| 872 | static inline bool perf_paranoid_cpu(void) | ||
| 873 | { | ||
| 874 | return sysctl_perf_event_paranoid > 0; | ||
| 875 | } | ||
| 876 | |||
| 877 | static inline bool perf_paranoid_kernel(void) | ||
| 878 | { | ||
| 879 | return sysctl_perf_event_paranoid > 1; | ||
| 880 | } | ||
| 881 | |||
| 861 | extern void perf_event_init(void); | 882 | extern void perf_event_init(void); |
| 862 | extern void perf_tp_event(int event_id, u64 addr, u64 count, void *record, int entry_size); | 883 | extern void perf_tp_event(int event_id, u64 addr, u64 count, void *record, int entry_size); |
| 863 | extern void perf_bp_event(struct perf_event *event, void *data); | 884 | extern void perf_bp_event(struct perf_event *event, void *data); |
diff --git a/include/linux/poll.h b/include/linux/poll.h index 6673743946f7..600cc1fde64d 100644 --- a/include/linux/poll.h +++ b/include/linux/poll.h | |||
| @@ -10,8 +10,10 @@ | |||
| 10 | #include <linux/wait.h> | 10 | #include <linux/wait.h> |
| 11 | #include <linux/string.h> | 11 | #include <linux/string.h> |
| 12 | #include <linux/fs.h> | 12 | #include <linux/fs.h> |
| 13 | #include <linux/sysctl.h> | ||
| 13 | #include <asm/uaccess.h> | 14 | #include <asm/uaccess.h> |
| 14 | 15 | ||
| 16 | extern struct ctl_table epoll_table[]; /* for sysctl */ | ||
| 15 | /* ~832 bytes of stack space used max in sys_select/sys_poll before allocating | 17 | /* ~832 bytes of stack space used max in sys_select/sys_poll before allocating |
| 16 | additional memory. */ | 18 | additional memory. */ |
| 17 | #define MAX_STACK_ALLOC 832 | 19 | #define MAX_STACK_ALLOC 832 |
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h index c5eab89da51e..e1fb60729979 100644 --- a/include/linux/ptrace.h +++ b/include/linux/ptrace.h | |||
| @@ -264,6 +264,9 @@ static inline void user_enable_single_step(struct task_struct *task) | |||
| 264 | static inline void user_disable_single_step(struct task_struct *task) | 264 | static inline void user_disable_single_step(struct task_struct *task) |
| 265 | { | 265 | { |
| 266 | } | 266 | } |
| 267 | #else | ||
| 268 | extern void user_enable_single_step(struct task_struct *); | ||
| 269 | extern void user_disable_single_step(struct task_struct *); | ||
| 267 | #endif /* arch_has_single_step */ | 270 | #endif /* arch_has_single_step */ |
| 268 | 271 | ||
| 269 | #ifndef arch_has_block_step | 272 | #ifndef arch_has_block_step |
| @@ -291,6 +294,8 @@ static inline void user_enable_block_step(struct task_struct *task) | |||
| 291 | { | 294 | { |
| 292 | BUG(); /* This can never be called. */ | 295 | BUG(); /* This can never be called. */ |
| 293 | } | 296 | } |
| 297 | #else | ||
| 298 | extern void user_enable_block_step(struct task_struct *); | ||
| 294 | #endif /* arch_has_block_step */ | 299 | #endif /* arch_has_block_step */ |
| 295 | 300 | ||
| 296 | #ifdef ARCH_HAS_USER_SINGLE_STEP_INFO | 301 | #ifdef ARCH_HAS_USER_SINGLE_STEP_INFO |
diff --git a/include/linux/rbtree.h b/include/linux/rbtree.h index 9c295411d01f..5210a5c60877 100644 --- a/include/linux/rbtree.h +++ b/include/linux/rbtree.h | |||
| @@ -25,10 +25,10 @@ | |||
| 25 | 25 | ||
| 26 | Some example of insert and search follows here. The search is a plain | 26 | Some example of insert and search follows here. The search is a plain |
| 27 | normal search over an ordered tree. The insert instead must be implemented | 27 | normal search over an ordered tree. The insert instead must be implemented |
| 28 | int two steps: as first thing the code must insert the element in | 28 | in two steps: First, the code must insert the element in order as a red leaf |
| 29 | order as a red leaf in the tree, then the support library function | 29 | in the tree, and then the support library function rb_insert_color() must |
| 30 | rb_insert_color() must be called. Such function will do the | 30 | be called. Such function will do the not trivial work to rebalance the |
| 31 | not trivial work to rebalance the rbtree if necessary. | 31 | rbtree, if necessary. |
| 32 | 32 | ||
| 33 | ----------------------------------------------------------------------- | 33 | ----------------------------------------------------------------------- |
| 34 | static inline struct page * rb_search_page_cache(struct inode * inode, | 34 | static inline struct page * rb_search_page_cache(struct inode * inode, |
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index c84373626336..3024050c82a1 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
| @@ -41,6 +41,10 @@ | |||
| 41 | #include <linux/lockdep.h> | 41 | #include <linux/lockdep.h> |
| 42 | #include <linux/completion.h> | 42 | #include <linux/completion.h> |
| 43 | 43 | ||
| 44 | #ifdef CONFIG_RCU_TORTURE_TEST | ||
| 45 | extern int rcutorture_runnable; /* for sysctl */ | ||
| 46 | #endif /* #ifdef CONFIG_RCU_TORTURE_TEST */ | ||
| 47 | |||
| 44 | /** | 48 | /** |
| 45 | * struct rcu_head - callback structure for use with RCU | 49 | * struct rcu_head - callback structure for use with RCU |
| 46 | * @next: next update requests in a list | 50 | * @next: next update requests in a list |
| @@ -97,6 +101,11 @@ extern struct lockdep_map rcu_sched_lock_map; | |||
| 97 | # define rcu_read_release_sched() \ | 101 | # define rcu_read_release_sched() \ |
| 98 | lock_release(&rcu_sched_lock_map, 1, _THIS_IP_) | 102 | lock_release(&rcu_sched_lock_map, 1, _THIS_IP_) |
| 99 | 103 | ||
| 104 | static inline int debug_lockdep_rcu_enabled(void) | ||
| 105 | { | ||
| 106 | return likely(rcu_scheduler_active && debug_locks); | ||
| 107 | } | ||
| 108 | |||
| 100 | /** | 109 | /** |
| 101 | * rcu_read_lock_held - might we be in RCU read-side critical section? | 110 | * rcu_read_lock_held - might we be in RCU read-side critical section? |
| 102 | * | 111 | * |
| @@ -104,12 +113,14 @@ extern struct lockdep_map rcu_sched_lock_map; | |||
| 104 | * an RCU read-side critical section. In absence of CONFIG_PROVE_LOCKING, | 113 | * an RCU read-side critical section. In absence of CONFIG_PROVE_LOCKING, |
| 105 | * this assumes we are in an RCU read-side critical section unless it can | 114 | * this assumes we are in an RCU read-side critical section unless it can |
| 106 | * prove otherwise. | 115 | * prove otherwise. |
| 116 | * | ||
| 117 | * Check rcu_scheduler_active to prevent false positives during boot. | ||
| 107 | */ | 118 | */ |
| 108 | static inline int rcu_read_lock_held(void) | 119 | static inline int rcu_read_lock_held(void) |
| 109 | { | 120 | { |
| 110 | if (debug_locks) | 121 | if (!debug_lockdep_rcu_enabled()) |
| 111 | return lock_is_held(&rcu_lock_map); | 122 | return 1; |
| 112 | return 1; | 123 | return lock_is_held(&rcu_lock_map); |
| 113 | } | 124 | } |
| 114 | 125 | ||
| 115 | /** | 126 | /** |
| @@ -119,12 +130,14 @@ static inline int rcu_read_lock_held(void) | |||
| 119 | * an RCU-bh read-side critical section. In absence of CONFIG_PROVE_LOCKING, | 130 | * an RCU-bh read-side critical section. In absence of CONFIG_PROVE_LOCKING, |
| 120 | * this assumes we are in an RCU-bh read-side critical section unless it can | 131 | * this assumes we are in an RCU-bh read-side critical section unless it can |
| 121 | * prove otherwise. | 132 | * prove otherwise. |
| 133 | * | ||
| 134 | * Check rcu_scheduler_active to prevent false positives during boot. | ||
| 122 | */ | 135 | */ |
| 123 | static inline int rcu_read_lock_bh_held(void) | 136 | static inline int rcu_read_lock_bh_held(void) |
| 124 | { | 137 | { |
| 125 | if (debug_locks) | 138 | if (!debug_lockdep_rcu_enabled()) |
| 126 | return lock_is_held(&rcu_bh_lock_map); | 139 | return 1; |
| 127 | return 1; | 140 | return lock_is_held(&rcu_bh_lock_map); |
| 128 | } | 141 | } |
| 129 | 142 | ||
| 130 | /** | 143 | /** |
| @@ -135,15 +148,26 @@ static inline int rcu_read_lock_bh_held(void) | |||
| 135 | * this assumes we are in an RCU-sched read-side critical section unless it | 148 | * this assumes we are in an RCU-sched read-side critical section unless it |
| 136 | * can prove otherwise. Note that disabling of preemption (including | 149 | * can prove otherwise. Note that disabling of preemption (including |
| 137 | * disabling irqs) counts as an RCU-sched read-side critical section. | 150 | * disabling irqs) counts as an RCU-sched read-side critical section. |
| 151 | * | ||
| 152 | * Check rcu_scheduler_active to prevent false positives during boot. | ||
| 138 | */ | 153 | */ |
| 154 | #ifdef CONFIG_PREEMPT | ||
| 139 | static inline int rcu_read_lock_sched_held(void) | 155 | static inline int rcu_read_lock_sched_held(void) |
| 140 | { | 156 | { |
| 141 | int lockdep_opinion = 0; | 157 | int lockdep_opinion = 0; |
| 142 | 158 | ||
| 159 | if (!debug_lockdep_rcu_enabled()) | ||
| 160 | return 1; | ||
| 143 | if (debug_locks) | 161 | if (debug_locks) |
| 144 | lockdep_opinion = lock_is_held(&rcu_sched_lock_map); | 162 | lockdep_opinion = lock_is_held(&rcu_sched_lock_map); |
| 145 | return lockdep_opinion || preempt_count() != 0 || !rcu_scheduler_active; | 163 | return lockdep_opinion || preempt_count() != 0; |
| 164 | } | ||
| 165 | #else /* #ifdef CONFIG_PREEMPT */ | ||
| 166 | static inline int rcu_read_lock_sched_held(void) | ||
| 167 | { | ||
| 168 | return 1; | ||
| 146 | } | 169 | } |
| 170 | #endif /* #else #ifdef CONFIG_PREEMPT */ | ||
| 147 | 171 | ||
| 148 | #else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ | 172 | #else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ |
| 149 | 173 | ||
| @@ -164,10 +188,17 @@ static inline int rcu_read_lock_bh_held(void) | |||
| 164 | return 1; | 188 | return 1; |
| 165 | } | 189 | } |
| 166 | 190 | ||
| 191 | #ifdef CONFIG_PREEMPT | ||
| 167 | static inline int rcu_read_lock_sched_held(void) | 192 | static inline int rcu_read_lock_sched_held(void) |
| 168 | { | 193 | { |
| 169 | return preempt_count() != 0 || !rcu_scheduler_active; | 194 | return !rcu_scheduler_active || preempt_count() != 0; |
| 195 | } | ||
| 196 | #else /* #ifdef CONFIG_PREEMPT */ | ||
| 197 | static inline int rcu_read_lock_sched_held(void) | ||
| 198 | { | ||
| 199 | return 1; | ||
| 170 | } | 200 | } |
| 201 | #endif /* #else #ifdef CONFIG_PREEMPT */ | ||
| 171 | 202 | ||
| 172 | #endif /* #else #ifdef CONFIG_DEBUG_LOCK_ALLOC */ | 203 | #endif /* #else #ifdef CONFIG_DEBUG_LOCK_ALLOC */ |
| 173 | 204 | ||
| @@ -184,7 +215,7 @@ static inline int rcu_read_lock_sched_held(void) | |||
| 184 | */ | 215 | */ |
| 185 | #define rcu_dereference_check(p, c) \ | 216 | #define rcu_dereference_check(p, c) \ |
| 186 | ({ \ | 217 | ({ \ |
| 187 | if (debug_locks && !(c)) \ | 218 | if (debug_lockdep_rcu_enabled() && !(c)) \ |
| 188 | lockdep_rcu_dereference(__FILE__, __LINE__); \ | 219 | lockdep_rcu_dereference(__FILE__, __LINE__); \ |
| 189 | rcu_dereference_raw(p); \ | 220 | rcu_dereference_raw(p); \ |
| 190 | }) | 221 | }) |
diff --git a/include/linux/reboot.h b/include/linux/reboot.h index 988e55fe649b..3005d5a7fce5 100644 --- a/include/linux/reboot.h +++ b/include/linux/reboot.h | |||
| @@ -64,6 +64,7 @@ extern void kernel_restart(char *cmd); | |||
| 64 | extern void kernel_halt(void); | 64 | extern void kernel_halt(void); |
| 65 | extern void kernel_power_off(void); | 65 | extern void kernel_power_off(void); |
| 66 | 66 | ||
| 67 | extern int C_A_D; /* for sysctl */ | ||
| 67 | void ctrl_alt_del(void); | 68 | void ctrl_alt_del(void); |
| 68 | 69 | ||
| 69 | #define POWEROFF_CMD_PATH_LEN 256 | 70 | #define POWEROFF_CMD_PATH_LEN 256 |
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h index 97059d08a626..4f82326eb294 100644 --- a/include/linux/rfkill.h +++ b/include/linux/rfkill.h | |||
| @@ -29,7 +29,7 @@ | |||
| 29 | /** | 29 | /** |
| 30 | * enum rfkill_type - type of rfkill switch. | 30 | * enum rfkill_type - type of rfkill switch. |
| 31 | * | 31 | * |
| 32 | * @RFKILL_TYPE_ALL: toggles all switches (userspace only) | 32 | * @RFKILL_TYPE_ALL: toggles all switches (requests only - not a switch type) |
| 33 | * @RFKILL_TYPE_WLAN: switch is on a 802.11 wireless network device. | 33 | * @RFKILL_TYPE_WLAN: switch is on a 802.11 wireless network device. |
| 34 | * @RFKILL_TYPE_BLUETOOTH: switch is on a bluetooth device. | 34 | * @RFKILL_TYPE_BLUETOOTH: switch is on a bluetooth device. |
| 35 | * @RFKILL_TYPE_UWB: switch is on a ultra wideband device. | 35 | * @RFKILL_TYPE_UWB: switch is on a ultra wideband device. |
diff --git a/include/linux/rtc.h b/include/linux/rtc.h index 60f88a7fb13d..14dbc83ded20 100644 --- a/include/linux/rtc.h +++ b/include/linux/rtc.h | |||
| @@ -238,6 +238,12 @@ static inline bool is_leap_year(unsigned int year) | |||
| 238 | return (!(year % 4) && (year % 100)) || !(year % 400); | 238 | return (!(year % 4) && (year % 100)) || !(year % 400); |
| 239 | } | 239 | } |
| 240 | 240 | ||
| 241 | #ifdef CONFIG_RTC_HCTOSYS | ||
| 242 | extern int rtc_hctosys_ret; | ||
| 243 | #else | ||
| 244 | #define rtc_hctosys_ret -ENODEV | ||
| 245 | #endif | ||
| 246 | |||
| 241 | #endif /* __KERNEL__ */ | 247 | #endif /* __KERNEL__ */ |
| 242 | 248 | ||
| 243 | #endif /* _LINUX_RTC_H_ */ | 249 | #endif /* _LINUX_RTC_H_ */ |
diff --git a/include/linux/rtmutex.h b/include/linux/rtmutex.h index 281d8fd775e8..8d522ffeda33 100644 --- a/include/linux/rtmutex.h +++ b/include/linux/rtmutex.h | |||
| @@ -16,6 +16,8 @@ | |||
| 16 | #include <linux/plist.h> | 16 | #include <linux/plist.h> |
| 17 | #include <linux/spinlock_types.h> | 17 | #include <linux/spinlock_types.h> |
| 18 | 18 | ||
| 19 | extern int max_lock_depth; /* for sysctl */ | ||
| 20 | |||
| 19 | /** | 21 | /** |
| 20 | * The rt_mutex structure | 22 | * The rt_mutex structure |
| 21 | * | 23 | * |
diff --git a/include/linux/rwlock.h b/include/linux/rwlock.h index 71e0b00b6f2c..bc2994ed66e1 100644 --- a/include/linux/rwlock.h +++ b/include/linux/rwlock.h | |||
| @@ -29,25 +29,25 @@ do { \ | |||
| 29 | #endif | 29 | #endif |
| 30 | 30 | ||
| 31 | #ifdef CONFIG_DEBUG_SPINLOCK | 31 | #ifdef CONFIG_DEBUG_SPINLOCK |
| 32 | extern void do_raw_read_lock(rwlock_t *lock); | 32 | extern void do_raw_read_lock(rwlock_t *lock) __acquires(lock); |
| 33 | #define do_raw_read_lock_flags(lock, flags) do_raw_read_lock(lock) | 33 | #define do_raw_read_lock_flags(lock, flags) do_raw_read_lock(lock) |
| 34 | extern int do_raw_read_trylock(rwlock_t *lock); | 34 | extern int do_raw_read_trylock(rwlock_t *lock); |
| 35 | extern void do_raw_read_unlock(rwlock_t *lock); | 35 | extern void do_raw_read_unlock(rwlock_t *lock) __releases(lock); |
| 36 | extern void do_raw_write_lock(rwlock_t *lock); | 36 | extern void do_raw_write_lock(rwlock_t *lock) __acquires(lock); |
| 37 | #define do_raw_write_lock_flags(lock, flags) do_raw_write_lock(lock) | 37 | #define do_raw_write_lock_flags(lock, flags) do_raw_write_lock(lock) |
| 38 | extern int do_raw_write_trylock(rwlock_t *lock); | 38 | extern int do_raw_write_trylock(rwlock_t *lock); |
| 39 | extern void do_raw_write_unlock(rwlock_t *lock); | 39 | extern void do_raw_write_unlock(rwlock_t *lock) __releases(lock); |
| 40 | #else | 40 | #else |
| 41 | # define do_raw_read_lock(rwlock) arch_read_lock(&(rwlock)->raw_lock) | 41 | # define do_raw_read_lock(rwlock) do {__acquire(lock); arch_read_lock(&(rwlock)->raw_lock); } while (0) |
| 42 | # define do_raw_read_lock_flags(lock, flags) \ | 42 | # define do_raw_read_lock_flags(lock, flags) \ |
| 43 | arch_read_lock_flags(&(lock)->raw_lock, *(flags)) | 43 | do {__acquire(lock); arch_read_lock_flags(&(lock)->raw_lock, *(flags)); } while (0) |
| 44 | # define do_raw_read_trylock(rwlock) arch_read_trylock(&(rwlock)->raw_lock) | 44 | # define do_raw_read_trylock(rwlock) arch_read_trylock(&(rwlock)->raw_lock) |
| 45 | # define do_raw_read_unlock(rwlock) arch_read_unlock(&(rwlock)->raw_lock) | 45 | # define do_raw_read_unlock(rwlock) do {arch_read_unlock(&(rwlock)->raw_lock); __release(lock); } while (0) |
| 46 | # define do_raw_write_lock(rwlock) arch_write_lock(&(rwlock)->raw_lock) | 46 | # define do_raw_write_lock(rwlock) do {__acquire(lock); arch_write_lock(&(rwlock)->raw_lock); } while (0) |
| 47 | # define do_raw_write_lock_flags(lock, flags) \ | 47 | # define do_raw_write_lock_flags(lock, flags) \ |
| 48 | arch_write_lock_flags(&(lock)->raw_lock, *(flags)) | 48 | do {__acquire(lock); arch_write_lock_flags(&(lock)->raw_lock, *(flags)); } while (0) |
| 49 | # define do_raw_write_trylock(rwlock) arch_write_trylock(&(rwlock)->raw_lock) | 49 | # define do_raw_write_trylock(rwlock) arch_write_trylock(&(rwlock)->raw_lock) |
| 50 | # define do_raw_write_unlock(rwlock) arch_write_unlock(&(rwlock)->raw_lock) | 50 | # define do_raw_write_unlock(rwlock) do {arch_write_unlock(&(rwlock)->raw_lock); __release(lock); } while (0) |
| 51 | #endif | 51 | #endif |
| 52 | 52 | ||
| 53 | #define read_can_lock(rwlock) arch_read_can_lock(&(rwlock)->raw_lock) | 53 | #define read_can_lock(rwlock) arch_read_can_lock(&(rwlock)->raw_lock) |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 46c6f8d5dc06..dad7f668ebf7 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -258,6 +258,10 @@ extern spinlock_t mmlist_lock; | |||
| 258 | 258 | ||
| 259 | struct task_struct; | 259 | struct task_struct; |
| 260 | 260 | ||
| 261 | #ifdef CONFIG_PROVE_RCU | ||
| 262 | extern int lockdep_tasklist_lock_is_held(void); | ||
| 263 | #endif /* #ifdef CONFIG_PROVE_RCU */ | ||
| 264 | |||
| 261 | extern void sched_init(void); | 265 | extern void sched_init(void); |
| 262 | extern void sched_init_smp(void); | 266 | extern void sched_init_smp(void); |
| 263 | extern asmlinkage void schedule_tail(struct task_struct *prev); | 267 | extern asmlinkage void schedule_tail(struct task_struct *prev); |
| @@ -1473,7 +1477,7 @@ struct task_struct { | |||
| 1473 | 1477 | ||
| 1474 | struct list_head *scm_work_list; | 1478 | struct list_head *scm_work_list; |
| 1475 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER | 1479 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER |
| 1476 | /* Index of current stored adress in ret_stack */ | 1480 | /* Index of current stored address in ret_stack */ |
| 1477 | int curr_ret_stack; | 1481 | int curr_ret_stack; |
| 1478 | /* Stack of return addresses for return function tracing */ | 1482 | /* Stack of return addresses for return function tracing */ |
| 1479 | struct ftrace_ret_stack *ret_stack; | 1483 | struct ftrace_ret_stack *ret_stack; |
| @@ -2391,9 +2395,7 @@ void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times); | |||
| 2391 | 2395 | ||
| 2392 | static inline void thread_group_cputime_init(struct signal_struct *sig) | 2396 | static inline void thread_group_cputime_init(struct signal_struct *sig) |
| 2393 | { | 2397 | { |
| 2394 | sig->cputimer.cputime = INIT_CPUTIME; | ||
| 2395 | spin_lock_init(&sig->cputimer.lock); | 2398 | spin_lock_init(&sig->cputimer.lock); |
| 2396 | sig->cputimer.running = 0; | ||
| 2397 | } | 2399 | } |
| 2398 | 2400 | ||
| 2399 | static inline void thread_group_cputime_free(struct signal_struct *sig) | 2401 | static inline void thread_group_cputime_free(struct signal_struct *sig) |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 8c3dd36fe91a..78dd1e7120a9 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
| @@ -491,9 +491,13 @@ uart_handle_dcd_change(struct uart_port *uport, unsigned int status) | |||
| 491 | { | 491 | { |
| 492 | struct uart_state *state = uport->state; | 492 | struct uart_state *state = uport->state; |
| 493 | struct tty_port *port = &state->port; | 493 | struct tty_port *port = &state->port; |
| 494 | struct tty_ldisc *ld = tty_ldisc_ref(port->tty); | ||
| 495 | struct timespec ts; | ||
| 494 | 496 | ||
| 495 | uport->icount.dcd++; | 497 | if (ld && ld->ops->dcd_change) |
| 498 | getnstimeofday(&ts); | ||
| 496 | 499 | ||
| 500 | uport->icount.dcd++; | ||
| 497 | #ifdef CONFIG_HARD_PPS | 501 | #ifdef CONFIG_HARD_PPS |
| 498 | if ((uport->flags & UPF_HARDPPS_CD) && status) | 502 | if ((uport->flags & UPF_HARDPPS_CD) && status) |
| 499 | hardpps(); | 503 | hardpps(); |
| @@ -505,6 +509,11 @@ uart_handle_dcd_change(struct uart_port *uport, unsigned int status) | |||
| 505 | else if (port->tty) | 509 | else if (port->tty) |
| 506 | tty_hangup(port->tty); | 510 | tty_hangup(port->tty); |
| 507 | } | 511 | } |
| 512 | |||
| 513 | if (ld && ld->ops->dcd_change) | ||
| 514 | ld->ops->dcd_change(port->tty, status, &ts); | ||
| 515 | if (ld) | ||
| 516 | tty_ldisc_deref(ld); | ||
| 508 | } | 517 | } |
| 509 | 518 | ||
| 510 | /** | 519 | /** |
diff --git a/include/linux/signal.h b/include/linux/signal.h index ab9272cc270c..fcd2b14b1932 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h | |||
| @@ -7,6 +7,8 @@ | |||
| 7 | #ifdef __KERNEL__ | 7 | #ifdef __KERNEL__ |
| 8 | #include <linux/list.h> | 8 | #include <linux/list.h> |
| 9 | 9 | ||
| 10 | /* for sysctl */ | ||
| 11 | extern int print_fatal_signals; | ||
| 10 | /* | 12 | /* |
| 11 | * Real Time signals may be queued. | 13 | * Real Time signals may be queued. |
| 12 | */ | 14 | */ |
diff --git a/include/linux/snmp.h b/include/linux/snmp.h index e28f5a0182e8..4435d1084755 100644 --- a/include/linux/snmp.h +++ b/include/linux/snmp.h | |||
| @@ -225,6 +225,8 @@ enum | |||
| 225 | LINUX_MIB_SACKSHIFTED, | 225 | LINUX_MIB_SACKSHIFTED, |
| 226 | LINUX_MIB_SACKMERGED, | 226 | LINUX_MIB_SACKMERGED, |
| 227 | LINUX_MIB_SACKSHIFTFALLBACK, | 227 | LINUX_MIB_SACKSHIFTFALLBACK, |
| 228 | LINUX_MIB_TCPBACKLOGDROP, | ||
| 229 | LINUX_MIB_TCPMINTTLDROP, /* RFC 5082 */ | ||
| 228 | __LINUX_MIB_MAX | 230 | __LINUX_MIB_MAX |
| 229 | }; | 231 | }; |
| 230 | 232 | ||
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h index 86088213334a..89fac6a3f78b 100644 --- a/include/linux/spinlock.h +++ b/include/linux/spinlock.h | |||
| @@ -128,19 +128,21 @@ static inline void smp_mb__after_lock(void) { smp_mb(); } | |||
| 128 | #define raw_spin_unlock_wait(lock) arch_spin_unlock_wait(&(lock)->raw_lock) | 128 | #define raw_spin_unlock_wait(lock) arch_spin_unlock_wait(&(lock)->raw_lock) |
| 129 | 129 | ||
| 130 | #ifdef CONFIG_DEBUG_SPINLOCK | 130 | #ifdef CONFIG_DEBUG_SPINLOCK |
| 131 | extern void do_raw_spin_lock(raw_spinlock_t *lock); | 131 | extern void do_raw_spin_lock(raw_spinlock_t *lock) __acquires(lock); |
| 132 | #define do_raw_spin_lock_flags(lock, flags) do_raw_spin_lock(lock) | 132 | #define do_raw_spin_lock_flags(lock, flags) do_raw_spin_lock(lock) |
| 133 | extern int do_raw_spin_trylock(raw_spinlock_t *lock); | 133 | extern int do_raw_spin_trylock(raw_spinlock_t *lock); |
| 134 | extern void do_raw_spin_unlock(raw_spinlock_t *lock); | 134 | extern void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock); |
| 135 | #else | 135 | #else |
| 136 | static inline void do_raw_spin_lock(raw_spinlock_t *lock) | 136 | static inline void do_raw_spin_lock(raw_spinlock_t *lock) __acquires(lock) |
| 137 | { | 137 | { |
| 138 | __acquire(lock); | ||
| 138 | arch_spin_lock(&lock->raw_lock); | 139 | arch_spin_lock(&lock->raw_lock); |
| 139 | } | 140 | } |
| 140 | 141 | ||
| 141 | static inline void | 142 | static inline void |
| 142 | do_raw_spin_lock_flags(raw_spinlock_t *lock, unsigned long *flags) | 143 | do_raw_spin_lock_flags(raw_spinlock_t *lock, unsigned long *flags) __acquires(lock) |
| 143 | { | 144 | { |
| 145 | __acquire(lock); | ||
| 144 | arch_spin_lock_flags(&lock->raw_lock, *flags); | 146 | arch_spin_lock_flags(&lock->raw_lock, *flags); |
| 145 | } | 147 | } |
| 146 | 148 | ||
| @@ -149,9 +151,10 @@ static inline int do_raw_spin_trylock(raw_spinlock_t *lock) | |||
| 149 | return arch_spin_trylock(&(lock)->raw_lock); | 151 | return arch_spin_trylock(&(lock)->raw_lock); |
| 150 | } | 152 | } |
| 151 | 153 | ||
| 152 | static inline void do_raw_spin_unlock(raw_spinlock_t *lock) | 154 | static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock) |
| 153 | { | 155 | { |
| 154 | arch_spin_unlock(&lock->raw_lock); | 156 | arch_spin_unlock(&lock->raw_lock); |
| 157 | __release(lock); | ||
| 155 | } | 158 | } |
| 156 | #endif | 159 | #endif |
| 157 | 160 | ||
diff --git a/include/linux/swap.h b/include/linux/swap.h index a2602a8207a6..1f59d9340c4d 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h | |||
| @@ -355,6 +355,7 @@ static inline void disable_swap_token(void) | |||
| 355 | #ifdef CONFIG_CGROUP_MEM_RES_CTLR | 355 | #ifdef CONFIG_CGROUP_MEM_RES_CTLR |
| 356 | extern void | 356 | extern void |
| 357 | mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent, bool swapout); | 357 | mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent, bool swapout); |
| 358 | extern int mem_cgroup_count_swap_user(swp_entry_t ent, struct page **pagep); | ||
| 358 | #else | 359 | #else |
| 359 | static inline void | 360 | static inline void |
| 360 | mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent, bool swapout) | 361 | mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent, bool swapout) |
| @@ -485,6 +486,14 @@ mem_cgroup_uncharge_swapcache(struct page *page, swp_entry_t ent) | |||
| 485 | { | 486 | { |
| 486 | } | 487 | } |
| 487 | 488 | ||
| 489 | #ifdef CONFIG_CGROUP_MEM_RES_CTLR | ||
| 490 | static inline int | ||
| 491 | mem_cgroup_count_swap_user(swp_entry_t ent, struct page **pagep) | ||
| 492 | { | ||
| 493 | return 0; | ||
| 494 | } | ||
| 495 | #endif | ||
| 496 | |||
| 488 | #endif /* CONFIG_SWAP */ | 497 | #endif /* CONFIG_SWAP */ |
| 489 | #endif /* __KERNEL__*/ | 498 | #endif /* __KERNEL__*/ |
| 490 | #endif /* _LINUX_SWAP_H */ | 499 | #endif /* _LINUX_SWAP_H */ |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 8126f239edf0..44f2ad0e8825 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
| @@ -23,6 +23,7 @@ struct kexec_segment; | |||
| 23 | struct linux_dirent; | 23 | struct linux_dirent; |
| 24 | struct linux_dirent64; | 24 | struct linux_dirent64; |
| 25 | struct list_head; | 25 | struct list_head; |
| 26 | struct mmap_arg_struct; | ||
| 26 | struct msgbuf; | 27 | struct msgbuf; |
| 27 | struct msghdr; | 28 | struct msghdr; |
| 28 | struct mmsghdr; | 29 | struct mmsghdr; |
| @@ -30,10 +31,13 @@ struct msqid_ds; | |||
| 30 | struct new_utsname; | 31 | struct new_utsname; |
| 31 | struct nfsctl_arg; | 32 | struct nfsctl_arg; |
| 32 | struct __old_kernel_stat; | 33 | struct __old_kernel_stat; |
| 34 | struct oldold_utsname; | ||
| 35 | struct old_utsname; | ||
| 33 | struct pollfd; | 36 | struct pollfd; |
| 34 | struct rlimit; | 37 | struct rlimit; |
| 35 | struct rusage; | 38 | struct rusage; |
| 36 | struct sched_param; | 39 | struct sched_param; |
| 40 | struct sel_arg_struct; | ||
| 37 | struct semaphore; | 41 | struct semaphore; |
| 38 | struct sembuf; | 42 | struct sembuf; |
| 39 | struct shmid_ds; | 43 | struct shmid_ds; |
| @@ -638,6 +642,7 @@ asmlinkage long sys_poll(struct pollfd __user *ufds, unsigned int nfds, | |||
| 638 | long timeout); | 642 | long timeout); |
| 639 | asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp, | 643 | asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp, |
| 640 | fd_set __user *exp, struct timeval __user *tvp); | 644 | fd_set __user *exp, struct timeval __user *tvp); |
| 645 | asmlinkage long sys_old_select(struct sel_arg_struct __user *arg); | ||
| 641 | asmlinkage long sys_epoll_create(int size); | 646 | asmlinkage long sys_epoll_create(int size); |
| 642 | asmlinkage long sys_epoll_create1(int flags); | 647 | asmlinkage long sys_epoll_create1(int flags); |
| 643 | asmlinkage long sys_epoll_ctl(int epfd, int op, int fd, | 648 | asmlinkage long sys_epoll_ctl(int epfd, int op, int fd, |
| @@ -652,6 +657,8 @@ asmlinkage long sys_gethostname(char __user *name, int len); | |||
| 652 | asmlinkage long sys_sethostname(char __user *name, int len); | 657 | asmlinkage long sys_sethostname(char __user *name, int len); |
| 653 | asmlinkage long sys_setdomainname(char __user *name, int len); | 658 | asmlinkage long sys_setdomainname(char __user *name, int len); |
| 654 | asmlinkage long sys_newuname(struct new_utsname __user *name); | 659 | asmlinkage long sys_newuname(struct new_utsname __user *name); |
| 660 | asmlinkage long sys_uname(struct old_utsname __user *); | ||
| 661 | asmlinkage long sys_olduname(struct oldold_utsname __user *); | ||
| 655 | 662 | ||
| 656 | asmlinkage long sys_getrlimit(unsigned int resource, | 663 | asmlinkage long sys_getrlimit(unsigned int resource, |
| 657 | struct rlimit __user *rlim); | 664 | struct rlimit __user *rlim); |
| @@ -681,6 +688,8 @@ asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg); | |||
| 681 | asmlinkage long sys_shmget(key_t key, size_t size, int flag); | 688 | asmlinkage long sys_shmget(key_t key, size_t size, int flag); |
| 682 | asmlinkage long sys_shmdt(char __user *shmaddr); | 689 | asmlinkage long sys_shmdt(char __user *shmaddr); |
| 683 | asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf); | 690 | asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf); |
| 691 | asmlinkage long sys_ipc(unsigned int call, int first, int second, | ||
| 692 | unsigned long third, void __user *ptr, long fifth); | ||
| 684 | 693 | ||
| 685 | asmlinkage long sys_mq_open(const char __user *name, int oflag, mode_t mode, struct mq_attr __user *attr); | 694 | asmlinkage long sys_mq_open(const char __user *name, int oflag, mode_t mode, struct mq_attr __user *attr); |
| 686 | asmlinkage long sys_mq_unlink(const char __user *name); | 695 | asmlinkage long sys_mq_unlink(const char __user *name); |
| @@ -836,4 +845,6 @@ asmlinkage long sys_perf_event_open( | |||
| 836 | asmlinkage long sys_mmap_pgoff(unsigned long addr, unsigned long len, | 845 | asmlinkage long sys_mmap_pgoff(unsigned long addr, unsigned long len, |
| 837 | unsigned long prot, unsigned long flags, | 846 | unsigned long prot, unsigned long flags, |
| 838 | unsigned long fd, unsigned long pgoff); | 847 | unsigned long fd, unsigned long pgoff); |
| 848 | asmlinkage long sys_old_mmap(struct mmap_arg_struct __user *arg); | ||
| 849 | |||
| 839 | #endif | 850 | #endif |
diff --git a/include/linux/taskstats_kern.h b/include/linux/taskstats_kern.h index 3398f4553269..b6523c1427ce 100644 --- a/include/linux/taskstats_kern.h +++ b/include/linux/taskstats_kern.h | |||
| @@ -14,11 +14,6 @@ | |||
| 14 | extern struct kmem_cache *taskstats_cache; | 14 | extern struct kmem_cache *taskstats_cache; |
| 15 | extern struct mutex taskstats_exit_mutex; | 15 | extern struct mutex taskstats_exit_mutex; |
| 16 | 16 | ||
| 17 | static inline void taskstats_tgid_init(struct signal_struct *sig) | ||
| 18 | { | ||
| 19 | sig->stats = NULL; | ||
| 20 | } | ||
| 21 | |||
| 22 | static inline void taskstats_tgid_free(struct signal_struct *sig) | 17 | static inline void taskstats_tgid_free(struct signal_struct *sig) |
| 23 | { | 18 | { |
| 24 | if (sig->stats) | 19 | if (sig->stats) |
| @@ -30,8 +25,6 @@ extern void taskstats_init_early(void); | |||
| 30 | #else | 25 | #else |
| 31 | static inline void taskstats_exit(struct task_struct *tsk, int group_dead) | 26 | static inline void taskstats_exit(struct task_struct *tsk, int group_dead) |
| 32 | {} | 27 | {} |
| 33 | static inline void taskstats_tgid_init(struct signal_struct *sig) | ||
| 34 | {} | ||
| 35 | static inline void taskstats_tgid_free(struct signal_struct *sig) | 28 | static inline void taskstats_tgid_free(struct signal_struct *sig) |
| 36 | {} | 29 | {} |
| 37 | static inline void taskstats_init_early(void) | 30 | static inline void taskstats_init_early(void) |
diff --git a/include/linux/tty.h b/include/linux/tty.h index d96e5882f129..568369a86306 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
| @@ -514,6 +514,7 @@ extern void tty_ldisc_enable(struct tty_struct *tty); | |||
| 514 | 514 | ||
| 515 | /* n_tty.c */ | 515 | /* n_tty.c */ |
| 516 | extern struct tty_ldisc_ops tty_ldisc_N_TTY; | 516 | extern struct tty_ldisc_ops tty_ldisc_N_TTY; |
| 517 | extern void n_tty_inherit_ops(struct tty_ldisc_ops *ops); | ||
| 517 | 518 | ||
| 518 | /* tty_audit.c */ | 519 | /* tty_audit.c */ |
| 519 | #ifdef CONFIG_AUDIT | 520 | #ifdef CONFIG_AUDIT |
diff --git a/include/linux/tty_ldisc.h b/include/linux/tty_ldisc.h index 0c4ee9b88f85..526d66f066a3 100644 --- a/include/linux/tty_ldisc.h +++ b/include/linux/tty_ldisc.h | |||
| @@ -99,6 +99,12 @@ | |||
| 99 | * cease I/O to the tty driver. Can sleep. The driver should | 99 | * cease I/O to the tty driver. Can sleep. The driver should |
| 100 | * seek to perform this action quickly but should wait until | 100 | * seek to perform this action quickly but should wait until |
| 101 | * any pending driver I/O is completed. | 101 | * any pending driver I/O is completed. |
| 102 | * | ||
| 103 | * void (*dcd_change)(struct tty_struct *tty, unsigned int status, | ||
| 104 | * struct timespec *ts) | ||
| 105 | * | ||
| 106 | * Tells the discipline that the DCD pin has changed its status and | ||
| 107 | * the relative timestamp. Pointer ts can be NULL. | ||
| 102 | */ | 108 | */ |
| 103 | 109 | ||
| 104 | #include <linux/fs.h> | 110 | #include <linux/fs.h> |
| @@ -136,6 +142,8 @@ struct tty_ldisc_ops { | |||
| 136 | void (*receive_buf)(struct tty_struct *, const unsigned char *cp, | 142 | void (*receive_buf)(struct tty_struct *, const unsigned char *cp, |
| 137 | char *fp, int count); | 143 | char *fp, int count); |
| 138 | void (*write_wakeup)(struct tty_struct *); | 144 | void (*write_wakeup)(struct tty_struct *); |
| 145 | void (*dcd_change)(struct tty_struct *, unsigned int, | ||
| 146 | struct timespec *); | ||
| 139 | 147 | ||
| 140 | struct module *owner; | 148 | struct module *owner; |
| 141 | 149 | ||
diff --git a/include/linux/virtio.h b/include/linux/virtio.h index f508c651e53d..40d1709bdbf4 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h | |||
| @@ -98,6 +98,7 @@ struct virtio_device { | |||
| 98 | void *priv; | 98 | void *priv; |
| 99 | }; | 99 | }; |
| 100 | 100 | ||
| 101 | #define dev_to_virtio(dev) container_of(dev, struct virtio_device, dev) | ||
| 101 | int register_virtio_device(struct virtio_device *dev); | 102 | int register_virtio_device(struct virtio_device *dev); |
| 102 | void unregister_virtio_device(struct virtio_device *dev); | 103 | void unregister_virtio_device(struct virtio_device *dev); |
| 103 | 104 | ||
diff --git a/include/linux/virtio_9p.h b/include/linux/virtio_9p.h index 332275080083..5cf11765146b 100644 --- a/include/linux/virtio_9p.h +++ b/include/linux/virtio_9p.h | |||
| @@ -5,4 +5,16 @@ | |||
| 5 | #include <linux/virtio_ids.h> | 5 | #include <linux/virtio_ids.h> |
| 6 | #include <linux/virtio_config.h> | 6 | #include <linux/virtio_config.h> |
| 7 | 7 | ||
| 8 | /* The feature bitmap for virtio 9P */ | ||
| 9 | |||
| 10 | /* The mount point is specified in a config variable */ | ||
| 11 | #define VIRTIO_9P_MOUNT_TAG 0 | ||
| 12 | |||
| 13 | struct virtio_9p_config { | ||
| 14 | /* length of the tag name */ | ||
| 15 | __u16 tag_len; | ||
| 16 | /* non-NULL terminated tag name */ | ||
| 17 | __u8 tag[0]; | ||
| 18 | } __attribute__((packed)); | ||
| 19 | |||
| 8 | #endif /* _LINUX_VIRTIO_9P_H */ | 20 | #endif /* _LINUX_VIRTIO_9P_H */ |
