Merge branch 'master'
This commit is contained in:
commit
c2cc87ca95
1852 changed files with 103804 additions and 64836 deletions
|
|
@ -40,6 +40,8 @@
|
|||
* bitmap_weight(src, nbits) Hamming Weight: number set bits
|
||||
* bitmap_shift_right(dst, src, n, nbits) *dst = *src >> n
|
||||
* bitmap_shift_left(dst, src, n, nbits) *dst = *src << n
|
||||
* bitmap_remap(dst, src, old, new, nbits) *dst = map(old, new)(src)
|
||||
* bitmap_bitremap(oldbit, old, new, nbits) newbit = map(old, new)(oldbit)
|
||||
* bitmap_scnprintf(buf, len, src, nbits) Print bitmap src to buf
|
||||
* bitmap_parse(ubuf, ulen, dst, nbits) Parse bitmap dst from user buf
|
||||
* bitmap_scnlistprintf(buf, len, src, nbits) Print bitmap src as list to buf
|
||||
|
|
@ -104,6 +106,10 @@ extern int bitmap_scnlistprintf(char *buf, unsigned int len,
|
|||
const unsigned long *src, int nbits);
|
||||
extern int bitmap_parselist(const char *buf, unsigned long *maskp,
|
||||
int nmaskbits);
|
||||
extern void bitmap_remap(unsigned long *dst, const unsigned long *src,
|
||||
const unsigned long *old, const unsigned long *new, int bits);
|
||||
extern int bitmap_bitremap(int oldbit,
|
||||
const unsigned long *old, const unsigned long *new, int bits);
|
||||
extern int bitmap_find_free_region(unsigned long *bitmap, int bits, int order);
|
||||
extern void bitmap_release_region(unsigned long *bitmap, int pos, int order);
|
||||
extern int bitmap_allocate_region(unsigned long *bitmap, int pos, int order);
|
||||
|
|
|
|||
|
|
@ -190,6 +190,7 @@ extern int buffer_heads_over_limit;
|
|||
*/
|
||||
int try_to_release_page(struct page * page, gfp_t gfp_mask);
|
||||
int block_invalidatepage(struct page *page, unsigned long offset);
|
||||
int do_invalidatepage(struct page *page, unsigned long offset);
|
||||
int block_write_full_page(struct page *page, get_block_t *get_block,
|
||||
struct writeback_control *wbc);
|
||||
int block_read_full_page(struct page*, get_block_t*);
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ struct cpu {
|
|||
};
|
||||
|
||||
extern int register_cpu(struct cpu *, int, struct node *);
|
||||
extern struct sys_device *get_cpu_sysdev(int cpu);
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
extern void unregister_cpu(struct cpu *, struct node *);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@
|
|||
#include <linux/completion.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/cpumask.h>
|
||||
#include <asm/div64.h>
|
||||
|
||||
#define CPUFREQ_NAME_LEN 16
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
* see bitmap_scnprintf() and bitmap_parse() in lib/bitmap.c.
|
||||
* For details of cpulist_scnprintf() and cpulist_parse(), see
|
||||
* bitmap_scnlistprintf() and bitmap_parselist(), also in bitmap.c.
|
||||
* For details of cpu_remap(), see bitmap_bitremap in lib/bitmap.c
|
||||
* For details of cpus_remap(), see bitmap_remap in lib/bitmap.c.
|
||||
*
|
||||
* The available cpumask operations are:
|
||||
*
|
||||
|
|
@ -50,6 +52,8 @@
|
|||
* int cpumask_parse(ubuf, ulen, mask) Parse ascii string as cpumask
|
||||
* int cpulist_scnprintf(buf, len, mask) Format cpumask as list for printing
|
||||
* int cpulist_parse(buf, map) Parse ascii string as cpulist
|
||||
* int cpu_remap(oldbit, old, new) newbit = map(old, new)(oldbit)
|
||||
* int cpus_remap(dst, src, old, new) *dst = map(old, new)(src)
|
||||
*
|
||||
* for_each_cpu_mask(cpu, mask) for-loop cpu over mask
|
||||
*
|
||||
|
|
@ -294,6 +298,22 @@ static inline int __cpulist_parse(const char *buf, cpumask_t *dstp, int nbits)
|
|||
return bitmap_parselist(buf, dstp->bits, nbits);
|
||||
}
|
||||
|
||||
#define cpu_remap(oldbit, old, new) \
|
||||
__cpu_remap((oldbit), &(old), &(new), NR_CPUS)
|
||||
static inline int __cpu_remap(int oldbit,
|
||||
const cpumask_t *oldp, const cpumask_t *newp, int nbits)
|
||||
{
|
||||
return bitmap_bitremap(oldbit, oldp->bits, newp->bits, nbits);
|
||||
}
|
||||
|
||||
#define cpus_remap(dst, src, old, new) \
|
||||
__cpus_remap(&(dst), &(src), &(old), &(new), NR_CPUS)
|
||||
static inline void __cpus_remap(cpumask_t *dstp, const cpumask_t *srcp,
|
||||
const cpumask_t *oldp, const cpumask_t *newp, int nbits)
|
||||
{
|
||||
bitmap_remap(dstp->bits, srcp->bits, oldp->bits, newp->bits, nbits);
|
||||
}
|
||||
|
||||
#if NR_CPUS > 1
|
||||
#define for_each_cpu_mask(cpu, mask) \
|
||||
for ((cpu) = first_cpu(mask); \
|
||||
|
|
|
|||
|
|
@ -396,32 +396,6 @@ extern struct device * get_device(struct device * dev);
|
|||
extern void put_device(struct device * dev);
|
||||
|
||||
|
||||
/* drivers/base/platform.c */
|
||||
|
||||
struct platform_device {
|
||||
const char * name;
|
||||
u32 id;
|
||||
struct device dev;
|
||||
u32 num_resources;
|
||||
struct resource * resource;
|
||||
};
|
||||
|
||||
#define to_platform_device(x) container_of((x), struct platform_device, dev)
|
||||
|
||||
extern int platform_device_register(struct platform_device *);
|
||||
extern void platform_device_unregister(struct platform_device *);
|
||||
|
||||
extern struct bus_type platform_bus_type;
|
||||
extern struct device platform_bus;
|
||||
|
||||
extern struct resource *platform_get_resource(struct platform_device *, unsigned int, unsigned int);
|
||||
extern int platform_get_irq(struct platform_device *, unsigned int);
|
||||
extern struct resource *platform_get_resource_byname(struct platform_device *, unsigned int, char *);
|
||||
extern int platform_get_irq_byname(struct platform_device *, char *);
|
||||
extern int platform_add_devices(struct platform_device **, int);
|
||||
|
||||
extern struct platform_device *platform_device_register_simple(char *, unsigned int, struct resource *, unsigned int);
|
||||
|
||||
/* drivers/base/power.c */
|
||||
extern void device_shutdown(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ struct dmi_device {
|
|||
void *device_data; /* Type specific data */
|
||||
};
|
||||
|
||||
#if defined(CONFIG_X86) && !defined(CONFIG_X86_64)
|
||||
#if defined(CONFIG_X86_32)
|
||||
|
||||
extern int dmi_check_system(struct dmi_system_id *list);
|
||||
extern char * dmi_get_system_info(int field);
|
||||
|
|
|
|||
|
|
@ -1,22 +1,18 @@
|
|||
/*
|
||||
* Copyright (c) 1995-2001,2004 Silicon Graphics, Inc. All Rights Reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of version 2.1 of the GNU Lesser General Public License
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public License
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||
* USA
|
||||
*
|
||||
* Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane,
|
||||
* Mountain View, CA 94043, USA, or: http://www.sgi.com
|
||||
* You should have received a copy of the GNU Lesset General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#ifndef _LINUX_DQBLK_XFS_H
|
||||
#define _LINUX_DQBLK_XFS_H
|
||||
|
|
@ -32,7 +28,8 @@
|
|||
|
||||
#define XQM_USRQUOTA 0 /* system call user quota type */
|
||||
#define XQM_GRPQUOTA 1 /* system call group quota type */
|
||||
#define XQM_MAXQUOTAS 2
|
||||
#define XQM_PRJQUOTA 2 /* system call project quota type */
|
||||
#define XQM_MAXQUOTAS 3
|
||||
|
||||
#define Q_XQUOTAON XQM_CMD(1) /* enable accounting/enforcement */
|
||||
#define Q_XQUOTAOFF XQM_CMD(2) /* disable accounting/enforcement */
|
||||
|
|
@ -40,6 +37,7 @@
|
|||
#define Q_XSETQLIM XQM_CMD(4) /* set disk limits */
|
||||
#define Q_XGETQSTAT XQM_CMD(5) /* get quota subsystem status */
|
||||
#define Q_XQUOTARM XQM_CMD(6) /* free disk space used by dquots */
|
||||
#define Q_XQUOTASYNC XQM_CMD(7) /* delalloc flush, updates dquots */
|
||||
|
||||
/*
|
||||
* fs_disk_quota structure:
|
||||
|
|
|
|||
|
|
@ -48,8 +48,10 @@ static inline void eth_copy_and_sum (struct sk_buff *dest,
|
|||
}
|
||||
|
||||
/**
|
||||
* is_zero_ether_addr - Determine if give Ethernet address is all
|
||||
* zeros.
|
||||
* is_zero_ether_addr - Determine if give Ethernet address is all zeros.
|
||||
* @addr: Pointer to a six-byte array containing the Ethernet address
|
||||
*
|
||||
* Return true if the address is all zeroes.
|
||||
*/
|
||||
static inline int is_zero_ether_addr(const u8 *addr)
|
||||
{
|
||||
|
|
@ -57,9 +59,7 @@ static inline int is_zero_ether_addr(const u8 *addr)
|
|||
}
|
||||
|
||||
/**
|
||||
* is_multicast_ether_addr - Determine if the given Ethernet address is a
|
||||
* multicast address.
|
||||
*
|
||||
* is_multicast_ether_addr - Determine if the Ethernet address is a multicast.
|
||||
* @addr: Pointer to a six-byte array containing the Ethernet address
|
||||
*
|
||||
* Return true if the address is a multicast address.
|
||||
|
|
@ -69,10 +69,15 @@ static inline int is_multicast_ether_addr(const u8 *addr)
|
|||
return ((addr[0] != 0xff) && (0x01 & addr[0]));
|
||||
}
|
||||
|
||||
/**
|
||||
* is_broadcast_ether_addr - Determine if the Ethernet address is broadcast
|
||||
* @addr: Pointer to a six-byte array containing the Ethernet address
|
||||
*
|
||||
* Return true if the address is the broadcast address.
|
||||
*/
|
||||
static inline int is_broadcast_ether_addr(const u8 *addr)
|
||||
{
|
||||
return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) &&
|
||||
(addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
|
||||
return (addr[0] & addr[1] & addr[2] & addr[3] & addr[4] & addr[5]) == 0xff;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -108,14 +113,14 @@ static inline void random_ether_addr(u8 *addr)
|
|||
/**
|
||||
* compare_ether_addr - Compare two Ethernet addresses
|
||||
* @addr1: Pointer to a six-byte array containing the Ethernet address
|
||||
* @addr2 Pointer other six-byte array containing the Ethernet address
|
||||
* @addr2: Pointer other six-byte array containing the Ethernet address
|
||||
*
|
||||
* Compare two ethernet addresses, returns 0 if equal
|
||||
*/
|
||||
static inline unsigned compare_ether_addr(const u8 *_a, const u8 *_b)
|
||||
static inline unsigned compare_ether_addr(const u8 *addr1, const u8 *addr2)
|
||||
{
|
||||
const u16 *a = (const u16 *) _a;
|
||||
const u16 *b = (const u16 *) _b;
|
||||
const u16 *a = (const u16 *) addr1;
|
||||
const u16 *b = (const u16 *) addr2;
|
||||
|
||||
BUILD_BUG_ON(ETH_ALEN != 6);
|
||||
return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) != 0;
|
||||
|
|
|
|||
|
|
@ -574,7 +574,14 @@ struct file_ra_state {
|
|||
#define RA_FLAG_INCACHE 0x02 /* file is already in cache */
|
||||
|
||||
struct file {
|
||||
struct list_head f_list;
|
||||
/*
|
||||
* fu_list becomes invalid after file_free is called and queued via
|
||||
* fu_rcuhead for RCU freeing
|
||||
*/
|
||||
union {
|
||||
struct list_head fu_list;
|
||||
struct rcu_head fu_rcuhead;
|
||||
} f_u;
|
||||
struct dentry *f_dentry;
|
||||
struct vfsmount *f_vfsmnt;
|
||||
struct file_operations *f_op;
|
||||
|
|
@ -598,7 +605,6 @@ struct file {
|
|||
spinlock_t f_ep_lock;
|
||||
#endif /* #ifdef CONFIG_EPOLL */
|
||||
struct address_space *f_mapping;
|
||||
struct rcu_head f_rcuhead;
|
||||
};
|
||||
extern spinlock_t files_lock;
|
||||
#define file_list_lock() spin_lock(&files_lock);
|
||||
|
|
|
|||
|
|
@ -47,16 +47,21 @@
|
|||
struct gianfar_platform_data {
|
||||
/* device specific information */
|
||||
u32 device_flags;
|
||||
u32 phy_reg_addr;
|
||||
|
||||
/* board specific information */
|
||||
u32 board_flags;
|
||||
u32 phy_flags;
|
||||
u32 phyid;
|
||||
u32 interruptPHY;
|
||||
const char *bus_id;
|
||||
u8 mac_addr[6];
|
||||
};
|
||||
|
||||
struct gianfar_mdio_data {
|
||||
/* device specific information */
|
||||
u32 paddr;
|
||||
|
||||
/* board specific information */
|
||||
int irq[32];
|
||||
};
|
||||
|
||||
/* Flags related to gianfar device features */
|
||||
#define FSL_GIANFAR_DEV_HAS_GIGABIT 0x00000001
|
||||
#define FSL_GIANFAR_DEV_HAS_COALESCE 0x00000002
|
||||
|
|
|
|||
|
|
@ -61,7 +61,6 @@ struct fuse_kstatfs {
|
|||
#define FATTR_SIZE (1 << 3)
|
||||
#define FATTR_ATIME (1 << 4)
|
||||
#define FATTR_MTIME (1 << 5)
|
||||
#define FATTR_CTIME (1 << 6)
|
||||
|
||||
/**
|
||||
* Flags returned by the OPEN request
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#include <asm/io.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/timer.h>
|
||||
|
||||
struct gameport {
|
||||
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ struct hd_struct {
|
|||
sector_t start_sect;
|
||||
sector_t nr_sects;
|
||||
struct kobject kobj;
|
||||
unsigned reads, read_sectors, writes, write_sectors;
|
||||
unsigned ios[2], sectors[2];
|
||||
int policy, partno;
|
||||
};
|
||||
|
||||
|
|
@ -89,10 +89,10 @@ struct hd_struct {
|
|||
#define GENHD_FL_SUPPRESS_PARTITION_INFO 32
|
||||
|
||||
struct disk_stats {
|
||||
unsigned read_sectors, write_sectors;
|
||||
unsigned reads, writes;
|
||||
unsigned read_merges, write_merges;
|
||||
unsigned read_ticks, write_ticks;
|
||||
unsigned sectors[2];
|
||||
unsigned ios[2];
|
||||
unsigned merges[2];
|
||||
unsigned ticks[2];
|
||||
unsigned io_ticks;
|
||||
unsigned time_in_queue;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include <linux/i2c-id.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/device.h> /* for struct device */
|
||||
#include <linux/sched.h> /* for completion */
|
||||
#include <asm/semaphore.h>
|
||||
|
||||
/* --- For i2c-isa ---------------------------------------------------- */
|
||||
|
|
|
|||
|
|
@ -25,10 +25,14 @@
|
|||
/* How many different OSM's are we allowing */
|
||||
#define I2O_MAX_DRIVERS 8
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/semaphore.h> /* Needed for MUTEX init macros */
|
||||
#include <linux/pci.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/workqueue.h> /* work_struct */
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/semaphore.h> /* Needed for MUTEX init macros */
|
||||
|
||||
/* message queue empty */
|
||||
#define I2O_QUEUE_EMPTY 0xffffffff
|
||||
|
|
|
|||
|
|
@ -307,7 +307,7 @@ struct sysinfo {
|
|||
char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */
|
||||
};
|
||||
|
||||
/* Force a compilation error if condition is false */
|
||||
/* Force a compilation error if condition is true */
|
||||
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@ extern spinlock_t key_serial_lock;
|
|||
#define KEY_WRITE 0x04 /* require permission to update / modify */
|
||||
#define KEY_SEARCH 0x08 /* require permission to search (keyring) or find (key) */
|
||||
#define KEY_LINK 0x10 /* require permission to link */
|
||||
#define KEY_ALL 0x1f /* all the above permissions */
|
||||
#define KEY_SETATTR 0x20 /* require permission to change attributes */
|
||||
#define KEY_ALL 0x3f /* all the above permissions */
|
||||
|
||||
/*
|
||||
* the keyring payload contains a list of the keys to which the keyring is
|
||||
|
|
|
|||
|
|
@ -40,28 +40,32 @@ struct key;
|
|||
#define KEY_POS_WRITE 0x04000000 /* possessor can update key payload / add link to keyring */
|
||||
#define KEY_POS_SEARCH 0x08000000 /* possessor can find a key in search / search a keyring */
|
||||
#define KEY_POS_LINK 0x10000000 /* possessor can create a link to a key/keyring */
|
||||
#define KEY_POS_ALL 0x1f000000
|
||||
#define KEY_POS_SETATTR 0x20000000 /* possessor can set key attributes */
|
||||
#define KEY_POS_ALL 0x3f000000
|
||||
|
||||
#define KEY_USR_VIEW 0x00010000 /* user permissions... */
|
||||
#define KEY_USR_READ 0x00020000
|
||||
#define KEY_USR_WRITE 0x00040000
|
||||
#define KEY_USR_SEARCH 0x00080000
|
||||
#define KEY_USR_LINK 0x00100000
|
||||
#define KEY_USR_ALL 0x001f0000
|
||||
#define KEY_USR_SETATTR 0x00200000
|
||||
#define KEY_USR_ALL 0x003f0000
|
||||
|
||||
#define KEY_GRP_VIEW 0x00000100 /* group permissions... */
|
||||
#define KEY_GRP_READ 0x00000200
|
||||
#define KEY_GRP_WRITE 0x00000400
|
||||
#define KEY_GRP_SEARCH 0x00000800
|
||||
#define KEY_GRP_LINK 0x00001000
|
||||
#define KEY_GRP_ALL 0x00001f00
|
||||
#define KEY_GRP_SETATTR 0x00002000
|
||||
#define KEY_GRP_ALL 0x00003f00
|
||||
|
||||
#define KEY_OTH_VIEW 0x00000001 /* third party permissions... */
|
||||
#define KEY_OTH_READ 0x00000002
|
||||
#define KEY_OTH_WRITE 0x00000004
|
||||
#define KEY_OTH_SEARCH 0x00000008
|
||||
#define KEY_OTH_LINK 0x00000010
|
||||
#define KEY_OTH_ALL 0x0000001f
|
||||
#define KEY_OTH_SETATTR 0x00000020
|
||||
#define KEY_OTH_ALL 0x0000003f
|
||||
|
||||
struct seq_file;
|
||||
struct user_struct;
|
||||
|
|
@ -119,6 +123,7 @@ struct key {
|
|||
struct key_type *type; /* type of key */
|
||||
struct rw_semaphore sem; /* change vs change sem */
|
||||
struct key_user *user; /* owner of this key */
|
||||
void *security; /* security data for this key */
|
||||
time_t expiry; /* time at which key expires (or 0) */
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
#ifdef __KERNEL__
|
||||
|
||||
#include <asm/semaphore.h>
|
||||
|
||||
typedef struct kobject *kobj_probe_t(dev_t, int *, void *);
|
||||
struct kobj_map;
|
||||
|
||||
|
|
|
|||
|
|
@ -69,6 +69,18 @@ void kthread_bind(struct task_struct *k, unsigned int cpu);
|
|||
* was never called. */
|
||||
int kthread_stop(struct task_struct *k);
|
||||
|
||||
/**
|
||||
* kthread_stop_sem: stop a thread created by kthread_create().
|
||||
* @k: thread created by kthread_create().
|
||||
* @s: semaphore that @k waits on while idle.
|
||||
*
|
||||
* Does essentially the same thing as kthread_stop() above, but wakes
|
||||
* @k by calling up(@s).
|
||||
*
|
||||
* Returns the result of threadfn(), or -EINTR if wake_up_process()
|
||||
* was never called. */
|
||||
int kthread_stop_sem(struct task_struct *k, struct semaphore *s);
|
||||
|
||||
/**
|
||||
* kthread_should_stop: should this kthread return now?
|
||||
*
|
||||
|
|
|
|||
|
|
@ -154,6 +154,7 @@ struct mempolicy *get_vma_policy(struct task_struct *task,
|
|||
|
||||
extern void numa_default_policy(void);
|
||||
extern void numa_policy_init(void);
|
||||
extern void numa_policy_rebind(const nodemask_t *old, const nodemask_t *new);
|
||||
extern struct mempolicy default_policy;
|
||||
|
||||
#else
|
||||
|
|
@ -226,6 +227,11 @@ static inline void numa_default_policy(void)
|
|||
{
|
||||
}
|
||||
|
||||
static inline void numa_policy_rebind(const nodemask_t *old,
|
||||
const nodemask_t *new)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* CONFIG_NUMA */
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
|
|
|||
|
|
@ -554,7 +554,9 @@ static inline void MODULE_PARM_(void) { }
|
|||
#ifdef MODULE
|
||||
/* DEPRECATED: Do not use. */
|
||||
#define MODULE_PARM(var,type) \
|
||||
struct obsolete_modparm __parm_##var __attribute__((section("__obsparm"))) = \
|
||||
extern struct obsolete_modparm __parm_##var \
|
||||
__attribute__((section("__obsparm"))); \
|
||||
struct obsolete_modparm __parm_##var = \
|
||||
{ __stringify(var), type, &MODULE_PARM_ }; \
|
||||
__MODULE_PARM_TYPE(var, type);
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -282,6 +282,17 @@ static inline u8 fat_attr(struct inode *inode)
|
|||
MSDOS_I(inode)->i_attrs;
|
||||
}
|
||||
|
||||
static inline unsigned char fat_checksum(const __u8 *name)
|
||||
{
|
||||
unsigned char s = name[0];
|
||||
s = (s<<7) + (s>>1) + name[1]; s = (s<<7) + (s>>1) + name[2];
|
||||
s = (s<<7) + (s>>1) + name[3]; s = (s<<7) + (s>>1) + name[4];
|
||||
s = (s<<7) + (s>>1) + name[5]; s = (s<<7) + (s>>1) + name[6];
|
||||
s = (s<<7) + (s>>1) + name[7]; s = (s<<7) + (s>>1) + name[8];
|
||||
s = (s<<7) + (s>>1) + name[9]; s = (s<<7) + (s>>1) + name[10];
|
||||
return s;
|
||||
}
|
||||
|
||||
static inline sector_t fat_clus_to_blknr(struct msdos_sb_info *sbi, int clus)
|
||||
{
|
||||
return ((sector_t)clus - FAT_START_ENT) * sbi->sec_per_clus
|
||||
|
|
|
|||
|
|
@ -8,7 +8,10 @@
|
|||
#include <linux/config.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
#include <linux/mtd/compatmac.h>
|
||||
|
||||
#include <asm/unaligned.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/io.h>
|
||||
|
|
|
|||
|
|
@ -68,7 +68,8 @@ struct arpt_entry_target
|
|||
u_int16_t target_size;
|
||||
|
||||
/* Used by userspace */
|
||||
char name[ARPT_FUNCTION_MAXNAMELEN];
|
||||
char name[ARPT_FUNCTION_MAXNAMELEN-1];
|
||||
u_int8_t revision;
|
||||
} user;
|
||||
struct {
|
||||
u_int16_t target_size;
|
||||
|
|
@ -148,7 +149,9 @@ struct arpt_entry
|
|||
|
||||
#define ARPT_SO_GET_INFO (ARPT_BASE_CTL)
|
||||
#define ARPT_SO_GET_ENTRIES (ARPT_BASE_CTL + 1)
|
||||
#define ARPT_SO_GET_MAX ARPT_SO_GET_ENTRIES
|
||||
/* #define ARPT_SO_GET_REVISION_MATCH (ARPT_BASE_CTL + 2)*/
|
||||
#define ARPT_SO_GET_REVISION_TARGET (ARPT_BASE_CTL + 3)
|
||||
#define ARPT_SO_GET_MAX ARPT_SO_GET_REVISION_TARGET
|
||||
|
||||
/* CONTINUE verdict for targets */
|
||||
#define ARPT_CONTINUE 0xFFFFFFFF
|
||||
|
|
@ -236,6 +239,15 @@ struct arpt_get_entries
|
|||
struct arpt_entry entrytable[0];
|
||||
};
|
||||
|
||||
/* The argument to ARPT_SO_GET_REVISION_*. Returns highest revision
|
||||
* kernel supports, if >= revision. */
|
||||
struct arpt_get_revision
|
||||
{
|
||||
char name[ARPT_FUNCTION_MAXNAMELEN-1];
|
||||
|
||||
u_int8_t revision;
|
||||
};
|
||||
|
||||
/* Standard return verdict, or do jump. */
|
||||
#define ARPT_STANDARD_TARGET ""
|
||||
/* Error verdict. */
|
||||
|
|
@ -274,7 +286,9 @@ struct arpt_target
|
|||
{
|
||||
struct list_head list;
|
||||
|
||||
const char name[ARPT_FUNCTION_MAXNAMELEN];
|
||||
const char name[ARPT_FUNCTION_MAXNAMELEN-1];
|
||||
|
||||
u_int8_t revision;
|
||||
|
||||
/* Returns verdict. */
|
||||
unsigned int (*target)(struct sk_buff **pskb,
|
||||
|
|
|
|||
|
|
@ -57,7 +57,8 @@ struct ip6t_entry_match
|
|||
u_int16_t match_size;
|
||||
|
||||
/* Used by userspace */
|
||||
char name[IP6T_FUNCTION_MAXNAMELEN];
|
||||
char name[IP6T_FUNCTION_MAXNAMELEN-1];
|
||||
u_int8_t revision;
|
||||
} user;
|
||||
struct {
|
||||
u_int16_t match_size;
|
||||
|
|
@ -80,7 +81,8 @@ struct ip6t_entry_target
|
|||
u_int16_t target_size;
|
||||
|
||||
/* Used by userspace */
|
||||
char name[IP6T_FUNCTION_MAXNAMELEN];
|
||||
char name[IP6T_FUNCTION_MAXNAMELEN-1];
|
||||
u_int8_t revision;
|
||||
} user;
|
||||
struct {
|
||||
u_int16_t target_size;
|
||||
|
|
@ -161,7 +163,9 @@ struct ip6t_entry
|
|||
|
||||
#define IP6T_SO_GET_INFO (IP6T_BASE_CTL)
|
||||
#define IP6T_SO_GET_ENTRIES (IP6T_BASE_CTL + 1)
|
||||
#define IP6T_SO_GET_MAX IP6T_SO_GET_ENTRIES
|
||||
#define IP6T_SO_GET_REVISION_MATCH (IP6T_BASE_CTL + 2)
|
||||
#define IP6T_SO_GET_REVISION_TARGET (IP6T_BASE_CTL + 3)
|
||||
#define IP6T_SO_GET_MAX IP6T_SO_GET_REVISION_TARGET
|
||||
|
||||
/* CONTINUE verdict for targets */
|
||||
#define IP6T_CONTINUE 0xFFFFFFFF
|
||||
|
|
@ -291,6 +295,15 @@ struct ip6t_get_entries
|
|||
struct ip6t_entry entrytable[0];
|
||||
};
|
||||
|
||||
/* The argument to IP6T_SO_GET_REVISION_*. Returns highest revision
|
||||
* kernel supports, if >= revision. */
|
||||
struct ip6t_get_revision
|
||||
{
|
||||
char name[IP6T_FUNCTION_MAXNAMELEN-1];
|
||||
|
||||
u_int8_t revision;
|
||||
};
|
||||
|
||||
/* Standard return verdict, or do jump. */
|
||||
#define IP6T_STANDARD_TARGET ""
|
||||
/* Error verdict. */
|
||||
|
|
@ -352,7 +365,9 @@ struct ip6t_match
|
|||
{
|
||||
struct list_head list;
|
||||
|
||||
const char name[IP6T_FUNCTION_MAXNAMELEN];
|
||||
const char name[IP6T_FUNCTION_MAXNAMELEN-1];
|
||||
|
||||
u_int8_t revision;
|
||||
|
||||
/* Return true or false: return FALSE and set *hotdrop = 1 to
|
||||
force immediate packet drop. */
|
||||
|
|
@ -387,7 +402,9 @@ struct ip6t_target
|
|||
{
|
||||
struct list_head list;
|
||||
|
||||
const char name[IP6T_FUNCTION_MAXNAMELEN];
|
||||
const char name[IP6T_FUNCTION_MAXNAMELEN-1];
|
||||
|
||||
u_int8_t revision;
|
||||
|
||||
/* Returns verdict. Argument order changed since 2.6.9, as this
|
||||
must now handle non-linear skbs, using skb_copy_bits and
|
||||
|
|
|
|||
|
|
@ -316,7 +316,7 @@ extern struct nfs_open_context *alloc_nfs_open_context(struct dentry *dentry, st
|
|||
extern struct nfs_open_context *get_nfs_open_context(struct nfs_open_context *ctx);
|
||||
extern void put_nfs_open_context(struct nfs_open_context *ctx);
|
||||
extern void nfs_file_set_open_context(struct file *filp, struct nfs_open_context *ctx);
|
||||
extern struct nfs_open_context *nfs_find_open_context(struct inode *inode, int mode);
|
||||
extern struct nfs_open_context *nfs_find_open_context(struct inode *inode, struct rpc_cred *cred, int mode);
|
||||
extern void nfs_file_clear_open_context(struct file *filp);
|
||||
|
||||
/* linux/net/ipv4/ipconfig.c: trims ip addr off front of name, too. */
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
* see bitmap_scnprintf() and bitmap_parse() in lib/bitmap.c.
|
||||
* For details of nodelist_scnprintf() and nodelist_parse(), see
|
||||
* bitmap_scnlistprintf() and bitmap_parselist(), also in bitmap.c.
|
||||
* For details of node_remap(), see bitmap_bitremap in lib/bitmap.c.
|
||||
* For details of nodes_remap(), see bitmap_remap in lib/bitmap.c.
|
||||
*
|
||||
* The available nodemask operations are:
|
||||
*
|
||||
|
|
@ -52,6 +54,8 @@
|
|||
* int nodemask_parse(ubuf, ulen, mask) Parse ascii string as nodemask
|
||||
* int nodelist_scnprintf(buf, len, mask) Format nodemask as list for printing
|
||||
* int nodelist_parse(buf, map) Parse ascii string as nodelist
|
||||
* int node_remap(oldbit, old, new) newbit = map(old, new)(oldbit)
|
||||
* int nodes_remap(dst, src, old, new) *dst = map(old, new)(dst)
|
||||
*
|
||||
* for_each_node_mask(node, mask) for-loop node over mask
|
||||
*
|
||||
|
|
@ -307,6 +311,22 @@ static inline int __nodelist_parse(const char *buf, nodemask_t *dstp, int nbits)
|
|||
return bitmap_parselist(buf, dstp->bits, nbits);
|
||||
}
|
||||
|
||||
#define node_remap(oldbit, old, new) \
|
||||
__node_remap((oldbit), &(old), &(new), MAX_NUMNODES)
|
||||
static inline int __node_remap(int oldbit,
|
||||
const nodemask_t *oldp, const nodemask_t *newp, int nbits)
|
||||
{
|
||||
return bitmap_bitremap(oldbit, oldp->bits, newp->bits, nbits);
|
||||
}
|
||||
|
||||
#define nodes_remap(dst, src, old, new) \
|
||||
__nodes_remap(&(dst), &(src), &(old), &(new), MAX_NUMNODES)
|
||||
static inline void __nodes_remap(nodemask_t *dstp, const nodemask_t *srcp,
|
||||
const nodemask_t *oldp, const nodemask_t *newp, int nbits)
|
||||
{
|
||||
bitmap_remap(dstp->bits, srcp->bits, oldp->bits, newp->bits, nbits);
|
||||
}
|
||||
|
||||
#if MAX_NUMNODES > 1
|
||||
#define for_each_node_mask(node, mask) \
|
||||
for ((node) = first_node(mask); \
|
||||
|
|
|
|||
|
|
@ -990,6 +990,10 @@
|
|||
#define PCI_DEVICE_ID_NVIDIA_CK8_AUDIO 0x008a
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_5 0x008c
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA 0x008e
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE_7800_GT 0x0090
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE_7800_GTX 0x0091
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE_GO_7800 0x0098
|
||||
#define PCI_DEVICE_ID_NVIDIA_GEFORCE_GO_7800_GTX 0x0099
|
||||
#define PCI_DEVICE_ID_NVIDIA_ITNT2 0x00A0
|
||||
#define PCI_DEVICE_ID_GEFORCE_6800A 0x00c1
|
||||
#define PCI_DEVICE_ID_GEFORCE_6800A_LE 0x00c2
|
||||
|
|
|
|||
40
include/linux/platform_device.h
Normal file
40
include/linux/platform_device.h
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
* platform_device.h - generic, centralized driver model
|
||||
*
|
||||
* Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org>
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*
|
||||
* See Documentation/driver-model/ for more information.
|
||||
*/
|
||||
|
||||
#ifndef _PLATFORM_DEVICE_H_
|
||||
#define _PLATFORM_DEVICE_H_
|
||||
|
||||
#include <linux/device.h>
|
||||
|
||||
struct platform_device {
|
||||
const char * name;
|
||||
u32 id;
|
||||
struct device dev;
|
||||
u32 num_resources;
|
||||
struct resource * resource;
|
||||
};
|
||||
|
||||
#define to_platform_device(x) container_of((x), struct platform_device, dev)
|
||||
|
||||
extern int platform_device_register(struct platform_device *);
|
||||
extern void platform_device_unregister(struct platform_device *);
|
||||
|
||||
extern struct bus_type platform_bus_type;
|
||||
extern struct device platform_bus;
|
||||
|
||||
extern struct resource *platform_get_resource(struct platform_device *, unsigned int, unsigned int);
|
||||
extern int platform_get_irq(struct platform_device *, unsigned int);
|
||||
extern struct resource *platform_get_resource_byname(struct platform_device *, unsigned int, char *);
|
||||
extern int platform_get_irq_byname(struct platform_device *, char *);
|
||||
extern int platform_add_devices(struct platform_device **, int);
|
||||
|
||||
extern struct platform_device *platform_device_register_simple(char *, unsigned int, struct resource *, unsigned int);
|
||||
|
||||
#endif /* _PLATFORM_DEVICE_H_ */
|
||||
|
|
@ -170,6 +170,7 @@ typedef int __bitwise suspend_disk_method_t;
|
|||
|
||||
struct pm_ops {
|
||||
suspend_disk_method_t pm_disk_mode;
|
||||
int (*valid)(suspend_state_t state);
|
||||
int (*prepare)(suspend_state_t state);
|
||||
int (*enter)(suspend_state_t state);
|
||||
int (*finish)(suspend_state_t state);
|
||||
|
|
|
|||
|
|
@ -275,6 +275,7 @@ static inline int rcu_pending(int cpu)
|
|||
extern void rcu_init(void);
|
||||
extern void rcu_check_callbacks(int cpu, int user);
|
||||
extern void rcu_restart_cpu(int cpu);
|
||||
extern long rcu_batches_completed(void);
|
||||
|
||||
/* Exported interfaces */
|
||||
extern void FASTCALL(call_rcu(struct rcu_head *head,
|
||||
|
|
|
|||
|
|
@ -940,7 +940,7 @@ extern int set_cpus_allowed(task_t *p, cpumask_t new_mask);
|
|||
#else
|
||||
static inline int set_cpus_allowed(task_t *p, cpumask_t new_mask)
|
||||
{
|
||||
if (!cpus_intersects(new_mask, cpu_online_map))
|
||||
if (!cpu_isset(0, new_mask))
|
||||
return -EINVAL;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1084,6 +1084,11 @@ extern int do_sigaltstack(const stack_t __user *, stack_t __user *, unsigned lon
|
|||
#define SEND_SIG_PRIV ((struct siginfo *) 1)
|
||||
#define SEND_SIG_FORCED ((struct siginfo *) 2)
|
||||
|
||||
static inline int is_si_special(const struct siginfo *info)
|
||||
{
|
||||
return info <= SEND_SIG_FORCED;
|
||||
}
|
||||
|
||||
/* True if we are on the alternate signal stack. */
|
||||
|
||||
static inline int on_sig_stack(unsigned long sp)
|
||||
|
|
@ -1211,7 +1216,7 @@ extern void unhash_process(struct task_struct *p);
|
|||
/*
|
||||
* Protects ->fs, ->files, ->mm, ->ptrace, ->group_info, ->comm, keyring
|
||||
* subscriptions and synchronises with wait4(). Also used in procfs. Also
|
||||
* pins the final release of task.io_context.
|
||||
* pins the final release of task.io_context. Also protects ->cpuset.
|
||||
*
|
||||
* Nests both inside and outside of read_lock(&tasklist_lock).
|
||||
* It must not be nested with write_lock_irq(&tasklist_lock),
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#include <linux/shm.h>
|
||||
#include <linux/msg.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/key.h>
|
||||
|
||||
struct ctl_table;
|
||||
|
||||
|
|
@ -385,6 +386,9 @@ struct swap_info_struct;
|
|||
* NULL to request the size of the buffer required. @size indicates
|
||||
* the size of @buffer in bytes. Note that @name is the remainder
|
||||
* of the attribute name after the security. prefix has been removed.
|
||||
* @err is the return value from the preceding fs getxattr call,
|
||||
* and can be used by the security module to determine whether it
|
||||
* should try and canonicalize the attribute value.
|
||||
* Return number of bytes used/required on success.
|
||||
* @inode_setsecurity:
|
||||
* Set the security label associated with @name for @inode from the
|
||||
|
|
@ -785,6 +789,27 @@ struct swap_info_struct;
|
|||
* @sk_free_security:
|
||||
* Deallocate security structure.
|
||||
*
|
||||
* Security hooks affecting all Key Management operations
|
||||
*
|
||||
* @key_alloc:
|
||||
* Permit allocation of a key and assign security data. Note that key does
|
||||
* not have a serial number assigned at this point.
|
||||
* @key points to the key.
|
||||
* Return 0 if permission is granted, -ve error otherwise.
|
||||
* @key_free:
|
||||
* Notification of destruction; free security data.
|
||||
* @key points to the key.
|
||||
* No return value.
|
||||
* @key_permission:
|
||||
* See whether a specific operational right is granted to a process on a
|
||||
* key.
|
||||
* @key_ref refers to the key (key pointer + possession attribute bit).
|
||||
* @context points to the process to provide the context against which to
|
||||
* evaluate the security data on the key.
|
||||
* @perm describes the combination of permissions required of this key.
|
||||
* Return 1 if permission granted, 0 if permission denied and -ve it the
|
||||
* normal permissions model should be effected.
|
||||
*
|
||||
* Security hooks affecting all System V IPC operations.
|
||||
*
|
||||
* @ipc_permission:
|
||||
|
|
@ -1091,7 +1116,7 @@ struct security_operations {
|
|||
int (*inode_getxattr) (struct dentry *dentry, char *name);
|
||||
int (*inode_listxattr) (struct dentry *dentry);
|
||||
int (*inode_removexattr) (struct dentry *dentry, char *name);
|
||||
int (*inode_getsecurity)(struct inode *inode, const char *name, void *buffer, size_t size);
|
||||
int (*inode_getsecurity)(struct inode *inode, const char *name, void *buffer, size_t size, int err);
|
||||
int (*inode_setsecurity)(struct inode *inode, const char *name, const void *value, size_t size, int flags);
|
||||
int (*inode_listsecurity)(struct inode *inode, char *buffer, size_t buffer_size);
|
||||
|
||||
|
|
@ -1213,6 +1238,17 @@ struct security_operations {
|
|||
int (*sk_alloc_security) (struct sock *sk, int family, gfp_t priority);
|
||||
void (*sk_free_security) (struct sock *sk);
|
||||
#endif /* CONFIG_SECURITY_NETWORK */
|
||||
|
||||
/* key management security hooks */
|
||||
#ifdef CONFIG_KEYS
|
||||
int (*key_alloc)(struct key *key);
|
||||
void (*key_free)(struct key *key);
|
||||
int (*key_permission)(key_ref_t key_ref,
|
||||
struct task_struct *context,
|
||||
key_perm_t perm);
|
||||
|
||||
#endif /* CONFIG_KEYS */
|
||||
|
||||
};
|
||||
|
||||
/* global variables */
|
||||
|
|
@ -1580,11 +1616,11 @@ static inline int security_inode_removexattr (struct dentry *dentry, char *name)
|
|||
return security_ops->inode_removexattr (dentry, name);
|
||||
}
|
||||
|
||||
static inline int security_inode_getsecurity(struct inode *inode, const char *name, void *buffer, size_t size)
|
||||
static inline int security_inode_getsecurity(struct inode *inode, const char *name, void *buffer, size_t size, int err)
|
||||
{
|
||||
if (unlikely (IS_PRIVATE (inode)))
|
||||
return 0;
|
||||
return security_ops->inode_getsecurity(inode, name, buffer, size);
|
||||
return security_ops->inode_getsecurity(inode, name, buffer, size, err);
|
||||
}
|
||||
|
||||
static inline int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags)
|
||||
|
|
@ -2222,7 +2258,7 @@ static inline int security_inode_removexattr (struct dentry *dentry, char *name)
|
|||
return cap_inode_removexattr(dentry, name);
|
||||
}
|
||||
|
||||
static inline int security_inode_getsecurity(struct inode *inode, const char *name, void *buffer, size_t size)
|
||||
static inline int security_inode_getsecurity(struct inode *inode, const char *name, void *buffer, size_t size, int err)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
|
@ -2761,5 +2797,45 @@ static inline void security_sk_free(struct sock *sk)
|
|||
}
|
||||
#endif /* CONFIG_SECURITY_NETWORK */
|
||||
|
||||
#ifdef CONFIG_KEYS
|
||||
#ifdef CONFIG_SECURITY
|
||||
static inline int security_key_alloc(struct key *key)
|
||||
{
|
||||
return security_ops->key_alloc(key);
|
||||
}
|
||||
|
||||
static inline void security_key_free(struct key *key)
|
||||
{
|
||||
security_ops->key_free(key);
|
||||
}
|
||||
|
||||
static inline int security_key_permission(key_ref_t key_ref,
|
||||
struct task_struct *context,
|
||||
key_perm_t perm)
|
||||
{
|
||||
return security_ops->key_permission(key_ref, context, perm);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static inline int security_key_alloc(struct key *key)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void security_key_free(struct key *key)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int security_key_permission(key_ref_t key_ref,
|
||||
struct task_struct *context,
|
||||
key_perm_t perm)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* CONFIG_KEYS */
|
||||
|
||||
#endif /* ! __LINUX_SECURITY_H */
|
||||
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
#define _LINUX_SERIAL_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/types.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
#define _LINUX_SERIAL_8250_H
|
||||
|
||||
#include <linux/serial_core.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
/*
|
||||
* This is the platform device platform_data structure
|
||||
|
|
|
|||
|
|
@ -39,8 +39,7 @@
|
|||
#define PORT_RSA 13
|
||||
#define PORT_NS16550A 14
|
||||
#define PORT_XSCALE 15
|
||||
#define PORT_IP3106 16
|
||||
#define PORT_MAX_8250 16 /* max port ID */
|
||||
#define PORT_MAX_8250 15 /* max port ID */
|
||||
|
||||
/*
|
||||
* ARM specific type numbers. These are not currently guaranteed
|
||||
|
|
@ -118,7 +117,9 @@
|
|||
#define PORT_M32R_SIO 68
|
||||
|
||||
/*Digi jsm */
|
||||
#define PORT_JSM 65
|
||||
#define PORT_JSM 69
|
||||
|
||||
#define PORT_IP3106 70
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@
|
|||
|
||||
struct sigqueue {
|
||||
struct list_head list;
|
||||
spinlock_t *lock;
|
||||
int flags;
|
||||
siginfo_t info;
|
||||
struct user_struct *user;
|
||||
|
|
|
|||
|
|
@ -171,23 +171,42 @@ extern int __lockfunc generic__raw_read_trylock(raw_rwlock_t *lock);
|
|||
#define write_lock_irq(lock) _write_lock_irq(lock)
|
||||
#define write_lock_bh(lock) _write_lock_bh(lock)
|
||||
|
||||
#define spin_unlock(lock) _spin_unlock(lock)
|
||||
#define write_unlock(lock) _write_unlock(lock)
|
||||
#define read_unlock(lock) _read_unlock(lock)
|
||||
/*
|
||||
* We inline the unlock functions in the nondebug case:
|
||||
*/
|
||||
#if defined(CONFIG_DEBUG_SPINLOCK) || defined(CONFIG_PREEMPT) || !defined(CONFIG_SMP)
|
||||
# define spin_unlock(lock) _spin_unlock(lock)
|
||||
# define read_unlock(lock) _read_unlock(lock)
|
||||
# define write_unlock(lock) _write_unlock(lock)
|
||||
#else
|
||||
# define spin_unlock(lock) __raw_spin_unlock(&(lock)->raw_lock)
|
||||
# define read_unlock(lock) __raw_read_unlock(&(lock)->raw_lock)
|
||||
# define write_unlock(lock) __raw_write_unlock(&(lock)->raw_lock)
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_DEBUG_SPINLOCK) || defined(CONFIG_PREEMPT) || !defined(CONFIG_SMP)
|
||||
# define spin_unlock_irq(lock) _spin_unlock_irq(lock)
|
||||
# define read_unlock_irq(lock) _read_unlock_irq(lock)
|
||||
# define write_unlock_irq(lock) _write_unlock_irq(lock)
|
||||
#else
|
||||
# define spin_unlock_irq(lock) \
|
||||
do { __raw_spin_unlock(&(lock)->raw_lock); local_irq_enable(); } while (0)
|
||||
# define read_unlock_irq(lock) \
|
||||
do { __raw_read_unlock(&(lock)->raw_lock); local_irq_enable(); } while (0)
|
||||
# define write_unlock_irq(lock) \
|
||||
do { __raw_write_unlock(&(lock)->raw_lock); local_irq_enable(); } while (0)
|
||||
#endif
|
||||
|
||||
#define spin_unlock_irqrestore(lock, flags) \
|
||||
_spin_unlock_irqrestore(lock, flags)
|
||||
#define spin_unlock_irq(lock) _spin_unlock_irq(lock)
|
||||
#define spin_unlock_bh(lock) _spin_unlock_bh(lock)
|
||||
|
||||
#define read_unlock_irqrestore(lock, flags) \
|
||||
_read_unlock_irqrestore(lock, flags)
|
||||
#define read_unlock_irq(lock) _read_unlock_irq(lock)
|
||||
#define read_unlock_bh(lock) _read_unlock_bh(lock)
|
||||
|
||||
#define write_unlock_irqrestore(lock, flags) \
|
||||
_write_unlock_irqrestore(lock, flags)
|
||||
#define write_unlock_irq(lock) _write_unlock_irq(lock)
|
||||
#define write_unlock_bh(lock) _write_unlock_bh(lock)
|
||||
|
||||
#define spin_trylock_bh(lock) __cond_lock(_spin_trylock_bh(lock))
|
||||
|
|
|
|||
|
|
@ -71,7 +71,12 @@ void restore_processor_state(void);
|
|||
struct saved_context;
|
||||
void __save_processor_state(struct saved_context *ctxt);
|
||||
void __restore_processor_state(struct saved_context *ctxt);
|
||||
extern unsigned long get_usable_page(gfp_t gfp_mask);
|
||||
extern void free_eaten_memory(void);
|
||||
unsigned long get_safe_page(gfp_t gfp_mask);
|
||||
|
||||
/*
|
||||
* XXX: We try to keep some more pages free so that I/O operations succeed
|
||||
* without paging. Might this be more?
|
||||
*/
|
||||
#define PAGES_FOR_IO 512
|
||||
|
||||
#endif /* _LINUX_SWSUSP_H */
|
||||
|
|
|
|||
|
|
@ -491,6 +491,7 @@ asmlinkage long sys_nfsservctl(int cmd,
|
|||
asmlinkage long sys_syslog(int type, char __user *buf, int len);
|
||||
asmlinkage long sys_uselib(const char __user *library);
|
||||
asmlinkage long sys_ni_syscall(void);
|
||||
asmlinkage long sys_ptrace(long request, long pid, long addr, long data);
|
||||
|
||||
asmlinkage long sys_add_key(const char __user *_type,
|
||||
const char __user *_description,
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
struct ts_config;
|
||||
|
||||
|
|
|
|||
|
|
@ -12,16 +12,12 @@ struct timer_list {
|
|||
struct list_head entry;
|
||||
unsigned long expires;
|
||||
|
||||
unsigned long magic;
|
||||
|
||||
void (*function)(unsigned long);
|
||||
unsigned long data;
|
||||
|
||||
struct timer_base_s *base;
|
||||
};
|
||||
|
||||
#define TIMER_MAGIC 0x4b87ad6e
|
||||
|
||||
extern struct timer_base_s __init_timer_base;
|
||||
|
||||
#define TIMER_INITIALIZER(_function, _expires, _data) { \
|
||||
|
|
@ -29,7 +25,6 @@ extern struct timer_base_s __init_timer_base;
|
|||
.expires = (_expires), \
|
||||
.data = (_data), \
|
||||
.base = &__init_timer_base, \
|
||||
.magic = TIMER_MAGIC, \
|
||||
}
|
||||
|
||||
#define DEFINE_TIMER(_name, _function, _expires, _data) \
|
||||
|
|
@ -38,6 +33,15 @@ extern struct timer_base_s __init_timer_base;
|
|||
|
||||
void fastcall init_timer(struct timer_list * timer);
|
||||
|
||||
static inline void setup_timer(struct timer_list * timer,
|
||||
void (*function)(unsigned long),
|
||||
unsigned long data)
|
||||
{
|
||||
timer->function = function;
|
||||
timer->data = data;
|
||||
init_timer(timer);
|
||||
}
|
||||
|
||||
/***
|
||||
* timer_pending - is a timer pending?
|
||||
* @timer: the timer in question
|
||||
|
|
@ -74,8 +78,9 @@ extern unsigned long next_timer_interrupt(void);
|
|||
* Timers with an ->expired field in the past will be executed in the next
|
||||
* timer tick.
|
||||
*/
|
||||
static inline void add_timer(struct timer_list * timer)
|
||||
static inline void add_timer(struct timer_list *timer)
|
||||
{
|
||||
BUG_ON(timer_pending(timer));
|
||||
__mod_timer(timer, timer->expires);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -282,6 +282,13 @@ static inline int ntp_synced(void)
|
|||
return !(time_status & STA_UNSYNC);
|
||||
}
|
||||
|
||||
/* Required to safely shift negative values */
|
||||
#define shift_right(x, s) ({ \
|
||||
__typeof__(x) __x = (x); \
|
||||
__typeof__(s) __s = (s); \
|
||||
__x < 0 ? -(-__x >> __s) : __x >> __s; \
|
||||
})
|
||||
|
||||
|
||||
#ifdef CONFIG_TIME_INTERPOLATION
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
|
||||
#include <linux/zlib.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/kernel.h>
|
||||
|
||||
typedef unsigned char uch;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue