Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: net/bridge/br_mdb.c br_mdb.c conflict was a function call being removed to fix a bug in 'net' but whose signature was changed in 'net-next'. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
c5e40ee287
544 changed files with 4160 additions and 3355 deletions
|
|
@ -2,7 +2,7 @@
|
|||
* ARM PrimeXsys System Controller SP810 header file
|
||||
*
|
||||
* Copyright (C) 2009 ST Microelectronics
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
* Viresh Kumar <vireshk@kernel.org>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ struct blkcg {
|
|||
|
||||
struct blkcg_policy_data *pd[BLKCG_MAX_POLS];
|
||||
|
||||
struct list_head all_blkcgs_node;
|
||||
#ifdef CONFIG_CGROUP_WRITEBACK
|
||||
struct list_head cgwb_list;
|
||||
#endif
|
||||
|
|
@ -88,18 +89,12 @@ struct blkg_policy_data {
|
|||
* Policies that need to keep per-blkcg data which is independent
|
||||
* from any request_queue associated to it must specify its size
|
||||
* with the cpd_size field of the blkcg_policy structure and
|
||||
* embed a blkcg_policy_data in it. blkcg core allocates
|
||||
* policy-specific per-blkcg structures lazily the first time
|
||||
* they are actually needed, so it handles them together with
|
||||
* blkgs. cpd_init() is invoked to let each policy handle
|
||||
* per-blkcg data.
|
||||
* embed a blkcg_policy_data in it. cpd_init() is invoked to let
|
||||
* each policy handle per-blkcg data.
|
||||
*/
|
||||
struct blkcg_policy_data {
|
||||
/* the policy id this per-policy data belongs to */
|
||||
int plid;
|
||||
|
||||
/* used during policy activation */
|
||||
struct list_head alloc_node;
|
||||
};
|
||||
|
||||
/* association between a blk cgroup and a request queue */
|
||||
|
|
|
|||
|
|
@ -33,18 +33,19 @@ struct clk_lookup {
|
|||
}
|
||||
|
||||
struct clk_lookup *clkdev_alloc(struct clk *clk, const char *con_id,
|
||||
const char *dev_fmt, ...);
|
||||
const char *dev_fmt, ...) __printf(3, 4);
|
||||
|
||||
void clkdev_add(struct clk_lookup *cl);
|
||||
void clkdev_drop(struct clk_lookup *cl);
|
||||
|
||||
struct clk_lookup *clkdev_create(struct clk *clk, const char *con_id,
|
||||
const char *dev_fmt, ...);
|
||||
const char *dev_fmt, ...) __printf(3, 4);
|
||||
|
||||
void clkdev_add_table(struct clk_lookup *, size_t);
|
||||
int clk_add_alias(const char *, const char *, const char *, struct device *);
|
||||
|
||||
int clk_register_clkdev(struct clk *, const char *, const char *, ...);
|
||||
int clk_register_clkdev(struct clk *, const char *, const char *, ...)
|
||||
__printf(3, 4);
|
||||
int clk_register_clkdevs(struct clk *, struct clk_lookup *, size_t);
|
||||
|
||||
#ifdef CONFIG_COMMON_CLK
|
||||
|
|
|
|||
|
|
@ -424,7 +424,7 @@ asmlinkage long compat_sys_settimeofday(struct compat_timeval __user *tv,
|
|||
|
||||
asmlinkage long compat_sys_adjtimex(struct compat_timex __user *utp);
|
||||
|
||||
extern int compat_printk(const char *fmt, ...);
|
||||
extern __printf(1, 2) int compat_printk(const char *fmt, ...);
|
||||
extern void sigset_from_compat(sigset_t *set, const compat_sigset_t *compat);
|
||||
extern void sigset_to_compat(compat_sigset_t *compat, const sigset_t *set);
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,8 @@ struct config_item {
|
|||
struct dentry *ci_dentry;
|
||||
};
|
||||
|
||||
extern int config_item_set_name(struct config_item *, const char *, ...);
|
||||
extern __printf(2, 3)
|
||||
int config_item_set_name(struct config_item *, const char *, ...);
|
||||
|
||||
static inline char *config_item_name(struct config_item * item)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -40,9 +40,10 @@ extern void cpu_remove_dev_attr(struct device_attribute *attr);
|
|||
extern int cpu_add_dev_attr_group(struct attribute_group *attrs);
|
||||
extern void cpu_remove_dev_attr_group(struct attribute_group *attrs);
|
||||
|
||||
extern struct device *cpu_device_create(struct device *parent, void *drvdata,
|
||||
const struct attribute_group **groups,
|
||||
const char *fmt, ...);
|
||||
extern __printf(4, 5)
|
||||
struct device *cpu_device_create(struct device *parent, void *drvdata,
|
||||
const struct attribute_group **groups,
|
||||
const char *fmt, ...);
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
extern void unregister_cpu(struct cpu *cpu);
|
||||
extern ssize_t arch_cpu_probe(const char *, size_t);
|
||||
|
|
|
|||
|
|
@ -327,7 +327,8 @@ static inline unsigned d_count(const struct dentry *dentry)
|
|||
/*
|
||||
* helper function for dentry_operations.d_dname() members
|
||||
*/
|
||||
extern char *dynamic_dname(struct dentry *, char *, int, const char *, ...);
|
||||
extern __printf(4, 5)
|
||||
char *dynamic_dname(struct dentry *, char *, int, const char *, ...);
|
||||
extern char *simple_dname(struct dentry *, char *, int);
|
||||
|
||||
extern char *__d_path(const struct path *, const struct path *, char *, int);
|
||||
|
|
|
|||
|
|
@ -637,8 +637,9 @@ extern int devres_release_group(struct device *dev, void *id);
|
|||
|
||||
/* managed devm_k.alloc/kfree for device drivers */
|
||||
extern void *devm_kmalloc(struct device *dev, size_t size, gfp_t gfp);
|
||||
extern char *devm_kvasprintf(struct device *dev, gfp_t gfp, const char *fmt,
|
||||
va_list ap);
|
||||
extern __printf(3, 0)
|
||||
char *devm_kvasprintf(struct device *dev, gfp_t gfp, const char *fmt,
|
||||
va_list ap);
|
||||
extern __printf(3, 4)
|
||||
char *devm_kasprintf(struct device *dev, gfp_t gfp, const char *fmt, ...);
|
||||
static inline void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp)
|
||||
|
|
@ -1011,12 +1012,10 @@ extern int __must_check device_reprobe(struct device *dev);
|
|||
/*
|
||||
* Easy functions for dynamically creating devices on the fly
|
||||
*/
|
||||
extern struct device *device_create_vargs(struct class *cls,
|
||||
struct device *parent,
|
||||
dev_t devt,
|
||||
void *drvdata,
|
||||
const char *fmt,
|
||||
va_list vargs);
|
||||
extern __printf(5, 0)
|
||||
struct device *device_create_vargs(struct class *cls, struct device *parent,
|
||||
dev_t devt, void *drvdata,
|
||||
const char *fmt, va_list vargs);
|
||||
extern __printf(5, 6)
|
||||
struct device *device_create(struct class *cls, struct device *parent,
|
||||
dev_t devt, void *drvdata,
|
||||
|
|
|
|||
|
|
@ -1046,12 +1046,12 @@ extern void locks_remove_file(struct file *);
|
|||
extern void locks_release_private(struct file_lock *);
|
||||
extern void posix_test_lock(struct file *, struct file_lock *);
|
||||
extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock *);
|
||||
extern int posix_lock_file_wait(struct file *, struct file_lock *);
|
||||
extern int posix_lock_inode_wait(struct inode *, struct file_lock *);
|
||||
extern int posix_unblock_lock(struct file_lock *);
|
||||
extern int vfs_test_lock(struct file *, struct file_lock *);
|
||||
extern int vfs_lock_file(struct file *, unsigned int, struct file_lock *, struct file_lock *);
|
||||
extern int vfs_cancel_lock(struct file *filp, struct file_lock *fl);
|
||||
extern int flock_lock_file_wait(struct file *filp, struct file_lock *fl);
|
||||
extern int flock_lock_inode_wait(struct inode *inode, struct file_lock *fl);
|
||||
extern int __break_lease(struct inode *inode, unsigned int flags, unsigned int type);
|
||||
extern void lease_get_mtime(struct inode *, struct timespec *time);
|
||||
extern int generic_setlease(struct file *, long, struct file_lock **, void **priv);
|
||||
|
|
@ -1137,7 +1137,8 @@ static inline int posix_lock_file(struct file *filp, struct file_lock *fl,
|
|||
return -ENOLCK;
|
||||
}
|
||||
|
||||
static inline int posix_lock_file_wait(struct file *filp, struct file_lock *fl)
|
||||
static inline int posix_lock_inode_wait(struct inode *inode,
|
||||
struct file_lock *fl)
|
||||
{
|
||||
return -ENOLCK;
|
||||
}
|
||||
|
|
@ -1163,8 +1164,8 @@ static inline int vfs_cancel_lock(struct file *filp, struct file_lock *fl)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline int flock_lock_file_wait(struct file *filp,
|
||||
struct file_lock *request)
|
||||
static inline int flock_lock_inode_wait(struct inode *inode,
|
||||
struct file_lock *request)
|
||||
{
|
||||
return -ENOLCK;
|
||||
}
|
||||
|
|
@ -1202,6 +1203,20 @@ static inline void show_fd_locks(struct seq_file *f,
|
|||
struct file *filp, struct files_struct *files) {}
|
||||
#endif /* !CONFIG_FILE_LOCKING */
|
||||
|
||||
static inline struct inode *file_inode(const struct file *f)
|
||||
{
|
||||
return f->f_inode;
|
||||
}
|
||||
|
||||
static inline int posix_lock_file_wait(struct file *filp, struct file_lock *fl)
|
||||
{
|
||||
return posix_lock_inode_wait(file_inode(filp), fl);
|
||||
}
|
||||
|
||||
static inline int flock_lock_file_wait(struct file *filp, struct file_lock *fl)
|
||||
{
|
||||
return flock_lock_inode_wait(file_inode(filp), fl);
|
||||
}
|
||||
|
||||
struct fasync_struct {
|
||||
spinlock_t fa_lock;
|
||||
|
|
@ -2011,11 +2026,6 @@ extern void ihold(struct inode * inode);
|
|||
extern void iput(struct inode *);
|
||||
extern int generic_update_time(struct inode *, struct timespec *, int);
|
||||
|
||||
static inline struct inode *file_inode(const struct file *f)
|
||||
{
|
||||
return f->f_inode;
|
||||
}
|
||||
|
||||
/* /sys/fs */
|
||||
extern struct kobject *fs_kobj;
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ struct seq_file;
|
|||
* @base: identifies the first GPIO number handled by this chip;
|
||||
* or, if negative during registration, requests dynamic ID allocation.
|
||||
* DEPRECATION: providing anything non-negative and nailing the base
|
||||
* base offset of GPIO chips is deprecated. Please pass -1 as base to
|
||||
* offset of GPIO chips is deprecated. Please pass -1 as base to
|
||||
* let gpiolib select the chip base in all possible cases. We want to
|
||||
* get rid of the static GPIO number space in the long run.
|
||||
* @ngpio: the number of GPIOs handled by this controller; the last GPIO
|
||||
|
|
|
|||
|
|
@ -230,6 +230,7 @@ struct hid_sensor_common {
|
|||
struct platform_device *pdev;
|
||||
unsigned usage_id;
|
||||
atomic_t data_ready;
|
||||
atomic_t user_requested_state;
|
||||
struct iio_trigger *trigger;
|
||||
struct hid_sensor_hub_attribute_info poll;
|
||||
struct hid_sensor_hub_attribute_info report_state;
|
||||
|
|
|
|||
|
|
@ -460,15 +460,14 @@ static inline spinlock_t *huge_pte_lockptr(struct hstate *h,
|
|||
return &mm->page_table_lock;
|
||||
}
|
||||
|
||||
static inline bool hugepages_supported(void)
|
||||
{
|
||||
/*
|
||||
* Some platform decide whether they support huge pages at boot
|
||||
* time. On these, such as powerpc, HPAGE_SHIFT is set to 0 when
|
||||
* there is no such support
|
||||
*/
|
||||
return HPAGE_SHIFT != 0;
|
||||
}
|
||||
#ifndef hugepages_supported
|
||||
/*
|
||||
* Some platform decide whether they support huge pages at boot
|
||||
* time. Some of them, such as powerpc, set HPAGE_SHIFT to 0
|
||||
* when there is no such support
|
||||
*/
|
||||
#define hugepages_supported() (HPAGE_SHIFT != 0)
|
||||
#endif
|
||||
|
||||
#else /* CONFIG_HUGETLB_PAGE */
|
||||
struct hstate {};
|
||||
|
|
|
|||
|
|
@ -282,68 +282,8 @@ void __init parse_early_param(void);
|
|||
void __init parse_early_options(char *cmdline);
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
/**
|
||||
* module_init() - driver initialization entry point
|
||||
* @x: function to be run at kernel boot time or module insertion
|
||||
*
|
||||
* module_init() will either be called during do_initcalls() (if
|
||||
* builtin) or at module insertion time (if a module). There can only
|
||||
* be one per module.
|
||||
*/
|
||||
#define module_init(x) __initcall(x);
|
||||
|
||||
/**
|
||||
* module_exit() - driver exit entry point
|
||||
* @x: function to be run when driver is removed
|
||||
*
|
||||
* module_exit() will wrap the driver clean-up code
|
||||
* with cleanup_module() when used with rmmod when
|
||||
* the driver is a module. If the driver is statically
|
||||
* compiled into the kernel, module_exit() has no effect.
|
||||
* There can only be one per module.
|
||||
*/
|
||||
#define module_exit(x) __exitcall(x);
|
||||
|
||||
#else /* MODULE */
|
||||
|
||||
/*
|
||||
* In most cases loadable modules do not need custom
|
||||
* initcall levels. There are still some valid cases where
|
||||
* a driver may be needed early if built in, and does not
|
||||
* matter when built as a loadable module. Like bus
|
||||
* snooping debug drivers.
|
||||
*/
|
||||
#define early_initcall(fn) module_init(fn)
|
||||
#define core_initcall(fn) module_init(fn)
|
||||
#define core_initcall_sync(fn) module_init(fn)
|
||||
#define postcore_initcall(fn) module_init(fn)
|
||||
#define postcore_initcall_sync(fn) module_init(fn)
|
||||
#define arch_initcall(fn) module_init(fn)
|
||||
#define subsys_initcall(fn) module_init(fn)
|
||||
#define subsys_initcall_sync(fn) module_init(fn)
|
||||
#define fs_initcall(fn) module_init(fn)
|
||||
#define fs_initcall_sync(fn) module_init(fn)
|
||||
#define rootfs_initcall(fn) module_init(fn)
|
||||
#define device_initcall(fn) module_init(fn)
|
||||
#define device_initcall_sync(fn) module_init(fn)
|
||||
#define late_initcall(fn) module_init(fn)
|
||||
#define late_initcall_sync(fn) module_init(fn)
|
||||
|
||||
#define console_initcall(fn) module_init(fn)
|
||||
#define security_initcall(fn) module_init(fn)
|
||||
|
||||
/* Each module must use one module_init(). */
|
||||
#define module_init(initfn) \
|
||||
static inline initcall_t __inittest(void) \
|
||||
{ return initfn; } \
|
||||
int init_module(void) __attribute__((alias(#initfn)));
|
||||
|
||||
/* This is only required if you want to be unloadable. */
|
||||
#define module_exit(exitfn) \
|
||||
static inline exitcall_t __exittest(void) \
|
||||
{ return exitfn; } \
|
||||
void cleanup_module(void) __attribute__((alias(#exitfn)));
|
||||
|
||||
#define __setup_param(str, unique_id, fn) /* nothing */
|
||||
#define __setup(str, func) /* nothing */
|
||||
#endif
|
||||
|
|
@ -351,24 +291,6 @@ void __init parse_early_options(char *cmdline);
|
|||
/* Data marked not to be saved by software suspend */
|
||||
#define __nosavedata __section(.data..nosave)
|
||||
|
||||
/* This means "can be init if no module support, otherwise module load
|
||||
may call it." */
|
||||
#ifdef CONFIG_MODULES
|
||||
#define __init_or_module
|
||||
#define __initdata_or_module
|
||||
#define __initconst_or_module
|
||||
#define __INIT_OR_MODULE .text
|
||||
#define __INITDATA_OR_MODULE .data
|
||||
#define __INITRODATA_OR_MODULE .section ".rodata","a",%progbits
|
||||
#else
|
||||
#define __init_or_module __init
|
||||
#define __initdata_or_module __initdata
|
||||
#define __initconst_or_module __initconst
|
||||
#define __INIT_OR_MODULE __INIT
|
||||
#define __INITDATA_OR_MODULE __INITDATA
|
||||
#define __INITRODATA_OR_MODULE __INITRODATA
|
||||
#endif /*CONFIG_MODULES*/
|
||||
|
||||
#ifdef MODULE
|
||||
#define __exit_p(x) x
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ extern int iommu_domain_set_attr(struct iommu_domain *domain, enum iommu_attr,
|
|||
void *data);
|
||||
struct device *iommu_device_create(struct device *parent, void *drvdata,
|
||||
const struct attribute_group **groups,
|
||||
const char *fmt, ...);
|
||||
const char *fmt, ...) __printf(4, 5);
|
||||
void iommu_device_destroy(struct device *dev);
|
||||
int iommu_device_link(struct device *dev, struct device *link);
|
||||
void iommu_device_unlink(struct device *dev, struct device *link);
|
||||
|
|
|
|||
|
|
@ -411,7 +411,8 @@ extern __printf(3, 0)
|
|||
int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
|
||||
extern __printf(2, 3)
|
||||
char *kasprintf(gfp_t gfp, const char *fmt, ...);
|
||||
extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
|
||||
extern __printf(2, 0)
|
||||
char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
|
||||
|
||||
extern __scanf(2, 3)
|
||||
int sscanf(const char *, const char *, ...);
|
||||
|
|
@ -679,10 +680,10 @@ do { \
|
|||
__ftrace_vprintk(_THIS_IP_, fmt, vargs); \
|
||||
} while (0)
|
||||
|
||||
extern int
|
||||
extern __printf(2, 0) int
|
||||
__ftrace_vbprintk(unsigned long ip, const char *fmt, va_list ap);
|
||||
|
||||
extern int
|
||||
extern __printf(2, 0) int
|
||||
__ftrace_vprintk(unsigned long ip, const char *fmt, va_list ap);
|
||||
|
||||
extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode);
|
||||
|
|
@ -702,7 +703,7 @@ int trace_printk(const char *fmt, ...)
|
|||
{
|
||||
return 0;
|
||||
}
|
||||
static inline int
|
||||
static __printf(1, 0) inline int
|
||||
ftrace_vprintk(const char *fmt, va_list ap)
|
||||
{
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -80,8 +80,9 @@ struct kobject {
|
|||
|
||||
extern __printf(2, 3)
|
||||
int kobject_set_name(struct kobject *kobj, const char *name, ...);
|
||||
extern int kobject_set_name_vargs(struct kobject *kobj, const char *fmt,
|
||||
va_list vargs);
|
||||
extern __printf(2, 0)
|
||||
int kobject_set_name_vargs(struct kobject *kobj, const char *fmt,
|
||||
va_list vargs);
|
||||
|
||||
static inline const char *kobject_name(const struct kobject *kobj)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -734,6 +734,24 @@ static inline bool kvm_arch_has_noncoherent_dma(struct kvm *kvm)
|
|||
return false;
|
||||
}
|
||||
#endif
|
||||
#ifdef __KVM_HAVE_ARCH_ASSIGNED_DEVICE
|
||||
void kvm_arch_start_assignment(struct kvm *kvm);
|
||||
void kvm_arch_end_assignment(struct kvm *kvm);
|
||||
bool kvm_arch_has_assigned_device(struct kvm *kvm);
|
||||
#else
|
||||
static inline void kvm_arch_start_assignment(struct kvm *kvm)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void kvm_arch_end_assignment(struct kvm *kvm)
|
||||
{
|
||||
}
|
||||
|
||||
static inline bool kvm_arch_has_assigned_device(struct kvm *kvm)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline wait_queue_head_t *kvm_arch_vcpu_wq(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -106,6 +106,6 @@ extern void enable_mmiotrace(void);
|
|||
extern void disable_mmiotrace(void);
|
||||
extern void mmio_trace_rw(struct mmiotrace_rw *rw);
|
||||
extern void mmio_trace_mapping(struct mmiotrace_map *map);
|
||||
extern int mmio_trace_printk(const char *fmt, va_list args);
|
||||
extern __printf(1, 0) int mmio_trace_printk(const char *fmt, va_list args);
|
||||
|
||||
#endif /* _LINUX_MMIOTRACE_H */
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
#include <linux/compiler.h>
|
||||
#include <linux/cache.h>
|
||||
#include <linux/kmod.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/elf.h>
|
||||
#include <linux/stringify.h>
|
||||
#include <linux/kobject.h>
|
||||
|
|
@ -71,6 +72,89 @@ extern struct module_attribute module_uevent;
|
|||
extern int init_module(void);
|
||||
extern void cleanup_module(void);
|
||||
|
||||
#ifndef MODULE
|
||||
/**
|
||||
* module_init() - driver initialization entry point
|
||||
* @x: function to be run at kernel boot time or module insertion
|
||||
*
|
||||
* module_init() will either be called during do_initcalls() (if
|
||||
* builtin) or at module insertion time (if a module). There can only
|
||||
* be one per module.
|
||||
*/
|
||||
#define module_init(x) __initcall(x);
|
||||
|
||||
/**
|
||||
* module_exit() - driver exit entry point
|
||||
* @x: function to be run when driver is removed
|
||||
*
|
||||
* module_exit() will wrap the driver clean-up code
|
||||
* with cleanup_module() when used with rmmod when
|
||||
* the driver is a module. If the driver is statically
|
||||
* compiled into the kernel, module_exit() has no effect.
|
||||
* There can only be one per module.
|
||||
*/
|
||||
#define module_exit(x) __exitcall(x);
|
||||
|
||||
#else /* MODULE */
|
||||
|
||||
/*
|
||||
* In most cases loadable modules do not need custom
|
||||
* initcall levels. There are still some valid cases where
|
||||
* a driver may be needed early if built in, and does not
|
||||
* matter when built as a loadable module. Like bus
|
||||
* snooping debug drivers.
|
||||
*/
|
||||
#define early_initcall(fn) module_init(fn)
|
||||
#define core_initcall(fn) module_init(fn)
|
||||
#define core_initcall_sync(fn) module_init(fn)
|
||||
#define postcore_initcall(fn) module_init(fn)
|
||||
#define postcore_initcall_sync(fn) module_init(fn)
|
||||
#define arch_initcall(fn) module_init(fn)
|
||||
#define subsys_initcall(fn) module_init(fn)
|
||||
#define subsys_initcall_sync(fn) module_init(fn)
|
||||
#define fs_initcall(fn) module_init(fn)
|
||||
#define fs_initcall_sync(fn) module_init(fn)
|
||||
#define rootfs_initcall(fn) module_init(fn)
|
||||
#define device_initcall(fn) module_init(fn)
|
||||
#define device_initcall_sync(fn) module_init(fn)
|
||||
#define late_initcall(fn) module_init(fn)
|
||||
#define late_initcall_sync(fn) module_init(fn)
|
||||
|
||||
#define console_initcall(fn) module_init(fn)
|
||||
#define security_initcall(fn) module_init(fn)
|
||||
|
||||
/* Each module must use one module_init(). */
|
||||
#define module_init(initfn) \
|
||||
static inline initcall_t __inittest(void) \
|
||||
{ return initfn; } \
|
||||
int init_module(void) __attribute__((alias(#initfn)));
|
||||
|
||||
/* This is only required if you want to be unloadable. */
|
||||
#define module_exit(exitfn) \
|
||||
static inline exitcall_t __exittest(void) \
|
||||
{ return exitfn; } \
|
||||
void cleanup_module(void) __attribute__((alias(#exitfn)));
|
||||
|
||||
#endif
|
||||
|
||||
/* This means "can be init if no module support, otherwise module load
|
||||
may call it." */
|
||||
#ifdef CONFIG_MODULES
|
||||
#define __init_or_module
|
||||
#define __initdata_or_module
|
||||
#define __initconst_or_module
|
||||
#define __INIT_OR_MODULE .text
|
||||
#define __INITDATA_OR_MODULE .data
|
||||
#define __INITRODATA_OR_MODULE .section ".rodata","a",%progbits
|
||||
#else
|
||||
#define __init_or_module __init
|
||||
#define __initdata_or_module __initdata
|
||||
#define __initconst_or_module __initconst
|
||||
#define __INIT_OR_MODULE __INIT
|
||||
#define __INITDATA_OR_MODULE __INITDATA
|
||||
#define __INITRODATA_OR_MODULE __INITRODATA
|
||||
#endif /*CONFIG_MODULES*/
|
||||
|
||||
/* Archs provide a method of finding the correct exception table. */
|
||||
struct exception_table_entry;
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ extern struct page_ext_operations page_owner_ops;
|
|||
extern void __reset_page_owner(struct page *page, unsigned int order);
|
||||
extern void __set_page_owner(struct page *page,
|
||||
unsigned int order, gfp_t gfp_mask);
|
||||
extern gfp_t __get_page_owner_gfp(struct page *page);
|
||||
|
||||
static inline void reset_page_owner(struct page *page, unsigned int order)
|
||||
{
|
||||
|
|
@ -25,6 +26,14 @@ static inline void set_page_owner(struct page *page,
|
|||
|
||||
__set_page_owner(page, order, gfp_mask);
|
||||
}
|
||||
|
||||
static inline gfp_t get_page_owner_gfp(struct page *page)
|
||||
{
|
||||
if (likely(!page_owner_inited))
|
||||
return 0;
|
||||
|
||||
return __get_page_owner_gfp(page);
|
||||
}
|
||||
#else
|
||||
static inline void reset_page_owner(struct page *page, unsigned int order)
|
||||
{
|
||||
|
|
@ -33,6 +42,10 @@ static inline void set_page_owner(struct page *page,
|
|||
unsigned int order, gfp_t gfp_mask)
|
||||
{
|
||||
}
|
||||
static inline gfp_t get_page_owner_gfp(struct page *page)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_PAGE_OWNER */
|
||||
#endif /* __LINUX_PAGE_OWNER_H */
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
* Arasan Compact Flash host controller platform data header file
|
||||
*
|
||||
* Copyright (C) 2011 ST Microelectronics
|
||||
* Viresh Kumar <viresh.linux@gmail.com>
|
||||
* Viresh Kumar <vireshk@kernel.org>
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ static inline __printf(1, 2) __cold
|
|||
void early_printk(const char *s, ...) { }
|
||||
#endif
|
||||
|
||||
typedef int(*printk_func_t)(const char *fmt, va_list args);
|
||||
typedef __printf(1, 0) int (*printk_func_t)(const char *fmt, va_list args);
|
||||
|
||||
#ifdef CONFIG_PRINTK
|
||||
asmlinkage __printf(5, 0)
|
||||
|
|
@ -166,7 +166,7 @@ char *log_buf_addr_get(void);
|
|||
u32 log_buf_len_get(void);
|
||||
void log_buf_kexec_setup(void);
|
||||
void __init setup_log_buf(int early);
|
||||
void dump_stack_set_arch_desc(const char *fmt, ...);
|
||||
__printf(1, 2) void dump_stack_set_arch_desc(const char *fmt, ...);
|
||||
void dump_stack_print_info(const char *log_lvl);
|
||||
void show_regs_print_info(const char *log_lvl);
|
||||
#else
|
||||
|
|
@ -217,7 +217,7 @@ static inline void setup_log_buf(int early)
|
|||
{
|
||||
}
|
||||
|
||||
static inline void dump_stack_set_arch_desc(const char *fmt, ...)
|
||||
static inline __printf(1, 2) void dump_stack_set_arch_desc(const char *fmt, ...)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1522,8 +1522,6 @@ struct task_struct {
|
|||
/* hung task detection */
|
||||
unsigned long last_switch_count;
|
||||
#endif
|
||||
/* CPU-specific state of this task */
|
||||
struct thread_struct thread;
|
||||
/* filesystem information */
|
||||
struct fs_struct *fs;
|
||||
/* open file information */
|
||||
|
|
@ -1778,8 +1776,22 @@ struct task_struct {
|
|||
unsigned long task_state_change;
|
||||
#endif
|
||||
int pagefault_disabled;
|
||||
/* CPU-specific state of this task */
|
||||
struct thread_struct thread;
|
||||
/*
|
||||
* WARNING: on x86, 'thread_struct' contains a variable-sized
|
||||
* structure. It *MUST* be at the end of 'task_struct'.
|
||||
*
|
||||
* Do not put anything below here!
|
||||
*/
|
||||
};
|
||||
|
||||
#ifdef CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT
|
||||
extern int arch_task_struct_size __read_mostly;
|
||||
#else
|
||||
# define arch_task_struct_size (sizeof(struct task_struct))
|
||||
#endif
|
||||
|
||||
/* Future-safe accessor for struct task_struct's cpus_allowed. */
|
||||
#define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue