mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 13:44:26 -04:00
Merge ../linux-2.6
This commit is contained in:
commit
50cb993ea6
2056 changed files with 74777 additions and 46171 deletions
|
|
@ -189,7 +189,6 @@ unifdef-y += connector.h
|
|||
unifdef-y += cuda.h
|
||||
unifdef-y += cyclades.h
|
||||
unifdef-y += dccp.h
|
||||
unifdef-y += dirent.h
|
||||
unifdef-y += dlm.h
|
||||
unifdef-y += dlm_plock.h
|
||||
unifdef-y += edd.h
|
||||
|
|
@ -256,7 +255,9 @@ unifdef-y += kd.h
|
|||
unifdef-y += kernelcapi.h
|
||||
unifdef-y += kernel.h
|
||||
unifdef-y += keyboard.h
|
||||
ifneq ($(wildcard $(srctree)/include/asm-$(SRCARCH)/kvm.h),)
|
||||
unifdef-y += kvm.h
|
||||
endif
|
||||
unifdef-y += llc.h
|
||||
unifdef-y += loop.h
|
||||
unifdef-y += lp.h
|
||||
|
|
|
|||
|
|
@ -120,17 +120,20 @@ struct acct_v3
|
|||
struct vfsmount;
|
||||
struct super_block;
|
||||
struct pacct_struct;
|
||||
struct pid_namespace;
|
||||
extern void acct_auto_close_mnt(struct vfsmount *m);
|
||||
extern void acct_auto_close(struct super_block *sb);
|
||||
extern void acct_init_pacct(struct pacct_struct *pacct);
|
||||
extern void acct_collect(long exitcode, int group_dead);
|
||||
extern void acct_process(void);
|
||||
extern void acct_exit_ns(struct pid_namespace *);
|
||||
#else
|
||||
#define acct_auto_close_mnt(x) do { } while (0)
|
||||
#define acct_auto_close(x) do { } while (0)
|
||||
#define acct_init_pacct(x) do { } while (0)
|
||||
#define acct_collect(x,y) do { } while (0)
|
||||
#define acct_process() do { } while (0)
|
||||
#define acct_exit_ns(ns) do { } while (0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -236,6 +236,7 @@ int acpi_check_mem_region(resource_size_t start, resource_size_t n,
|
|||
const char *name);
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
void __init acpi_no_s4_hw_signature(void);
|
||||
void __init acpi_old_suspend_ordering(void);
|
||||
#endif /* CONFIG_PM_SLEEP */
|
||||
#else /* CONFIG_ACPI */
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
#include <linux/uio.h>
|
||||
|
||||
#include <asm/atomic.h>
|
||||
#include <linux/uio.h>
|
||||
|
||||
#define AIO_MAXSEGS 4
|
||||
#define AIO_KIOGRP_NR_ATOMIC 8
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
#define _LINUX_ANON_INODES_H
|
||||
|
||||
int anon_inode_getfd(const char *name, const struct file_operations *fops,
|
||||
void *priv);
|
||||
void *priv, int flags);
|
||||
|
||||
#endif /* _LINUX_ANON_INODES_H */
|
||||
|
||||
|
|
|
|||
43
include/linux/atmel-pwm-bl.h
Normal file
43
include/linux/atmel-pwm-bl.h
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* Copyright (C) 2007 Atmel Corporation
|
||||
*
|
||||
* Driver for the AT32AP700X PS/2 controller (PSIF).
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 as published
|
||||
* by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __INCLUDE_ATMEL_PWM_BL_H
|
||||
#define __INCLUDE_ATMEL_PWM_BL_H
|
||||
|
||||
/**
|
||||
* struct atmel_pwm_bl_platform_data
|
||||
* @pwm_channel: which PWM channel in the PWM module to use.
|
||||
* @pwm_frequency: PWM frequency to generate, the driver will try to be as
|
||||
* close as the prescaler allows.
|
||||
* @pwm_compare_max: value to use in the PWM channel compare register.
|
||||
* @pwm_duty_max: maximum duty cycle value, must be less than or equal to
|
||||
* pwm_compare_max.
|
||||
* @pwm_duty_min: minimum duty cycle value, must be less than pwm_duty_max.
|
||||
* @pwm_active_low: set to one if the low part of the PWM signal increases the
|
||||
* brightness of the backlight.
|
||||
* @gpio_on: GPIO line to control the backlight on/off, set to -1 if not used.
|
||||
* @on_active_low: set to one if the on/off signal is on when GPIO is low.
|
||||
*
|
||||
* This struct must be added to the platform device in the board code. It is
|
||||
* used by the atmel-pwm-bl driver to setup the GPIO to control on/off and the
|
||||
* PWM device.
|
||||
*/
|
||||
struct atmel_pwm_bl_platform_data {
|
||||
unsigned int pwm_channel;
|
||||
unsigned int pwm_frequency;
|
||||
unsigned int pwm_compare_max;
|
||||
unsigned int pwm_duty_max;
|
||||
unsigned int pwm_duty_min;
|
||||
unsigned int pwm_active_low;
|
||||
int gpio_on;
|
||||
unsigned int on_active_low;
|
||||
};
|
||||
|
||||
#endif /* __INCLUDE_ATMEL_PWM_BL_H */
|
||||
|
|
@ -286,7 +286,6 @@
|
|||
#define AUDIT_ARCH_SHEL64 (EM_SH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_SPARC (EM_SPARC)
|
||||
#define AUDIT_ARCH_SPARC64 (EM_SPARCV9|__AUDIT_ARCH_64BIT)
|
||||
#define AUDIT_ARCH_V850 (EM_V850|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
|
||||
#define AUDIT_PERM_EXEC 1
|
||||
|
|
|
|||
|
|
@ -98,8 +98,6 @@ union autofs_v5_packet_union {
|
|||
#define AUTOFS_IOC_EXPIRE_INDIRECT AUTOFS_IOC_EXPIRE_MULTI
|
||||
#define AUTOFS_IOC_EXPIRE_DIRECT AUTOFS_IOC_EXPIRE_MULTI
|
||||
#define AUTOFS_IOC_PROTOSUBVER _IOR(0x93,0x67,int)
|
||||
#define AUTOFS_IOC_ASKREGHOST _IOR(0x93,0x68,int)
|
||||
#define AUTOFS_IOC_TOGGLEREGHOST _IOR(0x93,0x69,int)
|
||||
#define AUTOFS_IOC_ASKUMOUNT _IOR(0x93,0x70,int)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -26,9 +26,13 @@
|
|||
|
||||
#define AT_SECURE 23 /* secure mode boolean */
|
||||
|
||||
#define AT_BASE_PLATFORM 24 /* string identifying real platform, may
|
||||
* differ from AT_PLATFORM. */
|
||||
|
||||
#define AT_EXECFN 31 /* filename of program */
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#define AT_VECTOR_SIZE_BASE 17 /* NEW_AUX_ENT entries in auxiliary table */
|
||||
#define AT_VECTOR_SIZE_BASE 18 /* NEW_AUX_ENT entries in auxiliary table */
|
||||
/* number of "#define AT_.*" above, minus {AT_NULL, AT_IGNORE, AT_NOTELF} */
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -10,8 +10,13 @@
|
|||
#ifndef _BCD_H
|
||||
#define _BCD_H
|
||||
|
||||
#define BCD2BIN(val) (((val) & 0x0f) + ((val)>>4)*10)
|
||||
#define BIN2BCD(val) ((((val)/10)<<4) + (val)%10)
|
||||
#include <linux/compiler.h>
|
||||
|
||||
unsigned bcd2bin(unsigned char val) __attribute_const__;
|
||||
unsigned char bin2bcd(unsigned val) __attribute_const__;
|
||||
|
||||
#define BCD2BIN(val) bcd2bin(val)
|
||||
#define BIN2BCD(val) bin2bcd(val)
|
||||
|
||||
/* backwards compat */
|
||||
#define BCD_TO_BIN(val) ((val)=BCD2BIN(val))
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ struct linux_binprm{
|
|||
misc_bang:1;
|
||||
struct file * file;
|
||||
int e_uid, e_gid;
|
||||
kernel_cap_t cap_inheritable, cap_permitted;
|
||||
kernel_cap_t cap_post_exec_permitted;
|
||||
bool cap_effective;
|
||||
void *security;
|
||||
int argc, envc;
|
||||
|
|
|
|||
|
|
@ -28,52 +28,73 @@ extern unsigned long saved_max_pfn;
|
|||
* memory pages (including holes) on the node.
|
||||
*/
|
||||
typedef struct bootmem_data {
|
||||
unsigned long node_boot_start;
|
||||
unsigned long node_min_pfn;
|
||||
unsigned long node_low_pfn;
|
||||
void *node_bootmem_map;
|
||||
unsigned long last_offset;
|
||||
unsigned long last_pos;
|
||||
unsigned long last_success; /* Previous allocation point. To speed
|
||||
* up searching */
|
||||
unsigned long last_end_off;
|
||||
unsigned long hint_idx;
|
||||
struct list_head list;
|
||||
} bootmem_data_t;
|
||||
|
||||
extern bootmem_data_t bootmem_node_data[];
|
||||
|
||||
extern unsigned long bootmem_bootmap_pages(unsigned long);
|
||||
|
||||
extern unsigned long init_bootmem_node(pg_data_t *pgdat,
|
||||
unsigned long freepfn,
|
||||
unsigned long startpfn,
|
||||
unsigned long endpfn);
|
||||
extern unsigned long init_bootmem(unsigned long addr, unsigned long memend);
|
||||
|
||||
extern unsigned long free_all_bootmem_node(pg_data_t *pgdat);
|
||||
extern unsigned long free_all_bootmem(void);
|
||||
|
||||
extern void free_bootmem_node(pg_data_t *pgdat,
|
||||
unsigned long addr,
|
||||
unsigned long size);
|
||||
extern void free_bootmem(unsigned long addr, unsigned long size);
|
||||
extern void *__alloc_bootmem(unsigned long size,
|
||||
|
||||
/*
|
||||
* Flags for reserve_bootmem (also if CONFIG_HAVE_ARCH_BOOTMEM_NODE,
|
||||
* the architecture-specific code should honor this).
|
||||
*
|
||||
* If flags is 0, then the return value is always 0 (success). If
|
||||
* flags contains BOOTMEM_EXCLUSIVE, then -EBUSY is returned if the
|
||||
* memory already was reserved.
|
||||
*/
|
||||
#define BOOTMEM_DEFAULT 0
|
||||
#define BOOTMEM_EXCLUSIVE (1<<0)
|
||||
|
||||
extern int reserve_bootmem_node(pg_data_t *pgdat,
|
||||
unsigned long physaddr,
|
||||
unsigned long size,
|
||||
int flags);
|
||||
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
|
||||
extern int reserve_bootmem(unsigned long addr, unsigned long size, int flags);
|
||||
#endif
|
||||
|
||||
extern void *__alloc_bootmem_nopanic(unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern void *__alloc_bootmem_nopanic(unsigned long size,
|
||||
extern void *__alloc_bootmem(unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern void *__alloc_bootmem_low(unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern void *__alloc_bootmem_node(pg_data_t *pgdat,
|
||||
unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern void *__alloc_bootmem_node_nopanic(pg_data_t *pgdat,
|
||||
unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,
|
||||
unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern void *__alloc_bootmem_core(struct bootmem_data *bdata,
|
||||
unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal,
|
||||
unsigned long limit);
|
||||
|
||||
/*
|
||||
* flags for reserve_bootmem (also if CONFIG_HAVE_ARCH_BOOTMEM_NODE,
|
||||
* the architecture-specific code should honor this)
|
||||
*/
|
||||
#define BOOTMEM_DEFAULT 0
|
||||
#define BOOTMEM_EXCLUSIVE (1<<0)
|
||||
|
||||
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
|
||||
/*
|
||||
* If flags is 0, then the return value is always 0 (success). If
|
||||
* flags contains BOOTMEM_EXCLUSIVE, then -EBUSY is returned if the
|
||||
* memory already was reserved.
|
||||
*/
|
||||
extern int reserve_bootmem(unsigned long addr, unsigned long size, int flags);
|
||||
#define alloc_bootmem(x) \
|
||||
__alloc_bootmem(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
|
||||
#define alloc_bootmem_low(x) \
|
||||
|
|
@ -82,31 +103,6 @@ extern int reserve_bootmem(unsigned long addr, unsigned long size, int flags);
|
|||
__alloc_bootmem(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
|
||||
#define alloc_bootmem_low_pages(x) \
|
||||
__alloc_bootmem_low(x, PAGE_SIZE, 0)
|
||||
#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
|
||||
|
||||
extern int reserve_bootmem_generic(unsigned long addr, unsigned long size,
|
||||
int flags);
|
||||
extern unsigned long free_all_bootmem(void);
|
||||
extern unsigned long free_all_bootmem_node(pg_data_t *pgdat);
|
||||
extern void *__alloc_bootmem_node(pg_data_t *pgdat,
|
||||
unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern unsigned long init_bootmem_node(pg_data_t *pgdat,
|
||||
unsigned long freepfn,
|
||||
unsigned long startpfn,
|
||||
unsigned long endpfn);
|
||||
extern int reserve_bootmem_node(pg_data_t *pgdat,
|
||||
unsigned long physaddr,
|
||||
unsigned long size,
|
||||
int flags);
|
||||
extern void free_bootmem_node(pg_data_t *pgdat,
|
||||
unsigned long addr,
|
||||
unsigned long size);
|
||||
extern void *alloc_bootmem_section(unsigned long size,
|
||||
unsigned long section_nr);
|
||||
|
||||
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
|
||||
#define alloc_bootmem_node(pgdat, x) \
|
||||
__alloc_bootmem_node(pgdat, x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
|
||||
#define alloc_bootmem_pages_node(pgdat, x) \
|
||||
|
|
@ -115,6 +111,12 @@ extern void *alloc_bootmem_section(unsigned long size,
|
|||
__alloc_bootmem_low_node(pgdat, x, PAGE_SIZE, 0)
|
||||
#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
|
||||
|
||||
extern int reserve_bootmem_generic(unsigned long addr, unsigned long size,
|
||||
int flags);
|
||||
|
||||
extern void *alloc_bootmem_section(unsigned long size,
|
||||
unsigned long section_nr);
|
||||
|
||||
#ifdef CONFIG_HAVE_ARCH_ALLOC_REMAP
|
||||
extern void *alloc_remap(int nid, unsigned long size);
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -94,12 +94,12 @@ static inline __u16 __be16_to_cpup(const __be16 *p)
|
|||
#define __le32_to_cpus(x) __swab32s((x))
|
||||
#define __cpu_to_le16s(x) __swab16s((x))
|
||||
#define __le16_to_cpus(x) __swab16s((x))
|
||||
#define __cpu_to_be64s(x) do {} while (0)
|
||||
#define __be64_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_be32s(x) do {} while (0)
|
||||
#define __be32_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_be16s(x) do {} while (0)
|
||||
#define __be16_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_be64s(x) do { (void)(x); } while (0)
|
||||
#define __be64_to_cpus(x) do { (void)(x); } while (0)
|
||||
#define __cpu_to_be32s(x) do { (void)(x); } while (0)
|
||||
#define __be32_to_cpus(x) do { (void)(x); } while (0)
|
||||
#define __cpu_to_be16s(x) do { (void)(x); } while (0)
|
||||
#define __be16_to_cpus(x) do { (void)(x); } while (0)
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/byteorder/generic.h>
|
||||
|
|
|
|||
|
|
@ -88,12 +88,12 @@ static inline __u16 __be16_to_cpup(const __be16 *p)
|
|||
{
|
||||
return __swab16p((__u16 *)p);
|
||||
}
|
||||
#define __cpu_to_le64s(x) do {} while (0)
|
||||
#define __le64_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_le32s(x) do {} while (0)
|
||||
#define __le32_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_le16s(x) do {} while (0)
|
||||
#define __le16_to_cpus(x) do {} while (0)
|
||||
#define __cpu_to_le64s(x) do { (void)(x); } while (0)
|
||||
#define __le64_to_cpus(x) do { (void)(x); } while (0)
|
||||
#define __cpu_to_le32s(x) do { (void)(x); } while (0)
|
||||
#define __le32_to_cpus(x) do { (void)(x); } while (0)
|
||||
#define __cpu_to_le16s(x) do { (void)(x); } while (0)
|
||||
#define __le16_to_cpus(x) do { (void)(x); } while (0)
|
||||
#define __cpu_to_be64s(x) __swab64s((x))
|
||||
#define __be64_to_cpus(x) __swab64s((x))
|
||||
#define __cpu_to_be32s(x) __swab32s((x))
|
||||
|
|
|
|||
|
|
@ -21,11 +21,13 @@
|
|||
struct cgroupfs_root;
|
||||
struct cgroup_subsys;
|
||||
struct inode;
|
||||
struct cgroup;
|
||||
|
||||
extern int cgroup_init_early(void);
|
||||
extern int cgroup_init(void);
|
||||
extern void cgroup_init_smp(void);
|
||||
extern void cgroup_lock(void);
|
||||
extern bool cgroup_lock_live_group(struct cgroup *cgrp);
|
||||
extern void cgroup_unlock(void);
|
||||
extern void cgroup_fork(struct task_struct *p);
|
||||
extern void cgroup_fork_callbacks(struct task_struct *p);
|
||||
|
|
@ -205,49 +207,63 @@ struct cftype {
|
|||
* subsystem, followed by a period */
|
||||
char name[MAX_CFTYPE_NAME];
|
||||
int private;
|
||||
int (*open) (struct inode *inode, struct file *file);
|
||||
ssize_t (*read) (struct cgroup *cgrp, struct cftype *cft,
|
||||
struct file *file,
|
||||
char __user *buf, size_t nbytes, loff_t *ppos);
|
||||
|
||||
/*
|
||||
* If non-zero, defines the maximum length of string that can
|
||||
* be passed to write_string; defaults to 64
|
||||
*/
|
||||
size_t max_write_len;
|
||||
|
||||
int (*open)(struct inode *inode, struct file *file);
|
||||
ssize_t (*read)(struct cgroup *cgrp, struct cftype *cft,
|
||||
struct file *file,
|
||||
char __user *buf, size_t nbytes, loff_t *ppos);
|
||||
/*
|
||||
* read_u64() is a shortcut for the common case of returning a
|
||||
* single integer. Use it in place of read()
|
||||
*/
|
||||
u64 (*read_u64) (struct cgroup *cgrp, struct cftype *cft);
|
||||
u64 (*read_u64)(struct cgroup *cgrp, struct cftype *cft);
|
||||
/*
|
||||
* read_s64() is a signed version of read_u64()
|
||||
*/
|
||||
s64 (*read_s64) (struct cgroup *cgrp, struct cftype *cft);
|
||||
s64 (*read_s64)(struct cgroup *cgrp, struct cftype *cft);
|
||||
/*
|
||||
* read_map() is used for defining a map of key/value
|
||||
* pairs. It should call cb->fill(cb, key, value) for each
|
||||
* entry. The key/value pairs (and their ordering) should not
|
||||
* change between reboots.
|
||||
*/
|
||||
int (*read_map) (struct cgroup *cont, struct cftype *cft,
|
||||
struct cgroup_map_cb *cb);
|
||||
int (*read_map)(struct cgroup *cont, struct cftype *cft,
|
||||
struct cgroup_map_cb *cb);
|
||||
/*
|
||||
* read_seq_string() is used for outputting a simple sequence
|
||||
* using seqfile.
|
||||
*/
|
||||
int (*read_seq_string) (struct cgroup *cont, struct cftype *cft,
|
||||
struct seq_file *m);
|
||||
int (*read_seq_string)(struct cgroup *cont, struct cftype *cft,
|
||||
struct seq_file *m);
|
||||
|
||||
ssize_t (*write) (struct cgroup *cgrp, struct cftype *cft,
|
||||
struct file *file,
|
||||
const char __user *buf, size_t nbytes, loff_t *ppos);
|
||||
ssize_t (*write)(struct cgroup *cgrp, struct cftype *cft,
|
||||
struct file *file,
|
||||
const char __user *buf, size_t nbytes, loff_t *ppos);
|
||||
|
||||
/*
|
||||
* write_u64() is a shortcut for the common case of accepting
|
||||
* a single integer (as parsed by simple_strtoull) from
|
||||
* userspace. Use in place of write(); return 0 or error.
|
||||
*/
|
||||
int (*write_u64) (struct cgroup *cgrp, struct cftype *cft, u64 val);
|
||||
int (*write_u64)(struct cgroup *cgrp, struct cftype *cft, u64 val);
|
||||
/*
|
||||
* write_s64() is a signed version of write_u64()
|
||||
*/
|
||||
int (*write_s64) (struct cgroup *cgrp, struct cftype *cft, s64 val);
|
||||
int (*write_s64)(struct cgroup *cgrp, struct cftype *cft, s64 val);
|
||||
|
||||
/*
|
||||
* write_string() is passed a nul-terminated kernelspace
|
||||
* buffer of maximum length determined by max_write_len.
|
||||
* Returns 0 or -ve error code.
|
||||
*/
|
||||
int (*write_string)(struct cgroup *cgrp, struct cftype *cft,
|
||||
const char *buffer);
|
||||
/*
|
||||
* trigger() callback can be used to get some kick from the
|
||||
* userspace, when the actual string written is not important
|
||||
|
|
@ -256,7 +272,7 @@ struct cftype {
|
|||
*/
|
||||
int (*trigger)(struct cgroup *cgrp, unsigned int event);
|
||||
|
||||
int (*release) (struct inode *inode, struct file *file);
|
||||
int (*release)(struct inode *inode, struct file *file);
|
||||
};
|
||||
|
||||
struct cgroup_scanner {
|
||||
|
|
@ -348,7 +364,8 @@ static inline struct cgroup* task_cgroup(struct task_struct *task,
|
|||
return task_subsys_state(task, subsys_id)->cgroup;
|
||||
}
|
||||
|
||||
int cgroup_clone(struct task_struct *tsk, struct cgroup_subsys *ss);
|
||||
int cgroup_clone(struct task_struct *tsk, struct cgroup_subsys *ss,
|
||||
char *nodename);
|
||||
|
||||
/* A cgroup_iter should be treated as an opaque object */
|
||||
struct cgroup_iter {
|
||||
|
|
|
|||
|
|
@ -199,28 +199,6 @@ typedef u_int32_t vuid_t;
|
|||
typedef u_int32_t vgid_t;
|
||||
#endif /*_VUID_T_ */
|
||||
|
||||
#ifdef CONFIG_CODA_FS_OLD_API
|
||||
struct CodaFid {
|
||||
u_int32_t opaque[3];
|
||||
};
|
||||
|
||||
static __inline__ ino_t coda_f2i(struct CodaFid *fid)
|
||||
{
|
||||
if ( ! fid )
|
||||
return 0;
|
||||
if (fid->opaque[1] == 0xfffffffe || fid->opaque[1] == 0xffffffff)
|
||||
return ((fid->opaque[0] << 20) | (fid->opaque[2] & 0xfffff));
|
||||
else
|
||||
return (fid->opaque[2] + (fid->opaque[1]<<10) + (fid->opaque[0]<<20));
|
||||
}
|
||||
|
||||
struct coda_cred {
|
||||
vuid_t cr_uid, cr_euid, cr_suid, cr_fsuid; /* Real, efftve, set, fs uid*/
|
||||
vgid_t cr_groupid, cr_egid, cr_sgid, cr_fsgid; /* same for groups */
|
||||
};
|
||||
|
||||
#else /* not defined(CONFIG_CODA_FS_OLD_API) */
|
||||
|
||||
struct CodaFid {
|
||||
u_int32_t opaque[4];
|
||||
};
|
||||
|
|
@ -228,8 +206,6 @@ struct CodaFid {
|
|||
#define coda_f2i(fid)\
|
||||
(fid ? (fid->opaque[3] ^ (fid->opaque[2]<<10) ^ (fid->opaque[1]<<20) ^ fid->opaque[0]) : 0)
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef _VENUS_VATTR_T_
|
||||
#define _VENUS_VATTR_T_
|
||||
/*
|
||||
|
|
@ -313,15 +289,7 @@ struct coda_statfs {
|
|||
|
||||
#define CIOC_KERNEL_VERSION _IOWR('c', 10, size_t)
|
||||
|
||||
#if 0
|
||||
#define CODA_KERNEL_VERSION 0 /* don't care about kernel version number */
|
||||
#define CODA_KERNEL_VERSION 1 /* The old venus 4.6 compatible interface */
|
||||
#endif
|
||||
#ifdef CONFIG_CODA_FS_OLD_API
|
||||
#define CODA_KERNEL_VERSION 2 /* venus_lookup got an extra parameter */
|
||||
#else
|
||||
#define CODA_KERNEL_VERSION 3 /* 128-bit file identifiers */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Venus <-> Coda RPC arguments
|
||||
|
|
@ -329,16 +297,9 @@ struct coda_statfs {
|
|||
struct coda_in_hdr {
|
||||
u_int32_t opcode;
|
||||
u_int32_t unique; /* Keep multiple outstanding msgs distinct */
|
||||
#ifdef CONFIG_CODA_FS_OLD_API
|
||||
u_int16_t pid; /* Common to all */
|
||||
u_int16_t pgid; /* Common to all */
|
||||
u_int16_t sid; /* Common to all */
|
||||
struct coda_cred cred; /* Common to all */
|
||||
#else
|
||||
pid_t pid;
|
||||
pid_t pgid;
|
||||
vuid_t uid;
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Really important that opcode and unique are 1st two fields! */
|
||||
|
|
@ -613,11 +574,7 @@ struct coda_vget_out {
|
|||
/* CODA_PURGEUSER is a venus->kernel call */
|
||||
struct coda_purgeuser_out {
|
||||
struct coda_out_hdr oh;
|
||||
#ifdef CONFIG_CODA_FS_OLD_API
|
||||
struct coda_cred cred;
|
||||
#else
|
||||
vuid_t uid;
|
||||
#endif
|
||||
};
|
||||
|
||||
/* coda_zapfile: */
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ extern const struct file_operations coda_ioctl_operations;
|
|||
/* operations shared over more than one file */
|
||||
int coda_open(struct inode *i, struct file *f);
|
||||
int coda_release(struct inode *i, struct file *f);
|
||||
int coda_permission(struct inode *inode, int mask, struct nameidata *nd);
|
||||
int coda_permission(struct inode *inode, int mask);
|
||||
int coda_revalidate_inode(struct dentry *);
|
||||
int coda_getattr(struct vfsmount *, struct dentry *, struct kstat *);
|
||||
int coda_setattr(struct dentry *, struct iattr *);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@
|
|||
*
|
||||
* Interface between console.c, selection.c and consolemap.c
|
||||
*/
|
||||
#ifndef __LINUX_CONSOLEMAP_H__
|
||||
#define __LINUX_CONSOLEMAP_H__
|
||||
|
||||
#define LAT1_MAP 0
|
||||
#define GRAF_MAP 1
|
||||
#define IBMPC_MAP 2
|
||||
|
|
@ -10,6 +13,7 @@
|
|||
|
||||
#include <linux/types.h>
|
||||
|
||||
#ifdef CONFIG_CONSOLE_TRANSLATIONS
|
||||
struct vc_data;
|
||||
|
||||
extern u16 inverse_translate(struct vc_data *conp, int glyph, int use_unicode);
|
||||
|
|
@ -18,3 +22,13 @@ extern int conv_uni_to_pc(struct vc_data *conp, long ucs);
|
|||
extern u32 conv_8bit_to_uni(unsigned char c);
|
||||
extern int conv_uni_to_8bit(u32 uni);
|
||||
void console_map_init(void);
|
||||
#else
|
||||
#define inverse_translate(conp, glyph, uni) ((uint16_t)glyph)
|
||||
#define set_translate(m, vc) ((unsigned short *)NULL)
|
||||
#define conv_uni_to_pc(conp, ucs) ((int) (ucs > 0xff ? -1: ucs))
|
||||
#define conv_8bit_to_uni(c) ((uint32_t)(c))
|
||||
#define conv_uni_to_8bit(c) ((int) ((c) & 0xff))
|
||||
#define console_map_init(c) do { ; } while (0)
|
||||
#endif /* CONFIG_CONSOLE_TRANSLATIONS */
|
||||
|
||||
#endif /* __LINUX_CONSOLEMAP_H__ */
|
||||
|
|
|
|||
|
|
@ -69,10 +69,11 @@ static inline void unregister_cpu_notifier(struct notifier_block *nb)
|
|||
#endif
|
||||
|
||||
int cpu_up(unsigned int cpu);
|
||||
|
||||
extern void cpu_hotplug_init(void);
|
||||
extern void cpu_maps_update_begin(void);
|
||||
extern void cpu_maps_update_done(void);
|
||||
|
||||
#else
|
||||
#else /* CONFIG_SMP */
|
||||
|
||||
static inline int register_cpu_notifier(struct notifier_block *nb)
|
||||
{
|
||||
|
|
@ -87,10 +88,16 @@ static inline void cpu_hotplug_init(void)
|
|||
{
|
||||
}
|
||||
|
||||
static inline void cpu_maps_update_begin(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void cpu_maps_update_done(void)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SMP */
|
||||
extern struct sysdev_class cpu_sysdev_class;
|
||||
extern void cpu_maps_update_begin(void);
|
||||
extern void cpu_maps_update_done(void);
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
/* Stop CPUs going up and down. */
|
||||
|
|
|
|||
|
|
@ -8,7 +8,13 @@
|
|||
#include <linux/proc_fs.h>
|
||||
|
||||
#define ELFCORE_ADDR_MAX (-1ULL)
|
||||
|
||||
#ifdef CONFIG_PROC_VMCORE
|
||||
extern unsigned long long elfcorehdr_addr;
|
||||
#else
|
||||
static const unsigned long long elfcorehdr_addr = ELFCORE_ADDR_MAX;
|
||||
#endif
|
||||
|
||||
extern ssize_t copy_oldmem_page(unsigned long, char *, size_t,
|
||||
unsigned long, int);
|
||||
extern const struct file_operations proc_vmcore_operations;
|
||||
|
|
@ -22,5 +28,13 @@ extern struct proc_dir_entry *proc_vmcore;
|
|||
|
||||
#define vmcore_elf_check_arch(x) (elf_check_arch(x) || vmcore_elf_check_arch_cross(x))
|
||||
|
||||
static inline int is_kdump_kernel(void)
|
||||
{
|
||||
return (elfcorehdr_addr != ELFCORE_ADDR_MAX) ? 1 : 0;
|
||||
}
|
||||
#else /* !CONFIG_CRASH_DUMP */
|
||||
static inline int is_kdump_kernel(void) { return 0; }
|
||||
#endif /* CONFIG_CRASH_DUMP */
|
||||
|
||||
extern unsigned long saved_max_pfn;
|
||||
#endif /* LINUX_CRASHDUMP_H */
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ extern void __delayacct_blkio_start(void);
|
|||
extern void __delayacct_blkio_end(void);
|
||||
extern int __delayacct_add_tsk(struct taskstats *, struct task_struct *);
|
||||
extern __u64 __delayacct_blkio_ticks(struct task_struct *);
|
||||
extern void __delayacct_freepages_start(void);
|
||||
extern void __delayacct_freepages_end(void);
|
||||
|
||||
static inline int delayacct_is_task_waiting_on_io(struct task_struct *p)
|
||||
{
|
||||
|
|
@ -107,6 +109,18 @@ static inline __u64 delayacct_blkio_ticks(struct task_struct *tsk)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline void delayacct_freepages_start(void)
|
||||
{
|
||||
if (current->delays)
|
||||
__delayacct_freepages_start();
|
||||
}
|
||||
|
||||
static inline void delayacct_freepages_end(void)
|
||||
{
|
||||
if (current->delays)
|
||||
__delayacct_freepages_end();
|
||||
}
|
||||
|
||||
#else
|
||||
static inline void delayacct_set_flag(int flag)
|
||||
{}
|
||||
|
|
@ -129,6 +143,11 @@ static inline __u64 delayacct_blkio_ticks(struct task_struct *tsk)
|
|||
{ return 0; }
|
||||
static inline int delayacct_is_task_waiting_on_io(struct task_struct *p)
|
||||
{ return 0; }
|
||||
static inline void delayacct_freepages_start(void)
|
||||
{}
|
||||
static inline void delayacct_freepages_end(void)
|
||||
{}
|
||||
|
||||
#endif /* CONFIG_TASK_DELAY_ACCT */
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,23 +1,6 @@
|
|||
#ifndef _LINUX_DIRENT_H
|
||||
#define _LINUX_DIRENT_H
|
||||
|
||||
struct dirent {
|
||||
long d_ino;
|
||||
__kernel_off_t d_off;
|
||||
unsigned short d_reclen;
|
||||
char d_name[256]; /* We must not include limits.h! */
|
||||
};
|
||||
|
||||
struct dirent64 {
|
||||
__u64 d_ino;
|
||||
__s64 d_off;
|
||||
unsigned short d_reclen;
|
||||
unsigned char d_type;
|
||||
char d_name[256];
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
struct linux_dirent64 {
|
||||
u64 d_ino;
|
||||
s64 d_off;
|
||||
|
|
@ -26,7 +9,4 @@ struct linux_dirent64 {
|
|||
char d_name[0];
|
||||
};
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -10,6 +10,13 @@
|
|||
|
||||
#ifdef CONFIG_EVENTFD
|
||||
|
||||
/* For O_CLOEXEC and O_NONBLOCK */
|
||||
#include <linux/fcntl.h>
|
||||
|
||||
/* Flags for eventfd2. */
|
||||
#define EFD_CLOEXEC O_CLOEXEC
|
||||
#define EFD_NONBLOCK O_NONBLOCK
|
||||
|
||||
struct file *eventfd_fget(int fd);
|
||||
int eventfd_signal(struct file *file, int n);
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,12 @@
|
|||
#ifndef _LINUX_EVENTPOLL_H
|
||||
#define _LINUX_EVENTPOLL_H
|
||||
|
||||
/* For O_CLOEXEC */
|
||||
#include <linux/fcntl.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/* Flags for epoll_create1. */
|
||||
#define EPOLL_CLOEXEC O_CLOEXEC
|
||||
|
||||
/* Valid opcodes to issue to sys_epoll_ctl() */
|
||||
#define EPOLL_CTL_ADD 1
|
||||
|
|
|
|||
|
|
@ -284,8 +284,8 @@ struct ext2_inode {
|
|||
|
||||
#ifdef __hurd__
|
||||
#define i_translator osd1.hurd1.h_i_translator
|
||||
#define i_frag osd2.hurd2.h_i_frag;
|
||||
#define i_fsize osd2.hurd2.h_i_fsize;
|
||||
#define i_frag osd2.hurd2.h_i_frag
|
||||
#define i_fsize osd2.hurd2.h_i_fsize
|
||||
#define i_uid_high osd2.hurd2.h_i_uid_high
|
||||
#define i_gid_high osd2.hurd2.h_i_gid_high
|
||||
#define i_author osd2.hurd2.h_i_author
|
||||
|
|
|
|||
|
|
@ -832,6 +832,7 @@ extern void ext3_discard_reservation (struct inode *);
|
|||
extern void ext3_dirty_inode(struct inode *);
|
||||
extern int ext3_change_inode_journal_flag(struct inode *, int);
|
||||
extern int ext3_get_inode_loc(struct inode *, struct ext3_iloc *);
|
||||
extern int ext3_can_truncate(struct inode *inode);
|
||||
extern void ext3_truncate (struct inode *);
|
||||
extern void ext3_set_inode_flags(struct inode *);
|
||||
extern void ext3_get_inode_flags(struct ext3_inode_info *);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ struct dentry;
|
|||
|
||||
/* Definitions of frame buffers */
|
||||
|
||||
#define FB_MAJOR 29
|
||||
#define FB_MAX 32 /* sufficient for now */
|
||||
|
||||
/* ioctls
|
||||
|
|
@ -120,6 +119,10 @@ struct dentry;
|
|||
#define FB_ACCEL_XGI_VOLARI_V 47 /* XGI Volari V3XT, V5, V8 */
|
||||
#define FB_ACCEL_XGI_VOLARI_Z 48 /* XGI Volari Z7 */
|
||||
#define FB_ACCEL_OMAP1610 49 /* TI OMAP16xx */
|
||||
#define FB_ACCEL_TRIDENT_TGUI 50 /* Trident TGUI */
|
||||
#define FB_ACCEL_TRIDENT_3DIMAGE 51 /* Trident 3DImage */
|
||||
#define FB_ACCEL_TRIDENT_BLADE3D 52 /* Trident Blade3D */
|
||||
#define FB_ACCEL_TRIDENT_BLADEXP 53 /* Trident BladeXP */
|
||||
#define FB_ACCEL_NEOMAGIC_NM2070 90 /* NeoMagic NM2070 */
|
||||
#define FB_ACCEL_NEOMAGIC_NM2090 91 /* NeoMagic NM2090 */
|
||||
#define FB_ACCEL_NEOMAGIC_NM2093 92 /* NeoMagic NM2093 */
|
||||
|
|
|
|||
|
|
@ -1,80 +0,0 @@
|
|||
#ifndef _LINUX_FD1772REG_H
|
||||
#define _LINUX_FD1772REG_H
|
||||
|
||||
/*
|
||||
** WD1772 stuff - originally from the M68K Linux
|
||||
* Modified for Archimedes by Dave Gilbert (gilbertd@cs.man.ac.uk)
|
||||
*/
|
||||
|
||||
/* register codes */
|
||||
|
||||
#define FDC1772SELREG_STP (0x80) /* command/status register */
|
||||
#define FDC1772SELREG_TRA (0x82) /* track register */
|
||||
#define FDC1772SELREG_SEC (0x84) /* sector register */
|
||||
#define FDC1772SELREG_DTA (0x86) /* data register */
|
||||
|
||||
/* register names for FDC1772_READ/WRITE macros */
|
||||
|
||||
#define FDC1772REG_CMD 0
|
||||
#define FDC1772REG_STATUS 0
|
||||
#define FDC1772REG_TRACK 2
|
||||
#define FDC1772REG_SECTOR 4
|
||||
#define FDC1772REG_DATA 6
|
||||
|
||||
/* command opcodes */
|
||||
|
||||
#define FDC1772CMD_RESTORE (0x00) /* - */
|
||||
#define FDC1772CMD_SEEK (0x10) /* | */
|
||||
#define FDC1772CMD_STEP (0x20) /* | TYP 1 Commands */
|
||||
#define FDC1772CMD_STIN (0x40) /* | */
|
||||
#define FDC1772CMD_STOT (0x60) /* - */
|
||||
#define FDC1772CMD_RDSEC (0x80) /* - TYP 2 Commands */
|
||||
#define FDC1772CMD_WRSEC (0xa0) /* - " */
|
||||
#define FDC1772CMD_RDADR (0xc0) /* - */
|
||||
#define FDC1772CMD_RDTRA (0xe0) /* | TYP 3 Commands */
|
||||
#define FDC1772CMD_WRTRA (0xf0) /* - */
|
||||
#define FDC1772CMD_FORCI (0xd0) /* - TYP 4 Command */
|
||||
|
||||
/* command modifier bits */
|
||||
|
||||
#define FDC1772CMDADD_SR6 (0x00) /* step rate settings */
|
||||
#define FDC1772CMDADD_SR12 (0x01)
|
||||
#define FDC1772CMDADD_SR2 (0x02)
|
||||
#define FDC1772CMDADD_SR3 (0x03)
|
||||
#define FDC1772CMDADD_V (0x04) /* verify */
|
||||
#define FDC1772CMDADD_H (0x08) /* wait for spin-up */
|
||||
#define FDC1772CMDADD_U (0x10) /* update track register */
|
||||
#define FDC1772CMDADD_M (0x10) /* multiple sector access */
|
||||
#define FDC1772CMDADD_E (0x04) /* head settling flag */
|
||||
#define FDC1772CMDADD_P (0x02) /* precompensation */
|
||||
#define FDC1772CMDADD_A0 (0x01) /* DAM flag */
|
||||
|
||||
/* status register bits */
|
||||
|
||||
#define FDC1772STAT_MOTORON (0x80) /* motor on */
|
||||
#define FDC1772STAT_WPROT (0x40) /* write protected (FDC1772CMD_WR*) */
|
||||
#define FDC1772STAT_SPINUP (0x20) /* motor speed stable (Type I) */
|
||||
#define FDC1772STAT_DELDAM (0x20) /* sector has deleted DAM (Type II+III) */
|
||||
#define FDC1772STAT_RECNF (0x10) /* record not found */
|
||||
#define FDC1772STAT_CRC (0x08) /* CRC error */
|
||||
#define FDC1772STAT_TR00 (0x04) /* Track 00 flag (Type I) */
|
||||
#define FDC1772STAT_LOST (0x04) /* Lost Data (Type II+III) */
|
||||
#define FDC1772STAT_IDX (0x02) /* Index status (Type I) */
|
||||
#define FDC1772STAT_DRQ (0x02) /* DRQ status (Type II+III) */
|
||||
#define FDC1772STAT_BUSY (0x01) /* FDC1772 is busy */
|
||||
|
||||
|
||||
/* PSG Port A Bit Nr 0 .. Side Sel .. 0 -> Side 1 1 -> Side 2 */
|
||||
#define DSKSIDE (0x01)
|
||||
|
||||
#define DSKDRVNONE (0x06)
|
||||
#define DSKDRV0 (0x02)
|
||||
#define DSKDRV1 (0x04)
|
||||
|
||||
/* step rates */
|
||||
#define FDC1772STEP_6 0x00
|
||||
#define FDC1772STEP_12 0x01
|
||||
#define FDC1772STEP_2 0x02
|
||||
#define FDC1772STEP_3 0x03
|
||||
|
||||
#endif
|
||||
|
|
@ -60,6 +60,8 @@ extern int dir_notify_enable;
|
|||
#define MAY_WRITE 2
|
||||
#define MAY_READ 4
|
||||
#define MAY_APPEND 8
|
||||
#define MAY_ACCESS 16
|
||||
#define MAY_OPEN 32
|
||||
|
||||
#define FMODE_READ 1
|
||||
#define FMODE_WRITE 2
|
||||
|
|
@ -277,7 +279,7 @@ extern int dir_notify_enable;
|
|||
#include <linux/types.h>
|
||||
#include <linux/kdev_t.h>
|
||||
#include <linux/dcache.h>
|
||||
#include <linux/namei.h>
|
||||
#include <linux/path.h>
|
||||
#include <linux/stat.h>
|
||||
#include <linux/cache.h>
|
||||
#include <linux/kobject.h>
|
||||
|
|
@ -318,22 +320,23 @@ typedef void (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
|
|||
* Attribute flags. These should be or-ed together to figure out what
|
||||
* has been changed!
|
||||
*/
|
||||
#define ATTR_MODE 1
|
||||
#define ATTR_UID 2
|
||||
#define ATTR_GID 4
|
||||
#define ATTR_SIZE 8
|
||||
#define ATTR_ATIME 16
|
||||
#define ATTR_MTIME 32
|
||||
#define ATTR_CTIME 64
|
||||
#define ATTR_ATIME_SET 128
|
||||
#define ATTR_MTIME_SET 256
|
||||
#define ATTR_FORCE 512 /* Not a change, but a change it */
|
||||
#define ATTR_ATTR_FLAG 1024
|
||||
#define ATTR_KILL_SUID 2048
|
||||
#define ATTR_KILL_SGID 4096
|
||||
#define ATTR_FILE 8192
|
||||
#define ATTR_KILL_PRIV 16384
|
||||
#define ATTR_OPEN 32768 /* Truncating from open(O_TRUNC) */
|
||||
#define ATTR_MODE (1 << 0)
|
||||
#define ATTR_UID (1 << 1)
|
||||
#define ATTR_GID (1 << 2)
|
||||
#define ATTR_SIZE (1 << 3)
|
||||
#define ATTR_ATIME (1 << 4)
|
||||
#define ATTR_MTIME (1 << 5)
|
||||
#define ATTR_CTIME (1 << 6)
|
||||
#define ATTR_ATIME_SET (1 << 7)
|
||||
#define ATTR_MTIME_SET (1 << 8)
|
||||
#define ATTR_FORCE (1 << 9) /* Not a change, but a change it */
|
||||
#define ATTR_ATTR_FLAG (1 << 10)
|
||||
#define ATTR_KILL_SUID (1 << 11)
|
||||
#define ATTR_KILL_SGID (1 << 12)
|
||||
#define ATTR_FILE (1 << 13)
|
||||
#define ATTR_KILL_PRIV (1 << 14)
|
||||
#define ATTR_OPEN (1 << 15) /* Truncating from open(O_TRUNC) */
|
||||
#define ATTR_TIMES_SET (1 << 16)
|
||||
|
||||
/*
|
||||
* This is the Inode Attributes structure, used for notify_change(). It
|
||||
|
|
@ -499,7 +502,7 @@ struct backing_dev_info;
|
|||
struct address_space {
|
||||
struct inode *host; /* owner: inode, block_device */
|
||||
struct radix_tree_root page_tree; /* radix tree of all pages */
|
||||
rwlock_t tree_lock; /* and rwlock protecting it */
|
||||
spinlock_t tree_lock; /* and lock protecting it */
|
||||
unsigned int i_mmap_writable;/* count VM_SHARED mappings */
|
||||
struct prio_tree_root i_mmap; /* tree of private and shared mappings */
|
||||
struct list_head i_mmap_nonlinear;/*list VM_NONLINEAR mappings */
|
||||
|
|
@ -792,7 +795,7 @@ struct file {
|
|||
#define f_dentry f_path.dentry
|
||||
#define f_vfsmnt f_path.mnt
|
||||
const struct file_operations *f_op;
|
||||
atomic_t f_count;
|
||||
atomic_long_t f_count;
|
||||
unsigned int f_flags;
|
||||
mode_t f_mode;
|
||||
loff_t f_pos;
|
||||
|
|
@ -821,8 +824,8 @@ extern spinlock_t files_lock;
|
|||
#define file_list_lock() spin_lock(&files_lock);
|
||||
#define file_list_unlock() spin_unlock(&files_lock);
|
||||
|
||||
#define get_file(x) atomic_inc(&(x)->f_count)
|
||||
#define file_count(x) atomic_read(&(x)->f_count)
|
||||
#define get_file(x) atomic_long_inc(&(x)->f_count)
|
||||
#define file_count(x) atomic_long_read(&(x)->f_count)
|
||||
|
||||
#ifdef CONFIG_DEBUG_WRITECOUNT
|
||||
static inline void file_take_write(struct file *f)
|
||||
|
|
@ -885,6 +888,12 @@ static inline int file_check_writeable(struct file *filp)
|
|||
#define FL_CLOSE 64 /* unlock on close */
|
||||
#define FL_SLEEP 128 /* A blocking lock */
|
||||
|
||||
/*
|
||||
* Special return value from posix_lock_file() and vfs_lock_file() for
|
||||
* asynchronous locking.
|
||||
*/
|
||||
#define FILE_LOCK_DEFERRED 1
|
||||
|
||||
/*
|
||||
* The POSIX file lock owner is determined by
|
||||
* the "struct files_struct" in the thread group
|
||||
|
|
@ -1025,6 +1034,7 @@ extern int send_sigurg(struct fown_struct *fown);
|
|||
extern struct list_head super_blocks;
|
||||
extern spinlock_t sb_lock;
|
||||
|
||||
#define sb_entry(list) list_entry((list), struct super_block, s_list)
|
||||
#define S_BIAS (1<<30)
|
||||
struct super_block {
|
||||
struct list_head s_list; /* Keep this first */
|
||||
|
|
@ -1058,6 +1068,9 @@ struct super_block {
|
|||
struct list_head s_more_io; /* parked for more writeback */
|
||||
struct hlist_head s_anon; /* anonymous dentries for (nfs) exporting */
|
||||
struct list_head s_files;
|
||||
/* s_dentry_lru and s_nr_dentry_unused are protected by dcache_lock */
|
||||
struct list_head s_dentry_lru; /* unused dentry lru */
|
||||
int s_nr_dentry_unused; /* # of dentry on lru */
|
||||
|
||||
struct block_device *s_bdev;
|
||||
struct mtd_info *s_mtd;
|
||||
|
|
@ -1126,7 +1139,7 @@ extern int vfs_permission(struct nameidata *, int);
|
|||
extern int vfs_create(struct inode *, struct dentry *, int, struct nameidata *);
|
||||
extern int vfs_mkdir(struct inode *, struct dentry *, int);
|
||||
extern int vfs_mknod(struct inode *, struct dentry *, int, dev_t);
|
||||
extern int vfs_symlink(struct inode *, struct dentry *, const char *, int);
|
||||
extern int vfs_symlink(struct inode *, struct dentry *, const char *);
|
||||
extern int vfs_link(struct dentry *, struct inode *, struct dentry *);
|
||||
extern int vfs_rmdir(struct inode *, struct dentry *);
|
||||
extern int vfs_unlink(struct inode *, struct dentry *);
|
||||
|
|
@ -1262,7 +1275,7 @@ struct inode_operations {
|
|||
void * (*follow_link) (struct dentry *, struct nameidata *);
|
||||
void (*put_link) (struct dentry *, struct nameidata *, void *);
|
||||
void (*truncate) (struct inode *);
|
||||
int (*permission) (struct inode *, int, struct nameidata *);
|
||||
int (*permission) (struct inode *, int);
|
||||
int (*setattr) (struct dentry *, struct iattr *);
|
||||
int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *);
|
||||
int (*setxattr) (struct dentry *, const char *,const void *,size_t,int);
|
||||
|
|
@ -1686,9 +1699,9 @@ extern void init_special_inode(struct inode *, umode_t, dev_t);
|
|||
extern void make_bad_inode(struct inode *);
|
||||
extern int is_bad_inode(struct inode *);
|
||||
|
||||
extern const struct file_operations read_fifo_fops;
|
||||
extern const struct file_operations write_fifo_fops;
|
||||
extern const struct file_operations rdwr_fifo_fops;
|
||||
extern const struct file_operations read_pipefifo_fops;
|
||||
extern const struct file_operations write_pipefifo_fops;
|
||||
extern const struct file_operations rdwr_pipefifo_fops;
|
||||
|
||||
extern int fs_may_remount_ro(struct super_block *);
|
||||
|
||||
|
|
@ -1757,7 +1770,7 @@ extern int do_remount_sb(struct super_block *sb, int flags,
|
|||
extern sector_t bmap(struct inode *, sector_t);
|
||||
#endif
|
||||
extern int notify_change(struct dentry *, struct iattr *);
|
||||
extern int permission(struct inode *, int, struct nameidata *);
|
||||
extern int inode_permission(struct inode *, int);
|
||||
extern int generic_permission(struct inode *, int,
|
||||
int (*check_acl)(struct inode *, int));
|
||||
|
||||
|
|
@ -1773,8 +1786,9 @@ static inline void allow_write_access(struct file *file)
|
|||
atomic_inc(&file->f_path.dentry->d_inode->i_writecount);
|
||||
}
|
||||
extern int do_pipe(int *);
|
||||
extern struct file *create_read_pipe(struct file *f);
|
||||
extern struct file *create_write_pipe(void);
|
||||
extern int do_pipe_flags(int *, int);
|
||||
extern struct file *create_read_pipe(struct file *f, int flags);
|
||||
extern struct file *create_write_pipe(int flags);
|
||||
extern void free_write_pipe(struct file *);
|
||||
|
||||
extern struct file *do_filp_open(int dfd, const char *pathname,
|
||||
|
|
@ -1820,7 +1834,7 @@ extern void clear_inode(struct inode *);
|
|||
extern void destroy_inode(struct inode *);
|
||||
extern struct inode *new_inode(struct super_block *);
|
||||
extern int should_remove_suid(struct dentry *);
|
||||
extern int remove_suid(struct dentry *);
|
||||
extern int file_remove_suid(struct file *);
|
||||
|
||||
extern void __insert_inode_hash(struct inode *, unsigned long hashval);
|
||||
extern void remove_inode_hash(struct inode *);
|
||||
|
|
@ -2006,8 +2020,6 @@ extern void simple_release_fs(struct vfsmount **mount, int *count);
|
|||
|
||||
extern ssize_t simple_read_from_buffer(void __user *to, size_t count,
|
||||
loff_t *ppos, const void *from, size_t available);
|
||||
extern ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos,
|
||||
const void *from, size_t available);
|
||||
|
||||
#ifdef CONFIG_MIGRATION
|
||||
extern int buffer_migrate_page(struct address_space *,
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ struct fs_struct {
|
|||
atomic_t count;
|
||||
rwlock_t lock;
|
||||
int umask;
|
||||
struct path root, pwd, altroot;
|
||||
struct path root, pwd;
|
||||
};
|
||||
|
||||
#define INIT_FS { \
|
||||
|
|
@ -19,7 +19,6 @@ struct fs_struct {
|
|||
extern struct kmem_cache *fs_cachep;
|
||||
|
||||
extern void exit_fs(struct task_struct *);
|
||||
extern void set_fs_altroot(void);
|
||||
extern void set_fs_root(struct fs_struct *, struct path *);
|
||||
extern void set_fs_pwd(struct fs_struct *, struct path *);
|
||||
extern struct fs_struct *copy_fs_struct(struct fs_struct *);
|
||||
|
|
|
|||
|
|
@ -104,11 +104,14 @@ struct fuse_file_lock {
|
|||
|
||||
/**
|
||||
* INIT request/reply flags
|
||||
*
|
||||
* FUSE_EXPORT_SUPPORT: filesystem handles lookups of "." and ".."
|
||||
*/
|
||||
#define FUSE_ASYNC_READ (1 << 0)
|
||||
#define FUSE_POSIX_LOCKS (1 << 1)
|
||||
#define FUSE_FILE_OPS (1 << 2)
|
||||
#define FUSE_ATOMIC_O_TRUNC (1 << 3)
|
||||
#define FUSE_EXPORT_SUPPORT (1 << 4)
|
||||
#define FUSE_BIG_WRITES (1 << 5)
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -541,7 +541,7 @@ extern dev_t blk_lookup_devt(const char *name, int part);
|
|||
extern char *disk_name (struct gendisk *hd, int part, char *buf);
|
||||
|
||||
extern int rescan_partitions(struct gendisk *disk, struct block_device *bdev);
|
||||
extern void add_partition(struct gendisk *, int, sector_t, sector_t, int);
|
||||
extern int __must_check add_partition(struct gendisk *, int, sector_t, sector_t, int);
|
||||
extern void delete_partition(struct gendisk *, int);
|
||||
extern void printk_all_partitions(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -173,11 +173,24 @@ static inline void arch_free_page(struct page *page, int order) { }
|
|||
static inline void arch_alloc_page(struct page *page, int order) { }
|
||||
#endif
|
||||
|
||||
extern struct page *__alloc_pages(gfp_t, unsigned int, struct zonelist *);
|
||||
struct page *
|
||||
__alloc_pages_internal(gfp_t gfp_mask, unsigned int order,
|
||||
struct zonelist *zonelist, nodemask_t *nodemask);
|
||||
|
||||
static inline struct page *
|
||||
__alloc_pages(gfp_t gfp_mask, unsigned int order,
|
||||
struct zonelist *zonelist)
|
||||
{
|
||||
return __alloc_pages_internal(gfp_mask, order, zonelist, NULL);
|
||||
}
|
||||
|
||||
static inline struct page *
|
||||
__alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order,
|
||||
struct zonelist *zonelist, nodemask_t *nodemask)
|
||||
{
|
||||
return __alloc_pages_internal(gfp_mask, order, zonelist, nodemask);
|
||||
}
|
||||
|
||||
extern struct page *
|
||||
__alloc_pages_nodemask(gfp_t, unsigned int,
|
||||
struct zonelist *, nodemask_t *nodemask);
|
||||
|
||||
static inline struct page *alloc_pages_node(int nid, gfp_t gfp_mask,
|
||||
unsigned int order)
|
||||
|
|
@ -215,6 +228,9 @@ extern struct page *alloc_page_vma(gfp_t gfp_mask,
|
|||
extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order);
|
||||
extern unsigned long get_zeroed_page(gfp_t gfp_mask);
|
||||
|
||||
void *alloc_pages_exact(size_t size, gfp_t gfp_mask);
|
||||
void free_pages_exact(void *virt, size_t size);
|
||||
|
||||
#define __get_free_page(gfp_mask) \
|
||||
__get_free_pages((gfp_mask),0)
|
||||
|
||||
|
|
|
|||
|
|
@ -79,6 +79,19 @@ static inline void gpio_set_value_cansleep(unsigned gpio, int value)
|
|||
WARN_ON(1);
|
||||
}
|
||||
|
||||
static inline int gpio_export(unsigned gpio, bool direction_may_change)
|
||||
{
|
||||
/* GPIO can never have been requested or set as {in,out}put */
|
||||
WARN_ON(1);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline void gpio_unexport(unsigned gpio)
|
||||
{
|
||||
/* GPIO can never have been exported */
|
||||
WARN_ON(1);
|
||||
}
|
||||
|
||||
static inline int gpio_to_irq(unsigned gpio)
|
||||
{
|
||||
/* GPIO can never have been requested or set as input */
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
#include <linux/mempolicy.h>
|
||||
#include <linux/shm.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/hugetlb.h>
|
||||
|
||||
struct ctl_table;
|
||||
|
||||
|
|
@ -17,38 +16,45 @@ static inline int is_vm_hugetlb_page(struct vm_area_struct *vma)
|
|||
return vma->vm_flags & VM_HUGETLB;
|
||||
}
|
||||
|
||||
void reset_vma_resv_huge_pages(struct vm_area_struct *vma);
|
||||
int hugetlb_sysctl_handler(struct ctl_table *, int, struct file *, void __user *, size_t *, loff_t *);
|
||||
int hugetlb_overcommit_handler(struct ctl_table *, int, struct file *, void __user *, size_t *, loff_t *);
|
||||
int hugetlb_treat_movable_handler(struct ctl_table *, int, struct file *, void __user *, size_t *, loff_t *);
|
||||
int copy_hugetlb_page_range(struct mm_struct *, struct mm_struct *, struct vm_area_struct *);
|
||||
int follow_hugetlb_page(struct mm_struct *, struct vm_area_struct *, struct page **, struct vm_area_struct **, unsigned long *, int *, int, int);
|
||||
void unmap_hugepage_range(struct vm_area_struct *, unsigned long, unsigned long);
|
||||
void __unmap_hugepage_range(struct vm_area_struct *, unsigned long, unsigned long);
|
||||
void unmap_hugepage_range(struct vm_area_struct *,
|
||||
unsigned long, unsigned long, struct page *);
|
||||
void __unmap_hugepage_range(struct vm_area_struct *,
|
||||
unsigned long, unsigned long, struct page *);
|
||||
int hugetlb_prefault(struct address_space *, struct vm_area_struct *);
|
||||
int hugetlb_report_meminfo(char *);
|
||||
int hugetlb_report_node_meminfo(int, char *);
|
||||
unsigned long hugetlb_total_pages(void);
|
||||
int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
unsigned long address, int write_access);
|
||||
int hugetlb_reserve_pages(struct inode *inode, long from, long to);
|
||||
int hugetlb_reserve_pages(struct inode *inode, long from, long to,
|
||||
struct vm_area_struct *vma);
|
||||
void hugetlb_unreserve_pages(struct inode *inode, long offset, long freed);
|
||||
|
||||
extern unsigned long max_huge_pages;
|
||||
extern unsigned long sysctl_overcommit_huge_pages;
|
||||
extern unsigned long hugepages_treat_as_movable;
|
||||
extern const unsigned long hugetlb_zero, hugetlb_infinity;
|
||||
extern int sysctl_hugetlb_shm_group;
|
||||
extern struct list_head huge_boot_pages;
|
||||
|
||||
/* arch callbacks */
|
||||
|
||||
pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr);
|
||||
pte_t *huge_pte_alloc(struct mm_struct *mm,
|
||||
unsigned long addr, unsigned long sz);
|
||||
pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr);
|
||||
int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep);
|
||||
struct page *follow_huge_addr(struct mm_struct *mm, unsigned long address,
|
||||
int write);
|
||||
struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address,
|
||||
pmd_t *pmd, int write);
|
||||
struct page *follow_huge_pud(struct mm_struct *mm, unsigned long address,
|
||||
pud_t *pud, int write);
|
||||
int pmd_huge(pmd_t pmd);
|
||||
int pud_huge(pud_t pmd);
|
||||
void hugetlb_change_protection(struct vm_area_struct *vma,
|
||||
unsigned long address, unsigned long end, pgprot_t newprot);
|
||||
|
||||
|
|
@ -58,6 +64,11 @@ static inline int is_vm_hugetlb_page(struct vm_area_struct *vma)
|
|||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void reset_vma_resv_huge_pages(struct vm_area_struct *vma)
|
||||
{
|
||||
}
|
||||
|
||||
static inline unsigned long hugetlb_total_pages(void)
|
||||
{
|
||||
return 0;
|
||||
|
|
@ -67,12 +78,14 @@ static inline unsigned long hugetlb_total_pages(void)
|
|||
#define follow_huge_addr(mm, addr, write) ERR_PTR(-EINVAL)
|
||||
#define copy_hugetlb_page_range(src, dst, vma) ({ BUG(); 0; })
|
||||
#define hugetlb_prefault(mapping, vma) ({ BUG(); 0; })
|
||||
#define unmap_hugepage_range(vma, start, end) BUG()
|
||||
#define unmap_hugepage_range(vma, start, end, page) BUG()
|
||||
#define hugetlb_report_meminfo(buf) 0
|
||||
#define hugetlb_report_node_meminfo(n, buf) 0
|
||||
#define follow_huge_pmd(mm, addr, pmd, write) NULL
|
||||
#define prepare_hugepage_range(addr,len) (-EINVAL)
|
||||
#define follow_huge_pud(mm, addr, pud, write) NULL
|
||||
#define prepare_hugepage_range(file, addr, len) (-EINVAL)
|
||||
#define pmd_huge(x) 0
|
||||
#define pud_huge(x) 0
|
||||
#define is_hugepage_only_range(mm, addr, len) 0
|
||||
#define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) ({BUG(); 0; })
|
||||
#define hugetlb_fault(mm, vma, addr, write) ({ BUG(); 0; })
|
||||
|
|
@ -93,6 +106,7 @@ struct hugetlbfs_config {
|
|||
umode_t mode;
|
||||
long nr_blocks;
|
||||
long nr_inodes;
|
||||
struct hstate *hstate;
|
||||
};
|
||||
|
||||
struct hugetlbfs_sb_info {
|
||||
|
|
@ -101,6 +115,7 @@ struct hugetlbfs_sb_info {
|
|||
long max_inodes; /* inodes allowed */
|
||||
long free_inodes; /* inodes free */
|
||||
spinlock_t stat_lock;
|
||||
struct hstate *hstate;
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -125,8 +140,6 @@ struct file *hugetlb_file_setup(const char *name, size_t);
|
|||
int hugetlb_get_quota(struct address_space *mapping, long delta);
|
||||
void hugetlb_put_quota(struct address_space *mapping, long delta);
|
||||
|
||||
#define BLOCKS_PER_HUGEPAGE (HPAGE_SIZE / 512)
|
||||
|
||||
static inline int is_file_hugepages(struct file *file)
|
||||
{
|
||||
if (file->f_op == &hugetlbfs_file_operations)
|
||||
|
|
@ -155,4 +168,115 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
|
|||
unsigned long flags);
|
||||
#endif /* HAVE_ARCH_HUGETLB_UNMAPPED_AREA */
|
||||
|
||||
#ifdef CONFIG_HUGETLB_PAGE
|
||||
|
||||
#define HSTATE_NAME_LEN 32
|
||||
/* Defines one hugetlb page size */
|
||||
struct hstate {
|
||||
int hugetlb_next_nid;
|
||||
unsigned int order;
|
||||
unsigned long mask;
|
||||
unsigned long max_huge_pages;
|
||||
unsigned long nr_huge_pages;
|
||||
unsigned long free_huge_pages;
|
||||
unsigned long resv_huge_pages;
|
||||
unsigned long surplus_huge_pages;
|
||||
unsigned long nr_overcommit_huge_pages;
|
||||
struct list_head hugepage_freelists[MAX_NUMNODES];
|
||||
unsigned int nr_huge_pages_node[MAX_NUMNODES];
|
||||
unsigned int free_huge_pages_node[MAX_NUMNODES];
|
||||
unsigned int surplus_huge_pages_node[MAX_NUMNODES];
|
||||
char name[HSTATE_NAME_LEN];
|
||||
};
|
||||
|
||||
struct huge_bootmem_page {
|
||||
struct list_head list;
|
||||
struct hstate *hstate;
|
||||
};
|
||||
|
||||
/* arch callback */
|
||||
int __init alloc_bootmem_huge_page(struct hstate *h);
|
||||
|
||||
void __init hugetlb_add_hstate(unsigned order);
|
||||
struct hstate *size_to_hstate(unsigned long size);
|
||||
|
||||
#ifndef HUGE_MAX_HSTATE
|
||||
#define HUGE_MAX_HSTATE 1
|
||||
#endif
|
||||
|
||||
extern struct hstate hstates[HUGE_MAX_HSTATE];
|
||||
extern unsigned int default_hstate_idx;
|
||||
|
||||
#define default_hstate (hstates[default_hstate_idx])
|
||||
|
||||
static inline struct hstate *hstate_inode(struct inode *i)
|
||||
{
|
||||
struct hugetlbfs_sb_info *hsb;
|
||||
hsb = HUGETLBFS_SB(i->i_sb);
|
||||
return hsb->hstate;
|
||||
}
|
||||
|
||||
static inline struct hstate *hstate_file(struct file *f)
|
||||
{
|
||||
return hstate_inode(f->f_dentry->d_inode);
|
||||
}
|
||||
|
||||
static inline struct hstate *hstate_vma(struct vm_area_struct *vma)
|
||||
{
|
||||
return hstate_file(vma->vm_file);
|
||||
}
|
||||
|
||||
static inline unsigned long huge_page_size(struct hstate *h)
|
||||
{
|
||||
return (unsigned long)PAGE_SIZE << h->order;
|
||||
}
|
||||
|
||||
static inline unsigned long huge_page_mask(struct hstate *h)
|
||||
{
|
||||
return h->mask;
|
||||
}
|
||||
|
||||
static inline unsigned int huge_page_order(struct hstate *h)
|
||||
{
|
||||
return h->order;
|
||||
}
|
||||
|
||||
static inline unsigned huge_page_shift(struct hstate *h)
|
||||
{
|
||||
return h->order + PAGE_SHIFT;
|
||||
}
|
||||
|
||||
static inline unsigned int pages_per_huge_page(struct hstate *h)
|
||||
{
|
||||
return 1 << h->order;
|
||||
}
|
||||
|
||||
static inline unsigned int blocks_per_huge_page(struct hstate *h)
|
||||
{
|
||||
return huge_page_size(h) / 512;
|
||||
}
|
||||
|
||||
#include <asm/hugetlb.h>
|
||||
|
||||
static inline struct hstate *page_hstate(struct page *page)
|
||||
{
|
||||
return size_to_hstate(PAGE_SIZE << compound_order(page));
|
||||
}
|
||||
|
||||
#else
|
||||
struct hstate {};
|
||||
#define alloc_bootmem_huge_page(h) NULL
|
||||
#define hstate_file(f) NULL
|
||||
#define hstate_vma(v) NULL
|
||||
#define hstate_inode(i) NULL
|
||||
#define huge_page_size(h) PAGE_SIZE
|
||||
#define huge_page_mask(h) PAGE_MASK
|
||||
#define huge_page_order(h) 0
|
||||
#define huge_page_shift(h) PAGE_SHIFT
|
||||
static inline unsigned int pages_per_huge_page(struct hstate *h)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_HUGETLB_H */
|
||||
|
|
|
|||
19
include/linux/i2c/max732x.h
Normal file
19
include/linux/i2c/max732x.h
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
#ifndef __LINUX_I2C_MAX732X_H
|
||||
#define __LINUX_I2C_MAX732X_H
|
||||
|
||||
/* platform data for the MAX732x 8/16-bit I/O expander driver */
|
||||
|
||||
struct max732x_platform_data {
|
||||
/* number of the first GPIO */
|
||||
unsigned gpio_base;
|
||||
|
||||
void *context; /* param to setup/teardown */
|
||||
|
||||
int (*setup)(struct i2c_client *client,
|
||||
unsigned gpio, unsigned ngpio,
|
||||
void *context);
|
||||
int (*teardown)(struct i2c_client *client,
|
||||
unsigned gpio, unsigned ngpio,
|
||||
void *context);
|
||||
};
|
||||
#endif /* __LINUX_I2C_MAX732X_H */
|
||||
|
|
@ -758,7 +758,7 @@ static inline dma_addr_t i2o_dma_map_single(struct i2o_controller *c, void *ptr,
|
|||
}
|
||||
|
||||
dma_addr = dma_map_single(&c->pdev->dev, ptr, size, direction);
|
||||
if (!dma_mapping_error(dma_addr)) {
|
||||
if (!dma_mapping_error(&c->pdev->dev, dma_addr)) {
|
||||
#ifdef CONFIG_I2O_EXT_ADAPTEC_DMA64
|
||||
if ((sizeof(dma_addr_t) > 4) && c->pae_support) {
|
||||
*mptr++ = cpu_to_le32(0x7C020002);
|
||||
|
|
|
|||
|
|
@ -211,7 +211,21 @@ static inline int __ide_default_irq(unsigned long base)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_ARM) || defined(CONFIG_FRV) || defined(CONFIG_M68K) || \
|
||||
defined(CONFIG_MIPS) || defined(CONFIG_MN10300) || defined(CONFIG_PARISC) \
|
||||
|| defined(CONFIG_PPC) || defined(CONFIG_SPARC) || defined(CONFIG_SPARC64)
|
||||
#include <asm/ide.h>
|
||||
#else
|
||||
#include <asm-generic/ide_iops.h>
|
||||
#endif
|
||||
|
||||
#ifndef MAX_HWIFS
|
||||
#if defined(CONFIG_BLACKFIN) || defined(CONFIG_H8300) || defined(CONFIG_XTENSA)
|
||||
# define MAX_HWIFS 1
|
||||
#else
|
||||
# define MAX_HWIFS 10
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined(MAX_HWIFS) || defined(CONFIG_EMBEDDED)
|
||||
#undef MAX_HWIFS
|
||||
|
|
@ -532,12 +546,16 @@ struct ide_dma_ops {
|
|||
void (*dma_timeout)(struct ide_drive_s *);
|
||||
};
|
||||
|
||||
struct ide_host;
|
||||
|
||||
typedef struct hwif_s {
|
||||
struct hwif_s *next; /* for linked-list in ide_hwgroup_t */
|
||||
struct hwif_s *mate; /* other hwif from same PCI chip */
|
||||
struct hwgroup_s *hwgroup; /* actually (ide_hwgroup_t *) */
|
||||
struct proc_dir_entry *proc; /* /proc/ide/ directory entry */
|
||||
|
||||
struct ide_host *host;
|
||||
|
||||
char name[6]; /* name of interface, eg. "ide0" */
|
||||
|
||||
struct ide_io_ports io_ports;
|
||||
|
|
@ -626,6 +644,9 @@ typedef struct hwif_s {
|
|||
struct ide_host {
|
||||
ide_hwif_t *ports[MAX_HWIFS];
|
||||
unsigned int n_ports;
|
||||
struct device *dev[2];
|
||||
unsigned long host_flags;
|
||||
void *host_priv;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -874,6 +895,9 @@ struct ide_driver_s {
|
|||
|
||||
#define to_ide_driver(drv) container_of(drv, ide_driver_t, gen_driver)
|
||||
|
||||
int ide_device_get(ide_drive_t *);
|
||||
void ide_device_put(ide_drive_t *);
|
||||
|
||||
int generic_ide_ioctl(ide_drive_t *, struct file *, struct block_device *, unsigned, unsigned long);
|
||||
|
||||
extern int ide_vlb_clk;
|
||||
|
|
@ -1182,7 +1206,7 @@ enum {
|
|||
|
||||
struct ide_port_info {
|
||||
char *name;
|
||||
unsigned int (*init_chipset)(struct pci_dev *, const char *);
|
||||
unsigned int (*init_chipset)(struct pci_dev *);
|
||||
void (*init_iops)(ide_hwif_t *);
|
||||
void (*init_hwif)(ide_hwif_t *);
|
||||
int (*init_dma)(ide_hwif_t *,
|
||||
|
|
@ -1201,8 +1225,10 @@ struct ide_port_info {
|
|||
u8 udma_mask;
|
||||
};
|
||||
|
||||
int ide_setup_pci_device(struct pci_dev *, const struct ide_port_info *);
|
||||
int ide_setup_pci_devices(struct pci_dev *, struct pci_dev *, const struct ide_port_info *);
|
||||
int ide_pci_init_one(struct pci_dev *, const struct ide_port_info *, void *);
|
||||
int ide_pci_init_two(struct pci_dev *, struct pci_dev *,
|
||||
const struct ide_port_info *, void *);
|
||||
void ide_pci_remove(struct pci_dev *);
|
||||
|
||||
void ide_map_sg(ide_drive_t *, struct request *);
|
||||
void ide_init_sg_cmd(ide_drive_t *, struct request *);
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/types.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/rcupdate.h>
|
||||
|
||||
#if BITS_PER_LONG == 32
|
||||
# define IDR_BITS 5
|
||||
|
|
@ -51,6 +52,7 @@ struct idr_layer {
|
|||
unsigned long bitmap; /* A zero bit means "space here" */
|
||||
struct idr_layer *ary[1<<IDR_BITS];
|
||||
int count; /* When zero, we can release it */
|
||||
struct rcu_head rcu_head;
|
||||
};
|
||||
|
||||
struct idr {
|
||||
|
|
@ -71,6 +73,28 @@ struct idr {
|
|||
}
|
||||
#define DEFINE_IDR(name) struct idr name = IDR_INIT(name)
|
||||
|
||||
/* Actions to be taken after a call to _idr_sub_alloc */
|
||||
#define IDR_NEED_TO_GROW -2
|
||||
#define IDR_NOMORE_SPACE -3
|
||||
|
||||
#define _idr_rc_to_errno(rc) ((rc) == -1 ? -EAGAIN : -ENOSPC)
|
||||
|
||||
/**
|
||||
* idr synchronization (stolen from radix-tree.h)
|
||||
*
|
||||
* idr_find() is able to be called locklessly, using RCU. The caller must
|
||||
* ensure calls to this function are made within rcu_read_lock() regions.
|
||||
* Other readers (lock-free or otherwise) and modifications may be running
|
||||
* concurrently.
|
||||
*
|
||||
* It is still required that the caller manage the synchronization and
|
||||
* lifetimes of the items. So if RCU lock-free lookups are used, typically
|
||||
* this would mean that the items have their own locks, or are amenable to
|
||||
* lock-free access; and that the items are freed by RCU (or only freed after
|
||||
* having been deleted from the idr tree *and* a synchronize_rcu() grace
|
||||
* period).
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is what we export.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -169,6 +169,13 @@ extern void (*late_time_init)(void);
|
|||
static initcall_t __initcall_##fn##id __used \
|
||||
__attribute__((__section__(".initcall" level ".init"))) = fn
|
||||
|
||||
/*
|
||||
* Early initcalls run before initializing SMP.
|
||||
*
|
||||
* Only for built-in code, not modules.
|
||||
*/
|
||||
#define early_initcall(fn) __define_initcall("early",fn,early)
|
||||
|
||||
/*
|
||||
* A "pure" initcall has no dependencies on anything else, and purely
|
||||
* initializes variables that couldn't be statically initialized.
|
||||
|
|
@ -275,13 +282,7 @@ void __init parse_early_param(void);
|
|||
|
||||
#define security_initcall(fn) module_init(fn)
|
||||
|
||||
/* These macros create a dummy inline: gcc 2.9x does not count alias
|
||||
as usage, hence the `unused function' warning when __init functions
|
||||
are declared static. We use the dummy __*_module_inline functions
|
||||
both to kill the warning and check the type of the init/cleanup
|
||||
function. */
|
||||
|
||||
/* Each module must use one module_init(), or one no_module_init */
|
||||
/* Each module must use one module_init(). */
|
||||
#define module_init(initfn) \
|
||||
static inline initcall_t __inittest(void) \
|
||||
{ return initfn; } \
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ extern struct group_info init_groups;
|
|||
.state = 0, \
|
||||
.stack = &init_thread_info, \
|
||||
.usage = ATOMIC_INIT(2), \
|
||||
.flags = 0, \
|
||||
.flags = PF_KTHREAD, \
|
||||
.lock_depth = -1, \
|
||||
.prio = MAX_PRIO-20, \
|
||||
.static_prio = MAX_PRIO-20, \
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
#ifndef _LINUX_INOTIFY_H
|
||||
#define _LINUX_INOTIFY_H
|
||||
|
||||
/* For O_CLOEXEC and O_NONBLOCK */
|
||||
#include <linux/fcntl.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
|
|
@ -63,6 +65,10 @@ struct inotify_event {
|
|||
IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | \
|
||||
IN_MOVE_SELF)
|
||||
|
||||
/* Flags for sys_inotify_init1. */
|
||||
#define IN_CLOEXEC O_CLOEXEC
|
||||
#define IN_NONBLOCK O_NONBLOCK
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/dcache.h>
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ struct ipc_namespace {
|
|||
int msg_ctlmni;
|
||||
atomic_t msg_bytes;
|
||||
atomic_t msg_hdrs;
|
||||
int auto_msgmni;
|
||||
|
||||
size_t shm_ctlmax;
|
||||
size_t shm_ctlall;
|
||||
|
|
@ -53,7 +54,7 @@ extern atomic_t nr_ipc_ns;
|
|||
|
||||
extern int register_ipcns_notifier(struct ipc_namespace *);
|
||||
extern int cond_register_ipcns_notifier(struct ipc_namespace *);
|
||||
extern int unregister_ipcns_notifier(struct ipc_namespace *);
|
||||
extern void unregister_ipcns_notifier(struct ipc_namespace *);
|
||||
extern int ipcns_notify(unsigned long);
|
||||
|
||||
#else /* CONFIG_SYSVIPC */
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@
|
|||
#ifndef _LINUX_TRACE_IRQFLAGS_H
|
||||
#define _LINUX_TRACE_IRQFLAGS_H
|
||||
|
||||
#include <linux/typecheck.h>
|
||||
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
extern void trace_softirqs_on(unsigned long ip);
|
||||
extern void trace_softirqs_off(unsigned long ip);
|
||||
|
|
@ -58,18 +60,24 @@
|
|||
do { trace_hardirqs_on(); raw_local_irq_enable(); } while (0)
|
||||
#define local_irq_disable() \
|
||||
do { raw_local_irq_disable(); trace_hardirqs_off(); } while (0)
|
||||
#define local_irq_save(flags) \
|
||||
do { raw_local_irq_save(flags); trace_hardirqs_off(); } while (0)
|
||||
#define local_irq_save(flags) \
|
||||
do { \
|
||||
typecheck(unsigned long, flags); \
|
||||
raw_local_irq_save(flags); \
|
||||
trace_hardirqs_off(); \
|
||||
} while (0)
|
||||
|
||||
#define local_irq_restore(flags) \
|
||||
do { \
|
||||
if (raw_irqs_disabled_flags(flags)) { \
|
||||
raw_local_irq_restore(flags); \
|
||||
trace_hardirqs_off(); \
|
||||
} else { \
|
||||
trace_hardirqs_on(); \
|
||||
raw_local_irq_restore(flags); \
|
||||
} \
|
||||
|
||||
#define local_irq_restore(flags) \
|
||||
do { \
|
||||
typecheck(unsigned long, flags); \
|
||||
if (raw_irqs_disabled_flags(flags)) { \
|
||||
raw_local_irq_restore(flags); \
|
||||
trace_hardirqs_off(); \
|
||||
} else { \
|
||||
trace_hardirqs_on(); \
|
||||
raw_local_irq_restore(flags); \
|
||||
} \
|
||||
} while (0)
|
||||
#else /* !CONFIG_TRACE_IRQFLAGS_SUPPORT */
|
||||
/*
|
||||
|
|
@ -78,8 +86,16 @@
|
|||
*/
|
||||
# define raw_local_irq_disable() local_irq_disable()
|
||||
# define raw_local_irq_enable() local_irq_enable()
|
||||
# define raw_local_irq_save(flags) local_irq_save(flags)
|
||||
# define raw_local_irq_restore(flags) local_irq_restore(flags)
|
||||
# define raw_local_irq_save(flags) \
|
||||
do { \
|
||||
typecheck(unsigned long, flags); \
|
||||
local_irq_save(flags); \
|
||||
} while (0)
|
||||
# define raw_local_irq_restore(flags) \
|
||||
do { \
|
||||
typecheck(unsigned long, flags); \
|
||||
local_irq_restore(flags); \
|
||||
} while (0)
|
||||
#endif /* CONFIG_TRACE_IRQFLAGS_SUPPORT */
|
||||
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT
|
||||
|
|
@ -89,7 +105,11 @@
|
|||
raw_safe_halt(); \
|
||||
} while (0)
|
||||
|
||||
#define local_save_flags(flags) raw_local_save_flags(flags)
|
||||
#define local_save_flags(flags) \
|
||||
do { \
|
||||
typecheck(unsigned long, flags); \
|
||||
raw_local_save_flags(flags); \
|
||||
} while (0)
|
||||
|
||||
#define irqs_disabled() \
|
||||
({ \
|
||||
|
|
@ -99,7 +119,11 @@
|
|||
raw_irqs_disabled_flags(_flags); \
|
||||
})
|
||||
|
||||
#define irqs_disabled_flags(flags) raw_irqs_disabled_flags(flags)
|
||||
#define irqs_disabled_flags(flags) \
|
||||
({ \
|
||||
typecheck(unsigned long, flags); \
|
||||
raw_irqs_disabled_flags(flags); \
|
||||
})
|
||||
#endif /* CONFIG_X86 */
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -7,9 +7,6 @@
|
|||
*
|
||||
* For licensing information, see the file 'LICENCE' in the
|
||||
* jffs2 directory.
|
||||
*
|
||||
* $Id: jffs2.h,v 1.38 2005/09/26 11:37:23 havasi Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_JFFS2_H__
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#define _LINUX_KALLSYMS_H
|
||||
|
||||
#include <linux/errno.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/stddef.h>
|
||||
|
||||
#define KSYM_NAME_LEN 128
|
||||
|
|
@ -105,18 +106,10 @@ static inline void print_fn_descriptor_symbol(const char *fmt, void *addr)
|
|||
print_symbol(fmt, (unsigned long)addr);
|
||||
}
|
||||
|
||||
#ifndef CONFIG_64BIT
|
||||
#define print_ip_sym(ip) \
|
||||
do { \
|
||||
printk("[<%08lx>]", ip); \
|
||||
print_symbol(" %s\n", ip); \
|
||||
} while(0)
|
||||
#else
|
||||
#define print_ip_sym(ip) \
|
||||
do { \
|
||||
printk("[<%016lx>]", ip); \
|
||||
print_symbol(" %s\n", ip); \
|
||||
} while(0)
|
||||
#endif
|
||||
static inline void print_ip_sym(unsigned long ip)
|
||||
{
|
||||
printk("[<%p>]", (void *) ip);
|
||||
print_symbol(" %s\n", ip);
|
||||
}
|
||||
|
||||
#endif /*_LINUX_KALLSYMS_H*/
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@
|
|||
#include <linux/compiler.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/log2.h>
|
||||
#include <linux/typecheck.h>
|
||||
#include <linux/ratelimit.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/bug.h>
|
||||
|
||||
|
|
@ -188,11 +190,8 @@ asmlinkage int vprintk(const char *fmt, va_list args)
|
|||
asmlinkage int printk(const char * fmt, ...)
|
||||
__attribute__ ((format (printf, 1, 2))) __cold;
|
||||
|
||||
extern int printk_ratelimit_jiffies;
|
||||
extern int printk_ratelimit_burst;
|
||||
extern struct ratelimit_state printk_ratelimit_state;
|
||||
extern int printk_ratelimit(void);
|
||||
extern int __ratelimit(int ratelimit_jiffies, int ratelimit_burst);
|
||||
extern int __printk_ratelimit(int ratelimit_jiffies, int ratelimit_burst);
|
||||
extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
|
||||
unsigned int interval_msec);
|
||||
#else
|
||||
|
|
@ -203,8 +202,6 @@ static inline int printk(const char *s, ...)
|
|||
__attribute__ ((format (printf, 1, 2)));
|
||||
static inline int __cold printk(const char *s, ...) { return 0; }
|
||||
static inline int printk_ratelimit(void) { return 0; }
|
||||
static inline int __printk_ratelimit(int ratelimit_jiffies, \
|
||||
int ratelimit_burst) { return 0; }
|
||||
static inline bool printk_timed_ratelimit(unsigned long *caller_jiffies, \
|
||||
unsigned int interval_msec) \
|
||||
{ return false; }
|
||||
|
|
@ -441,26 +438,6 @@ static inline char *pack_hex_byte(char *buf, u8 byte)
|
|||
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
|
||||
(type *)( (char *)__mptr - offsetof(type,member) );})
|
||||
|
||||
/*
|
||||
* Check at compile time that something is of a particular type.
|
||||
* Always evaluates to 1 so you may use it easily in comparisons.
|
||||
*/
|
||||
#define typecheck(type,x) \
|
||||
({ type __dummy; \
|
||||
typeof(x) __dummy2; \
|
||||
(void)(&__dummy == &__dummy2); \
|
||||
1; \
|
||||
})
|
||||
|
||||
/*
|
||||
* Check at compile time that 'function' is a certain type, or is a pointer
|
||||
* to that type (needs to use typedef for the function type.)
|
||||
*/
|
||||
#define typecheck_fn(type,function) \
|
||||
({ typeof(type) __tmp = function; \
|
||||
(void)__tmp; \
|
||||
})
|
||||
|
||||
struct sysinfo;
|
||||
extern int do_sysinfo(struct sysinfo *info);
|
||||
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ struct kimage {
|
|||
|
||||
unsigned long start;
|
||||
struct page *control_code_page;
|
||||
struct page *swap_page;
|
||||
|
||||
unsigned long nr_segments;
|
||||
struct kexec_segment segment[KEXEC_SEGMENT_MAX];
|
||||
|
|
@ -98,18 +99,20 @@ struct kimage {
|
|||
unsigned int type : 1;
|
||||
#define KEXEC_TYPE_DEFAULT 0
|
||||
#define KEXEC_TYPE_CRASH 1
|
||||
unsigned int preserve_context : 1;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* kexec interface functions */
|
||||
extern NORET_TYPE void machine_kexec(struct kimage *image) ATTRIB_NORET;
|
||||
extern void machine_kexec(struct kimage *image);
|
||||
extern int machine_kexec_prepare(struct kimage *image);
|
||||
extern void machine_kexec_cleanup(struct kimage *image);
|
||||
extern asmlinkage long sys_kexec_load(unsigned long entry,
|
||||
unsigned long nr_segments,
|
||||
struct kexec_segment __user *segments,
|
||||
unsigned long flags);
|
||||
extern int kernel_kexec(void);
|
||||
#ifdef CONFIG_COMPAT
|
||||
extern asmlinkage long compat_sys_kexec_load(unsigned long entry,
|
||||
unsigned long nr_segments,
|
||||
|
|
@ -156,8 +159,9 @@ extern struct kimage *kexec_crash_image;
|
|||
#define kexec_flush_icache_page(page)
|
||||
#endif
|
||||
|
||||
#define KEXEC_ON_CRASH 0x00000001
|
||||
#define KEXEC_ARCH_MASK 0xffff0000
|
||||
#define KEXEC_ON_CRASH 0x00000001
|
||||
#define KEXEC_PRESERVE_CONTEXT 0x00000002
|
||||
#define KEXEC_ARCH_MASK 0xffff0000
|
||||
|
||||
/* These values match the ELF architecture values.
|
||||
* Unless there is a good reason that should continue to be the case.
|
||||
|
|
@ -174,7 +178,12 @@ extern struct kimage *kexec_crash_image;
|
|||
#define KEXEC_ARCH_MIPS_LE (10 << 16)
|
||||
#define KEXEC_ARCH_MIPS ( 8 << 16)
|
||||
|
||||
#define KEXEC_FLAGS (KEXEC_ON_CRASH) /* List of defined/legal kexec flags */
|
||||
/* List of defined/legal kexec flags */
|
||||
#ifndef CONFIG_KEXEC_JUMP
|
||||
#define KEXEC_FLAGS KEXEC_ON_CRASH
|
||||
#else
|
||||
#define KEXEC_FLAGS (KEXEC_ON_CRASH | KEXEC_PRESERVE_CONTEXT)
|
||||
#endif
|
||||
|
||||
#define VMCOREINFO_BYTES (4096)
|
||||
#define VMCOREINFO_NOTE_NAME "VMCOREINFO"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <linux/gfp.h>
|
||||
#include <linux/stddef.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/compiler.h>
|
||||
|
|
@ -41,8 +42,8 @@ struct file;
|
|||
struct subprocess_info;
|
||||
|
||||
/* Allocate a subprocess_info structure */
|
||||
struct subprocess_info *call_usermodehelper_setup(char *path,
|
||||
char **argv, char **envp);
|
||||
struct subprocess_info *call_usermodehelper_setup(char *path, char **argv,
|
||||
char **envp, gfp_t gfp_mask);
|
||||
|
||||
/* Set various pieces of state into the subprocess_info structure */
|
||||
void call_usermodehelper_setkeys(struct subprocess_info *info,
|
||||
|
|
@ -69,8 +70,9 @@ static inline int
|
|||
call_usermodehelper(char *path, char **argv, char **envp, enum umh_wait wait)
|
||||
{
|
||||
struct subprocess_info *info;
|
||||
gfp_t gfp_mask = (wait == UMH_NO_WAIT) ? GFP_ATOMIC : GFP_KERNEL;
|
||||
|
||||
info = call_usermodehelper_setup(path, argv, envp);
|
||||
info = call_usermodehelper_setup(path, argv, envp, gfp_mask);
|
||||
if (info == NULL)
|
||||
return -ENOMEM;
|
||||
return call_usermodehelper_exec(info, wait);
|
||||
|
|
@ -81,8 +83,9 @@ call_usermodehelper_keys(char *path, char **argv, char **envp,
|
|||
struct key *session_keyring, enum umh_wait wait)
|
||||
{
|
||||
struct subprocess_info *info;
|
||||
gfp_t gfp_mask = (wait == UMH_NO_WAIT) ? GFP_ATOMIC : GFP_KERNEL;
|
||||
|
||||
info = call_usermodehelper_setup(path, argv, envp);
|
||||
info = call_usermodehelper_setup(path, argv, envp, gfp_mask);
|
||||
if (info == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
|
|||
|
|
@ -186,6 +186,8 @@ extern struct kobject *kset_find_obj(struct kset *, const char *);
|
|||
|
||||
/* The global /sys/kernel/ kobject for people to chain off of */
|
||||
extern struct kobject *kernel_kobj;
|
||||
/* The global /sys/kernel/mm/ kobject for people to chain off of */
|
||||
extern struct kobject *mm_kobj;
|
||||
/* The global /sys/hypervisor/ kobject for people to chain off of */
|
||||
extern struct kobject *hypervisor_kobj;
|
||||
/* The global /sys/power/ kobject for people to chain off of */
|
||||
|
|
|
|||
|
|
@ -157,11 +157,10 @@ struct kretprobe {
|
|||
int nmissed;
|
||||
size_t data_size;
|
||||
struct hlist_head free_instances;
|
||||
struct hlist_head used_instances;
|
||||
spinlock_t lock;
|
||||
};
|
||||
|
||||
struct kretprobe_instance {
|
||||
struct hlist_node uflist; /* either on free list or used list */
|
||||
struct hlist_node hlist;
|
||||
struct kretprobe *rp;
|
||||
kprobe_opcode_t *ret_addr;
|
||||
|
|
@ -201,7 +200,6 @@ static inline int init_test_probes(void)
|
|||
}
|
||||
#endif /* CONFIG_KPROBES_SANITY_TEST */
|
||||
|
||||
extern spinlock_t kretprobe_lock;
|
||||
extern struct mutex kprobe_mutex;
|
||||
extern int arch_prepare_kprobe(struct kprobe *p);
|
||||
extern void arch_arm_kprobe(struct kprobe *p);
|
||||
|
|
@ -214,6 +212,9 @@ extern void kprobes_inc_nmissed_count(struct kprobe *p);
|
|||
|
||||
/* Get the kprobe at this addr (if any) - called with preemption disabled */
|
||||
struct kprobe *get_kprobe(void *addr);
|
||||
void kretprobe_hash_lock(struct task_struct *tsk,
|
||||
struct hlist_head **head, unsigned long *flags);
|
||||
void kretprobe_hash_unlock(struct task_struct *tsk, unsigned long *flags);
|
||||
struct hlist_head * kretprobe_inst_table_head(struct task_struct *tsk);
|
||||
|
||||
/* kprobe_running() will just return the current_kprobe on this CPU */
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@
|
|||
|
||||
struct task_struct *kthread_create(int (*threadfn)(void *data),
|
||||
void *data,
|
||||
const char namefmt[], ...);
|
||||
const char namefmt[], ...)
|
||||
__attribute__((format(printf, 3, 4)));
|
||||
|
||||
/**
|
||||
* kthread_run - create and wake a thread.
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ struct lcd_ops {
|
|||
int (*set_contrast)(struct lcd_device *, int contrast);
|
||||
/* Check if given framebuffer device is the one LCD is bound to;
|
||||
return 0 if not, !=0 if it is. If NULL, lcd always matches the fb. */
|
||||
int (*check_fb)(struct fb_info *);
|
||||
int (*check_fb)(struct lcd_device *, struct fb_info *);
|
||||
};
|
||||
|
||||
struct lcd_device {
|
||||
|
|
|
|||
45
include/linux/leds-pca9532.h
Normal file
45
include/linux/leds-pca9532.h
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* pca9532.h - platform data structure for pca9532 led controller
|
||||
*
|
||||
* Copyright (C) 2008 Riku Voipio <riku.voipio@movial.fi>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* Datasheet: http://www.nxp.com/acrobat/datasheets/PCA9532_3.pdf
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_PCA9532_H
|
||||
#define __LINUX_PCA9532_H
|
||||
|
||||
#include <linux/leds.h>
|
||||
|
||||
enum pca9532_state {
|
||||
PCA9532_OFF = 0x0,
|
||||
PCA9532_ON = 0x1,
|
||||
PCA9532_PWM0 = 0x2,
|
||||
PCA9532_PWM1 = 0x3
|
||||
};
|
||||
|
||||
enum pca9532_type { PCA9532_TYPE_NONE, PCA9532_TYPE_LED,
|
||||
PCA9532_TYPE_N2100_BEEP };
|
||||
|
||||
struct pca9532_led {
|
||||
u8 id;
|
||||
struct i2c_client *client;
|
||||
char *name;
|
||||
struct led_classdev ldev;
|
||||
enum pca9532_type type;
|
||||
enum pca9532_state state;
|
||||
};
|
||||
|
||||
struct pca9532_platform_data {
|
||||
struct pca9532_led leds[16];
|
||||
u8 pwm[2];
|
||||
u8 psc[2];
|
||||
};
|
||||
|
||||
#endif /* __LINUX_PCA9532_H */
|
||||
|
||||
|
|
@ -48,7 +48,7 @@ struct led_classdev {
|
|||
|
||||
struct device *dev;
|
||||
struct list_head node; /* LED Device list */
|
||||
char *default_trigger; /* Trigger to use */
|
||||
const char *default_trigger; /* Trigger to use */
|
||||
|
||||
#ifdef CONFIG_LEDS_TRIGGERS
|
||||
/* Protects the trigger data below */
|
||||
|
|
@ -118,6 +118,20 @@ extern void ledtrig_ide_activity(void);
|
|||
#define ledtrig_ide_activity() do {} while(0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Generic LED platform data for describing LED names and default triggers.
|
||||
*/
|
||||
struct led_info {
|
||||
const char *name;
|
||||
char *default_trigger;
|
||||
int flags;
|
||||
};
|
||||
|
||||
struct led_platform_data {
|
||||
int num_leds;
|
||||
struct led_info *leds;
|
||||
};
|
||||
|
||||
/* For the leds-gpio driver */
|
||||
struct gpio_led {
|
||||
const char *name;
|
||||
|
|
|
|||
|
|
@ -61,14 +61,10 @@ extern void __list_add(struct list_head *new,
|
|||
* Insert a new entry after the specified head.
|
||||
* This is good for implementing stacks.
|
||||
*/
|
||||
#ifndef CONFIG_DEBUG_LIST
|
||||
static inline void list_add(struct list_head *new, struct list_head *head)
|
||||
{
|
||||
__list_add(new, head, head->next);
|
||||
}
|
||||
#else
|
||||
extern void list_add(struct list_head *new, struct list_head *head);
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
37
include/linux/mISDNdsp.h
Normal file
37
include/linux/mISDNdsp.h
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
#ifndef __mISDNdsp_H__
|
||||
#define __mISDNdsp_H__
|
||||
|
||||
struct mISDN_dsp_element_arg {
|
||||
char *name;
|
||||
char *def;
|
||||
char *desc;
|
||||
};
|
||||
|
||||
struct mISDN_dsp_element {
|
||||
char *name;
|
||||
void *(*new)(const char *arg);
|
||||
void (*free)(void *p);
|
||||
void (*process_tx)(void *p, unsigned char *data, int len);
|
||||
void (*process_rx)(void *p, unsigned char *data, int len);
|
||||
int num_args;
|
||||
struct mISDN_dsp_element_arg
|
||||
*args;
|
||||
};
|
||||
|
||||
extern int mISDN_dsp_element_register(struct mISDN_dsp_element *elem);
|
||||
extern void mISDN_dsp_element_unregister(struct mISDN_dsp_element *elem);
|
||||
|
||||
struct dsp_features {
|
||||
int hfc_id; /* unique id to identify the chip (or -1) */
|
||||
int hfc_dtmf; /* set if HFCmulti card supports dtmf */
|
||||
int hfc_loops; /* set if card supports tone loops */
|
||||
int hfc_echocanhw; /* set if card supports echocancelation*/
|
||||
int pcm_id; /* unique id to identify the pcm bus (or -1) */
|
||||
int pcm_slots; /* number of slots on the pcm bus */
|
||||
int pcm_banks; /* number of IO banks of pcm bus */
|
||||
int unclocked; /* data is not clocked (has jitter/loss) */
|
||||
int unordered; /* data is unordered (packets have index) */
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
193
include/linux/mISDNhw.h
Normal file
193
include/linux/mISDNhw.h
Normal file
|
|
@ -0,0 +1,193 @@
|
|||
/*
|
||||
*
|
||||
* Author Karsten Keil <kkeil@novell.com>
|
||||
*
|
||||
* Basic declarations for the mISDN HW channels
|
||||
*
|
||||
* Copyright 2008 by Karsten Keil <kkeil@novell.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef MISDNHW_H
|
||||
#define MISDNHW_H
|
||||
#include <linux/mISDNif.h>
|
||||
#include <linux/timer.h>
|
||||
|
||||
/*
|
||||
* HW DEBUG 0xHHHHGGGG
|
||||
* H - hardware driver specific bits
|
||||
* G - for all drivers
|
||||
*/
|
||||
|
||||
#define DEBUG_HW 0x00000001
|
||||
#define DEBUG_HW_OPEN 0x00000002
|
||||
#define DEBUG_HW_DCHANNEL 0x00000100
|
||||
#define DEBUG_HW_DFIFO 0x00000200
|
||||
#define DEBUG_HW_BCHANNEL 0x00001000
|
||||
#define DEBUG_HW_BFIFO 0x00002000
|
||||
|
||||
#define MAX_DFRAME_LEN_L1 300
|
||||
#define MAX_MON_FRAME 32
|
||||
#define MAX_LOG_SPACE 2048
|
||||
#define MISDN_COPY_SIZE 32
|
||||
|
||||
/* channel->Flags bit field */
|
||||
#define FLG_TX_BUSY 0 /* tx_buf in use */
|
||||
#define FLG_TX_NEXT 1 /* next_skb in use */
|
||||
#define FLG_L1_BUSY 2 /* L1 is permanent busy */
|
||||
#define FLG_L2_ACTIVATED 3 /* activated from L2 */
|
||||
#define FLG_OPEN 5 /* channel is in use */
|
||||
#define FLG_ACTIVE 6 /* channel is activated */
|
||||
#define FLG_BUSY_TIMER 7
|
||||
/* channel type */
|
||||
#define FLG_DCHANNEL 8 /* channel is D-channel */
|
||||
#define FLG_BCHANNEL 9 /* channel is B-channel */
|
||||
#define FLG_ECHANNEL 10 /* channel is E-channel */
|
||||
#define FLG_TRANSPARENT 12 /* channel use transparent data */
|
||||
#define FLG_HDLC 13 /* channel use hdlc data */
|
||||
#define FLG_L2DATA 14 /* channel use L2 DATA primitivs */
|
||||
#define FLG_ORIGIN 15 /* channel is on origin site */
|
||||
/* channel specific stuff */
|
||||
/* arcofi specific */
|
||||
#define FLG_ARCOFI_TIMER 16
|
||||
#define FLG_ARCOFI_ERROR 17
|
||||
/* isar specific */
|
||||
#define FLG_INITIALIZED 16
|
||||
#define FLG_DLEETX 17
|
||||
#define FLG_LASTDLE 18
|
||||
#define FLG_FIRST 19
|
||||
#define FLG_LASTDATA 20
|
||||
#define FLG_NMD_DATA 21
|
||||
#define FLG_FTI_RUN 22
|
||||
#define FLG_LL_OK 23
|
||||
#define FLG_LL_CONN 24
|
||||
#define FLG_DTMFSEND 25
|
||||
|
||||
/* workq events */
|
||||
#define FLG_RECVQUEUE 30
|
||||
#define FLG_PHCHANGE 31
|
||||
|
||||
#define schedule_event(s, ev) do { \
|
||||
test_and_set_bit(ev, &((s)->Flags)); \
|
||||
schedule_work(&((s)->workq)); \
|
||||
} while (0)
|
||||
|
||||
struct dchannel {
|
||||
struct mISDNdevice dev;
|
||||
u_long Flags;
|
||||
struct work_struct workq;
|
||||
void (*phfunc) (struct dchannel *);
|
||||
u_int state;
|
||||
void *l1;
|
||||
/* HW access */
|
||||
u_char (*read_reg) (void *, u_char);
|
||||
void (*write_reg) (void *, u_char, u_char);
|
||||
void (*read_fifo) (void *, u_char *, int);
|
||||
void (*write_fifo) (void *, u_char *, int);
|
||||
void *hw;
|
||||
int slot; /* multiport card channel slot */
|
||||
struct timer_list timer;
|
||||
/* receive data */
|
||||
struct sk_buff *rx_skb;
|
||||
int maxlen;
|
||||
/* send data */
|
||||
struct sk_buff_head squeue;
|
||||
struct sk_buff_head rqueue;
|
||||
struct sk_buff *tx_skb;
|
||||
int tx_idx;
|
||||
int debug;
|
||||
/* statistics */
|
||||
int err_crc;
|
||||
int err_tx;
|
||||
int err_rx;
|
||||
};
|
||||
|
||||
typedef int (dchannel_l1callback)(struct dchannel *, u_int);
|
||||
extern int create_l1(struct dchannel *, dchannel_l1callback *);
|
||||
|
||||
/* private L1 commands */
|
||||
#define INFO0 0x8002
|
||||
#define INFO1 0x8102
|
||||
#define INFO2 0x8202
|
||||
#define INFO3_P8 0x8302
|
||||
#define INFO3_P10 0x8402
|
||||
#define INFO4_P8 0x8502
|
||||
#define INFO4_P10 0x8602
|
||||
#define LOSTFRAMING 0x8702
|
||||
#define ANYSIGNAL 0x8802
|
||||
#define HW_POWERDOWN 0x8902
|
||||
#define HW_RESET_REQ 0x8a02
|
||||
#define HW_POWERUP_REQ 0x8b02
|
||||
#define HW_DEACT_REQ 0x8c02
|
||||
#define HW_ACTIVATE_REQ 0x8e02
|
||||
#define HW_D_NOBLOCKED 0x8f02
|
||||
#define HW_RESET_IND 0x9002
|
||||
#define HW_POWERUP_IND 0x9102
|
||||
#define HW_DEACT_IND 0x9202
|
||||
#define HW_ACTIVATE_IND 0x9302
|
||||
#define HW_DEACT_CNF 0x9402
|
||||
#define HW_TESTLOOP 0x9502
|
||||
#define HW_TESTRX_RAW 0x9602
|
||||
#define HW_TESTRX_HDLC 0x9702
|
||||
#define HW_TESTRX_OFF 0x9802
|
||||
|
||||
struct layer1;
|
||||
extern int l1_event(struct layer1 *, u_int);
|
||||
|
||||
|
||||
struct bchannel {
|
||||
struct mISDNchannel ch;
|
||||
int nr;
|
||||
u_long Flags;
|
||||
struct work_struct workq;
|
||||
u_int state;
|
||||
/* HW access */
|
||||
u_char (*read_reg) (void *, u_char);
|
||||
void (*write_reg) (void *, u_char, u_char);
|
||||
void (*read_fifo) (void *, u_char *, int);
|
||||
void (*write_fifo) (void *, u_char *, int);
|
||||
void *hw;
|
||||
int slot; /* multiport card channel slot */
|
||||
struct timer_list timer;
|
||||
/* receive data */
|
||||
struct sk_buff *rx_skb;
|
||||
int maxlen;
|
||||
/* send data */
|
||||
struct sk_buff *next_skb;
|
||||
struct sk_buff *tx_skb;
|
||||
struct sk_buff_head rqueue;
|
||||
int rcount;
|
||||
int tx_idx;
|
||||
int debug;
|
||||
/* statistics */
|
||||
int err_crc;
|
||||
int err_tx;
|
||||
int err_rx;
|
||||
};
|
||||
|
||||
extern int mISDN_initdchannel(struct dchannel *, int, void *);
|
||||
extern int mISDN_initbchannel(struct bchannel *, int);
|
||||
extern int mISDN_freedchannel(struct dchannel *);
|
||||
extern int mISDN_freebchannel(struct bchannel *);
|
||||
extern void queue_ch_frame(struct mISDNchannel *, u_int,
|
||||
int, struct sk_buff *);
|
||||
extern int dchannel_senddata(struct dchannel *, struct sk_buff *);
|
||||
extern int bchannel_senddata(struct bchannel *, struct sk_buff *);
|
||||
extern void recv_Dchannel(struct dchannel *);
|
||||
extern void recv_Bchannel(struct bchannel *);
|
||||
extern void recv_Dchannel_skb(struct dchannel *, struct sk_buff *);
|
||||
extern void recv_Bchannel_skb(struct bchannel *, struct sk_buff *);
|
||||
extern void confirm_Bsend(struct bchannel *bch);
|
||||
extern int get_next_bframe(struct bchannel *);
|
||||
extern int get_next_dframe(struct dchannel *);
|
||||
|
||||
#endif
|
||||
487
include/linux/mISDNif.h
Normal file
487
include/linux/mISDNif.h
Normal file
|
|
@ -0,0 +1,487 @@
|
|||
/*
|
||||
*
|
||||
* Author Karsten Keil <kkeil@novell.com>
|
||||
*
|
||||
* Copyright 2008 by Karsten Keil <kkeil@novell.com>
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE
|
||||
* version 2.1 as published by the Free Software Foundation.
|
||||
*
|
||||
* This code 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 LESSER GENERAL PUBLIC LICENSE for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef mISDNIF_H
|
||||
#define mISDNIF_H
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/socket.h>
|
||||
|
||||
/*
|
||||
* ABI Version 32 bit
|
||||
*
|
||||
* <8 bit> Major version
|
||||
* - changed if any interface become backwards incompatible
|
||||
*
|
||||
* <8 bit> Minor version
|
||||
* - changed if any interface is extended but backwards compatible
|
||||
*
|
||||
* <16 bit> Release number
|
||||
* - should be incremented on every checkin
|
||||
*/
|
||||
#define MISDN_MAJOR_VERSION 1
|
||||
#define MISDN_MINOR_VERSION 0
|
||||
#define MISDN_RELEASE 18
|
||||
|
||||
/* primitives for information exchange
|
||||
* generell format
|
||||
* <16 bit 0 >
|
||||
* <8 bit command>
|
||||
* BIT 8 = 1 LAYER private
|
||||
* BIT 7 = 1 answer
|
||||
* BIT 6 = 1 DATA
|
||||
* <8 bit target layer mask>
|
||||
*
|
||||
* Layer = 00 is reserved for general commands
|
||||
Layer = 01 L2 -> HW
|
||||
Layer = 02 HW -> L2
|
||||
Layer = 04 L3 -> L2
|
||||
Layer = 08 L2 -> L3
|
||||
* Layer = FF is reserved for broadcast commands
|
||||
*/
|
||||
|
||||
#define MISDN_CMDMASK 0xff00
|
||||
#define MISDN_LAYERMASK 0x00ff
|
||||
|
||||
/* generell commands */
|
||||
#define OPEN_CHANNEL 0x0100
|
||||
#define CLOSE_CHANNEL 0x0200
|
||||
#define CONTROL_CHANNEL 0x0300
|
||||
#define CHECK_DATA 0x0400
|
||||
|
||||
/* layer 2 -> layer 1 */
|
||||
#define PH_ACTIVATE_REQ 0x0101
|
||||
#define PH_DEACTIVATE_REQ 0x0201
|
||||
#define PH_DATA_REQ 0x2001
|
||||
#define MPH_ACTIVATE_REQ 0x0501
|
||||
#define MPH_DEACTIVATE_REQ 0x0601
|
||||
#define MPH_INFORMATION_REQ 0x0701
|
||||
#define PH_CONTROL_REQ 0x0801
|
||||
|
||||
/* layer 1 -> layer 2 */
|
||||
#define PH_ACTIVATE_IND 0x0102
|
||||
#define PH_ACTIVATE_CNF 0x4102
|
||||
#define PH_DEACTIVATE_IND 0x0202
|
||||
#define PH_DEACTIVATE_CNF 0x4202
|
||||
#define PH_DATA_IND 0x2002
|
||||
#define MPH_ACTIVATE_IND 0x0502
|
||||
#define MPH_DEACTIVATE_IND 0x0602
|
||||
#define MPH_INFORMATION_IND 0x0702
|
||||
#define PH_DATA_CNF 0x6002
|
||||
#define PH_CONTROL_IND 0x0802
|
||||
#define PH_CONTROL_CNF 0x4802
|
||||
|
||||
/* layer 3 -> layer 2 */
|
||||
#define DL_ESTABLISH_REQ 0x1004
|
||||
#define DL_RELEASE_REQ 0x1104
|
||||
#define DL_DATA_REQ 0x3004
|
||||
#define DL_UNITDATA_REQ 0x3104
|
||||
#define DL_INFORMATION_REQ 0x0004
|
||||
|
||||
/* layer 2 -> layer 3 */
|
||||
#define DL_ESTABLISH_IND 0x1008
|
||||
#define DL_ESTABLISH_CNF 0x5008
|
||||
#define DL_RELEASE_IND 0x1108
|
||||
#define DL_RELEASE_CNF 0x5108
|
||||
#define DL_DATA_IND 0x3008
|
||||
#define DL_UNITDATA_IND 0x3108
|
||||
#define DL_INFORMATION_IND 0x0008
|
||||
|
||||
/* intern layer 2 managment */
|
||||
#define MDL_ASSIGN_REQ 0x1804
|
||||
#define MDL_ASSIGN_IND 0x1904
|
||||
#define MDL_REMOVE_REQ 0x1A04
|
||||
#define MDL_REMOVE_IND 0x1B04
|
||||
#define MDL_STATUS_UP_IND 0x1C04
|
||||
#define MDL_STATUS_DOWN_IND 0x1D04
|
||||
#define MDL_STATUS_UI_IND 0x1E04
|
||||
#define MDL_ERROR_IND 0x1F04
|
||||
#define MDL_ERROR_RSP 0x5F04
|
||||
|
||||
/* DL_INFORMATION_IND types */
|
||||
#define DL_INFO_L2_CONNECT 0x0001
|
||||
#define DL_INFO_L2_REMOVED 0x0002
|
||||
|
||||
/* PH_CONTROL types */
|
||||
/* TOUCH TONE IS 0x20XX XX "0"..."9", "A","B","C","D","*","#" */
|
||||
#define DTMF_TONE_VAL 0x2000
|
||||
#define DTMF_TONE_MASK 0x007F
|
||||
#define DTMF_TONE_START 0x2100
|
||||
#define DTMF_TONE_STOP 0x2200
|
||||
#define DTMF_HFC_COEF 0x4000
|
||||
#define DSP_CONF_JOIN 0x2403
|
||||
#define DSP_CONF_SPLIT 0x2404
|
||||
#define DSP_RECEIVE_OFF 0x2405
|
||||
#define DSP_RECEIVE_ON 0x2406
|
||||
#define DSP_ECHO_ON 0x2407
|
||||
#define DSP_ECHO_OFF 0x2408
|
||||
#define DSP_MIX_ON 0x2409
|
||||
#define DSP_MIX_OFF 0x240a
|
||||
#define DSP_DELAY 0x240b
|
||||
#define DSP_JITTER 0x240c
|
||||
#define DSP_TXDATA_ON 0x240d
|
||||
#define DSP_TXDATA_OFF 0x240e
|
||||
#define DSP_TX_DEJITTER 0x240f
|
||||
#define DSP_TX_DEJ_OFF 0x2410
|
||||
#define DSP_TONE_PATT_ON 0x2411
|
||||
#define DSP_TONE_PATT_OFF 0x2412
|
||||
#define DSP_VOL_CHANGE_TX 0x2413
|
||||
#define DSP_VOL_CHANGE_RX 0x2414
|
||||
#define DSP_BF_ENABLE_KEY 0x2415
|
||||
#define DSP_BF_DISABLE 0x2416
|
||||
#define DSP_BF_ACCEPT 0x2416
|
||||
#define DSP_BF_REJECT 0x2417
|
||||
#define DSP_PIPELINE_CFG 0x2418
|
||||
#define HFC_VOL_CHANGE_TX 0x2601
|
||||
#define HFC_VOL_CHANGE_RX 0x2602
|
||||
#define HFC_SPL_LOOP_ON 0x2603
|
||||
#define HFC_SPL_LOOP_OFF 0x2604
|
||||
|
||||
/* DSP_TONE_PATT_ON parameter */
|
||||
#define TONE_OFF 0x0000
|
||||
#define TONE_GERMAN_DIALTONE 0x0001
|
||||
#define TONE_GERMAN_OLDDIALTONE 0x0002
|
||||
#define TONE_AMERICAN_DIALTONE 0x0003
|
||||
#define TONE_GERMAN_DIALPBX 0x0004
|
||||
#define TONE_GERMAN_OLDDIALPBX 0x0005
|
||||
#define TONE_AMERICAN_DIALPBX 0x0006
|
||||
#define TONE_GERMAN_RINGING 0x0007
|
||||
#define TONE_GERMAN_OLDRINGING 0x0008
|
||||
#define TONE_AMERICAN_RINGPBX 0x000b
|
||||
#define TONE_GERMAN_RINGPBX 0x000c
|
||||
#define TONE_GERMAN_OLDRINGPBX 0x000d
|
||||
#define TONE_AMERICAN_RINGING 0x000e
|
||||
#define TONE_GERMAN_BUSY 0x000f
|
||||
#define TONE_GERMAN_OLDBUSY 0x0010
|
||||
#define TONE_AMERICAN_BUSY 0x0011
|
||||
#define TONE_GERMAN_HANGUP 0x0012
|
||||
#define TONE_GERMAN_OLDHANGUP 0x0013
|
||||
#define TONE_AMERICAN_HANGUP 0x0014
|
||||
#define TONE_SPECIAL_INFO 0x0015
|
||||
#define TONE_GERMAN_GASSENBESETZT 0x0016
|
||||
#define TONE_GERMAN_AUFSCHALTTON 0x0016
|
||||
|
||||
/* MPH_INFORMATION_IND */
|
||||
#define L1_SIGNAL_LOS_OFF 0x0010
|
||||
#define L1_SIGNAL_LOS_ON 0x0011
|
||||
#define L1_SIGNAL_AIS_OFF 0x0012
|
||||
#define L1_SIGNAL_AIS_ON 0x0013
|
||||
#define L1_SIGNAL_RDI_OFF 0x0014
|
||||
#define L1_SIGNAL_RDI_ON 0x0015
|
||||
#define L1_SIGNAL_SLIP_RX 0x0020
|
||||
#define L1_SIGNAL_SLIP_TX 0x0021
|
||||
|
||||
/*
|
||||
* protocol ids
|
||||
* D channel 1-31
|
||||
* B channel 33 - 63
|
||||
*/
|
||||
|
||||
#define ISDN_P_NONE 0
|
||||
#define ISDN_P_BASE 0
|
||||
#define ISDN_P_TE_S0 0x01
|
||||
#define ISDN_P_NT_S0 0x02
|
||||
#define ISDN_P_TE_E1 0x03
|
||||
#define ISDN_P_NT_E1 0x04
|
||||
#define ISDN_P_LAPD_TE 0x10
|
||||
#define ISDN_P_LAPD_NT 0x11
|
||||
|
||||
#define ISDN_P_B_MASK 0x1f
|
||||
#define ISDN_P_B_START 0x20
|
||||
|
||||
#define ISDN_P_B_RAW 0x21
|
||||
#define ISDN_P_B_HDLC 0x22
|
||||
#define ISDN_P_B_X75SLP 0x23
|
||||
#define ISDN_P_B_L2DTMF 0x24
|
||||
#define ISDN_P_B_L2DSP 0x25
|
||||
#define ISDN_P_B_L2DSPHDLC 0x26
|
||||
|
||||
#define OPTION_L2_PMX 1
|
||||
#define OPTION_L2_PTP 2
|
||||
#define OPTION_L2_FIXEDTEI 3
|
||||
#define OPTION_L2_CLEANUP 4
|
||||
|
||||
/* should be in sync with linux/kobject.h:KOBJ_NAME_LEN */
|
||||
#define MISDN_MAX_IDLEN 20
|
||||
|
||||
struct mISDNhead {
|
||||
unsigned int prim;
|
||||
unsigned int id;
|
||||
} __attribute__((packed));
|
||||
|
||||
#define MISDN_HEADER_LEN sizeof(struct mISDNhead)
|
||||
#define MAX_DATA_SIZE 2048
|
||||
#define MAX_DATA_MEM (MAX_DATA_SIZE + MISDN_HEADER_LEN)
|
||||
#define MAX_DFRAME_LEN 260
|
||||
|
||||
#define MISDN_ID_ADDR_MASK 0xFFFF
|
||||
#define MISDN_ID_TEI_MASK 0xFF00
|
||||
#define MISDN_ID_SAPI_MASK 0x00FF
|
||||
#define MISDN_ID_TEI_ANY 0x7F00
|
||||
|
||||
#define MISDN_ID_ANY 0xFFFF
|
||||
#define MISDN_ID_NONE 0xFFFE
|
||||
|
||||
#define GROUP_TEI 127
|
||||
#define TEI_SAPI 63
|
||||
#define CTRL_SAPI 0
|
||||
|
||||
#define MISDN_CHMAP_SIZE 4
|
||||
|
||||
#define SOL_MISDN 0
|
||||
|
||||
struct sockaddr_mISDN {
|
||||
sa_family_t family;
|
||||
unsigned char dev;
|
||||
unsigned char channel;
|
||||
unsigned char sapi;
|
||||
unsigned char tei;
|
||||
};
|
||||
|
||||
/* timer device ioctl */
|
||||
#define IMADDTIMER _IOR('I', 64, int)
|
||||
#define IMDELTIMER _IOR('I', 65, int)
|
||||
/* socket ioctls */
|
||||
#define IMGETVERSION _IOR('I', 66, int)
|
||||
#define IMGETCOUNT _IOR('I', 67, int)
|
||||
#define IMGETDEVINFO _IOR('I', 68, int)
|
||||
#define IMCTRLREQ _IOR('I', 69, int)
|
||||
#define IMCLEAR_L2 _IOR('I', 70, int)
|
||||
|
||||
struct mISDNversion {
|
||||
unsigned char major;
|
||||
unsigned char minor;
|
||||
unsigned short release;
|
||||
};
|
||||
|
||||
struct mISDN_devinfo {
|
||||
u_int id;
|
||||
u_int Dprotocols;
|
||||
u_int Bprotocols;
|
||||
u_int protocol;
|
||||
u_long channelmap[MISDN_CHMAP_SIZE];
|
||||
u_int nrbchan;
|
||||
char name[MISDN_MAX_IDLEN];
|
||||
};
|
||||
|
||||
/* CONTROL_CHANNEL parameters */
|
||||
#define MISDN_CTRL_GETOP 0x0000
|
||||
#define MISDN_CTRL_LOOP 0x0001
|
||||
#define MISDN_CTRL_CONNECT 0x0002
|
||||
#define MISDN_CTRL_DISCONNECT 0x0004
|
||||
#define MISDN_CTRL_PCMCONNECT 0x0010
|
||||
#define MISDN_CTRL_PCMDISCONNECT 0x0020
|
||||
#define MISDN_CTRL_SETPEER 0x0040
|
||||
#define MISDN_CTRL_UNSETPEER 0x0080
|
||||
#define MISDN_CTRL_RX_OFF 0x0100
|
||||
#define MISDN_CTRL_HW_FEATURES_OP 0x2000
|
||||
#define MISDN_CTRL_HW_FEATURES 0x2001
|
||||
#define MISDN_CTRL_HFC_OP 0x4000
|
||||
#define MISDN_CTRL_HFC_PCM_CONN 0x4001
|
||||
#define MISDN_CTRL_HFC_PCM_DISC 0x4002
|
||||
#define MISDN_CTRL_HFC_CONF_JOIN 0x4003
|
||||
#define MISDN_CTRL_HFC_CONF_SPLIT 0x4004
|
||||
#define MISDN_CTRL_HFC_RECEIVE_OFF 0x4005
|
||||
#define MISDN_CTRL_HFC_RECEIVE_ON 0x4006
|
||||
#define MISDN_CTRL_HFC_ECHOCAN_ON 0x4007
|
||||
#define MISDN_CTRL_HFC_ECHOCAN_OFF 0x4008
|
||||
|
||||
|
||||
/* socket options */
|
||||
#define MISDN_TIME_STAMP 0x0001
|
||||
|
||||
struct mISDN_ctrl_req {
|
||||
int op;
|
||||
int channel;
|
||||
int p1;
|
||||
int p2;
|
||||
};
|
||||
|
||||
/* muxer options */
|
||||
#define MISDN_OPT_ALL 1
|
||||
#define MISDN_OPT_TEIMGR 2
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/list.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/net.h>
|
||||
#include <net/sock.h>
|
||||
#include <linux/completion.h>
|
||||
|
||||
#define DEBUG_CORE 0x000000ff
|
||||
#define DEBUG_CORE_FUNC 0x00000002
|
||||
#define DEBUG_SOCKET 0x00000004
|
||||
#define DEBUG_MANAGER 0x00000008
|
||||
#define DEBUG_SEND_ERR 0x00000010
|
||||
#define DEBUG_MSG_THREAD 0x00000020
|
||||
#define DEBUG_QUEUE_FUNC 0x00000040
|
||||
#define DEBUG_L1 0x0000ff00
|
||||
#define DEBUG_L1_FSM 0x00000200
|
||||
#define DEBUG_L2 0x00ff0000
|
||||
#define DEBUG_L2_FSM 0x00020000
|
||||
#define DEBUG_L2_CTRL 0x00040000
|
||||
#define DEBUG_L2_RECV 0x00080000
|
||||
#define DEBUG_L2_TEI 0x00100000
|
||||
#define DEBUG_L2_TEIFSM 0x00200000
|
||||
#define DEBUG_TIMER 0x01000000
|
||||
|
||||
#define mISDN_HEAD_P(s) ((struct mISDNhead *)&s->cb[0])
|
||||
#define mISDN_HEAD_PRIM(s) (((struct mISDNhead *)&s->cb[0])->prim)
|
||||
#define mISDN_HEAD_ID(s) (((struct mISDNhead *)&s->cb[0])->id)
|
||||
|
||||
/* socket states */
|
||||
#define MISDN_OPEN 1
|
||||
#define MISDN_BOUND 2
|
||||
#define MISDN_CLOSED 3
|
||||
|
||||
struct mISDNchannel;
|
||||
struct mISDNdevice;
|
||||
struct mISDNstack;
|
||||
|
||||
struct channel_req {
|
||||
u_int protocol;
|
||||
struct sockaddr_mISDN adr;
|
||||
struct mISDNchannel *ch;
|
||||
};
|
||||
|
||||
typedef int (ctrl_func_t)(struct mISDNchannel *, u_int, void *);
|
||||
typedef int (send_func_t)(struct mISDNchannel *, struct sk_buff *);
|
||||
typedef int (create_func_t)(struct channel_req *);
|
||||
|
||||
struct Bprotocol {
|
||||
struct list_head list;
|
||||
char *name;
|
||||
u_int Bprotocols;
|
||||
create_func_t *create;
|
||||
};
|
||||
|
||||
struct mISDNchannel {
|
||||
struct list_head list;
|
||||
u_int protocol;
|
||||
u_int nr;
|
||||
u_long opt;
|
||||
u_int addr;
|
||||
struct mISDNstack *st;
|
||||
struct mISDNchannel *peer;
|
||||
send_func_t *send;
|
||||
send_func_t *recv;
|
||||
ctrl_func_t *ctrl;
|
||||
};
|
||||
|
||||
struct mISDN_sock_list {
|
||||
struct hlist_head head;
|
||||
rwlock_t lock;
|
||||
};
|
||||
|
||||
struct mISDN_sock {
|
||||
struct sock sk;
|
||||
struct mISDNchannel ch;
|
||||
u_int cmask;
|
||||
struct mISDNdevice *dev;
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct mISDNdevice {
|
||||
struct mISDNchannel D;
|
||||
u_int id;
|
||||
char name[MISDN_MAX_IDLEN];
|
||||
u_int Dprotocols;
|
||||
u_int Bprotocols;
|
||||
u_int nrbchan;
|
||||
u_long channelmap[MISDN_CHMAP_SIZE];
|
||||
struct list_head bchannels;
|
||||
struct mISDNchannel *teimgr;
|
||||
struct device dev;
|
||||
};
|
||||
|
||||
struct mISDNstack {
|
||||
u_long status;
|
||||
struct mISDNdevice *dev;
|
||||
struct task_struct *thread;
|
||||
struct completion *notify;
|
||||
wait_queue_head_t workq;
|
||||
struct sk_buff_head msgq;
|
||||
struct list_head layer2;
|
||||
struct mISDNchannel *layer1;
|
||||
struct mISDNchannel own;
|
||||
struct mutex lmutex; /* protect lists */
|
||||
struct mISDN_sock_list l1sock;
|
||||
#ifdef MISDN_MSG_STATS
|
||||
u_int msg_cnt;
|
||||
u_int sleep_cnt;
|
||||
u_int stopped_cnt;
|
||||
#endif
|
||||
};
|
||||
|
||||
/* global alloc/queue dunctions */
|
||||
|
||||
static inline struct sk_buff *
|
||||
mI_alloc_skb(unsigned int len, gfp_t gfp_mask)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
|
||||
skb = alloc_skb(len + MISDN_HEADER_LEN, gfp_mask);
|
||||
if (likely(skb))
|
||||
skb_reserve(skb, MISDN_HEADER_LEN);
|
||||
return skb;
|
||||
}
|
||||
|
||||
static inline struct sk_buff *
|
||||
_alloc_mISDN_skb(u_int prim, u_int id, u_int len, void *dp, gfp_t gfp_mask)
|
||||
{
|
||||
struct sk_buff *skb = mI_alloc_skb(len, gfp_mask);
|
||||
struct mISDNhead *hh;
|
||||
|
||||
if (!skb)
|
||||
return NULL;
|
||||
if (len)
|
||||
memcpy(skb_put(skb, len), dp, len);
|
||||
hh = mISDN_HEAD_P(skb);
|
||||
hh->prim = prim;
|
||||
hh->id = id;
|
||||
return skb;
|
||||
}
|
||||
|
||||
static inline void
|
||||
_queue_data(struct mISDNchannel *ch, u_int prim,
|
||||
u_int id, u_int len, void *dp, gfp_t gfp_mask)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
|
||||
if (!ch->peer)
|
||||
return;
|
||||
skb = _alloc_mISDN_skb(prim, id, len, dp, gfp_mask);
|
||||
if (!skb)
|
||||
return;
|
||||
if (ch->recv(ch->peer, skb))
|
||||
dev_kfree_skb(skb);
|
||||
}
|
||||
|
||||
/* global register/unregister functions */
|
||||
|
||||
extern int mISDN_register_device(struct mISDNdevice *, char *name);
|
||||
extern void mISDN_unregister_device(struct mISDNdevice *);
|
||||
extern int mISDN_register_Bprotocol(struct Bprotocol *);
|
||||
extern void mISDN_unregister_Bprotocol(struct Bprotocol *);
|
||||
|
||||
extern void set_channel_address(struct mISDNchannel *, u_int, u_int);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* mISDNIF_H */
|
||||
|
|
@ -53,7 +53,7 @@
|
|||
#define STL_SIOMEMMAJOR 28
|
||||
#define ACSI_MAJOR 28
|
||||
#define AZTECH_CDROM_MAJOR 29
|
||||
#define GRAPHDEV_MAJOR 29 /* SparcLinux & Linux/68k /dev/fb */
|
||||
#define FB_MAJOR 29 /* /dev/fb* framebuffers */
|
||||
#define CM206_CDROM_MAJOR 32
|
||||
#define IDE2_MAJOR 33
|
||||
#define IDE3_MAJOR 34
|
||||
|
|
|
|||
|
|
@ -35,7 +35,10 @@ extern int mem_cgroup_charge(struct page *page, struct mm_struct *mm,
|
|||
extern int mem_cgroup_cache_charge(struct page *page, struct mm_struct *mm,
|
||||
gfp_t gfp_mask);
|
||||
extern void mem_cgroup_uncharge_page(struct page *page);
|
||||
extern void mem_cgroup_uncharge_cache_page(struct page *page);
|
||||
extern void mem_cgroup_move_lists(struct page *page, bool active);
|
||||
extern int mem_cgroup_shrink_usage(struct mm_struct *mm, gfp_t gfp_mask);
|
||||
|
||||
extern unsigned long mem_cgroup_isolate_pages(unsigned long nr_to_scan,
|
||||
struct list_head *dst,
|
||||
unsigned long *scanned, int order,
|
||||
|
|
@ -50,9 +53,9 @@ extern struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p);
|
|||
#define mm_match_cgroup(mm, cgroup) \
|
||||
((cgroup) == mem_cgroup_from_task((mm)->owner))
|
||||
|
||||
extern int mem_cgroup_prepare_migration(struct page *page);
|
||||
extern int
|
||||
mem_cgroup_prepare_migration(struct page *page, struct page *newpage);
|
||||
extern void mem_cgroup_end_migration(struct page *page);
|
||||
extern void mem_cgroup_page_migration(struct page *page, struct page *newpage);
|
||||
|
||||
/*
|
||||
* For memory reclaim.
|
||||
|
|
@ -97,6 +100,15 @@ static inline void mem_cgroup_uncharge_page(struct page *page)
|
|||
{
|
||||
}
|
||||
|
||||
static inline void mem_cgroup_uncharge_cache_page(struct page *page)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int mem_cgroup_shrink_usage(struct mm_struct *mm, gfp_t gfp_mask)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void mem_cgroup_move_lists(struct page *page, bool active)
|
||||
{
|
||||
}
|
||||
|
|
@ -112,7 +124,8 @@ static inline int task_in_mem_cgroup(struct task_struct *task,
|
|||
return 1;
|
||||
}
|
||||
|
||||
static inline int mem_cgroup_prepare_migration(struct page *page)
|
||||
static inline int
|
||||
mem_cgroup_prepare_migration(struct page *page, struct page *newpage)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -121,11 +134,6 @@ static inline void mem_cgroup_end_migration(struct page *page)
|
|||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
mem_cgroup_page_migration(struct page *page, struct page *newpage)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int mem_cgroup_calc_mapped_ratio(struct mem_cgroup *mem)
|
||||
{
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -13,12 +13,12 @@ struct mem_section;
|
|||
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||
|
||||
/*
|
||||
* Magic number for free bootmem.
|
||||
* Types for free bootmem.
|
||||
* The normal smallest mapcount is -1. Here is smaller value than it.
|
||||
*/
|
||||
#define SECTION_INFO 0xfffffffe
|
||||
#define MIX_INFO 0xfffffffd
|
||||
#define NODE_INFO 0xfffffffc
|
||||
#define SECTION_INFO (-1 - 1)
|
||||
#define MIX_SECTION_INFO (-1 - 2)
|
||||
#define NODE_INFO (-1 - 3)
|
||||
|
||||
/*
|
||||
* pgdat resizing functions
|
||||
|
|
@ -199,6 +199,18 @@ extern int walk_memory_resource(unsigned long start_pfn,
|
|||
unsigned long nr_pages, void *arg,
|
||||
int (*func)(unsigned long, unsigned long, void *));
|
||||
|
||||
#ifdef CONFIG_MEMORY_HOTREMOVE
|
||||
|
||||
extern int is_mem_section_removable(unsigned long pfn, unsigned long nr_pages);
|
||||
|
||||
#else
|
||||
static inline int is_mem_section_removable(unsigned long pfn,
|
||||
unsigned long nr_pages)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_MEMORY_HOTREMOVE */
|
||||
|
||||
extern int add_memory(int nid, u64 start, u64 size);
|
||||
extern int arch_add_memory(int nid, u64 start, u64 size);
|
||||
extern int remove_memory(u64 start, u64 size);
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ enum {
|
|||
#include <linux/rbtree.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/nodemask.h>
|
||||
#include <linux/pagemap.h>
|
||||
|
||||
struct mm_struct;
|
||||
|
||||
|
|
@ -220,6 +221,24 @@ extern int mpol_parse_str(char *str, struct mempolicy **mpol, int no_context);
|
|||
extern int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol,
|
||||
int no_context);
|
||||
#endif
|
||||
|
||||
/* Check if a vma is migratable */
|
||||
static inline int vma_migratable(struct vm_area_struct *vma)
|
||||
{
|
||||
if (vma->vm_flags & (VM_IO|VM_HUGETLB|VM_PFNMAP|VM_RESERVED))
|
||||
return 0;
|
||||
/*
|
||||
* Migration allocates pages in the highest zone. If we cannot
|
||||
* do so then migration (at least from node to node) is not
|
||||
* possible.
|
||||
*/
|
||||
if (vma->vm_file &&
|
||||
gfp_zone(mapping_gfp_mask(vma->vm_file->f_mapping))
|
||||
< policy_zone)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
struct mempolicy {};
|
||||
|
|
|
|||
|
|
@ -263,6 +263,10 @@ struct memstick_dev {
|
|||
/* Get next request from the media driver. */
|
||||
int (*next_request)(struct memstick_dev *card,
|
||||
struct memstick_request **mrq);
|
||||
/* Tell the media driver to stop doing things */
|
||||
void (*stop)(struct memstick_dev *card);
|
||||
/* Allow the media driver to continue */
|
||||
void (*start)(struct memstick_dev *card);
|
||||
|
||||
struct device dev;
|
||||
};
|
||||
|
|
@ -284,7 +288,7 @@ struct memstick_host {
|
|||
/* Notify the host that some requests are pending. */
|
||||
void (*request)(struct memstick_host *host);
|
||||
/* Set host IO parameters (power, clock, etc). */
|
||||
void (*set_param)(struct memstick_host *host,
|
||||
int (*set_param)(struct memstick_host *host,
|
||||
enum memstick_param param,
|
||||
int value);
|
||||
unsigned long private[0] ____cacheline_aligned;
|
||||
|
|
|
|||
|
|
@ -3,28 +3,10 @@
|
|||
|
||||
#include <linux/mm.h>
|
||||
#include <linux/mempolicy.h>
|
||||
#include <linux/pagemap.h>
|
||||
|
||||
typedef struct page *new_page_t(struct page *, unsigned long private, int **);
|
||||
|
||||
#ifdef CONFIG_MIGRATION
|
||||
/* Check if a vma is migratable */
|
||||
static inline int vma_migratable(struct vm_area_struct *vma)
|
||||
{
|
||||
if (vma->vm_flags & (VM_IO|VM_HUGETLB|VM_PFNMAP|VM_RESERVED))
|
||||
return 0;
|
||||
/*
|
||||
* Migration allocates pages in the highest zone. If we cannot
|
||||
* do so then migration (at least from node to node) is not
|
||||
* possible.
|
||||
*/
|
||||
if (vma->vm_file &&
|
||||
gfp_zone(mapping_gfp_mask(vma->vm_file->f_mapping))
|
||||
< policy_zone)
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern int isolate_lru_page(struct page *p, struct list_head *pagelist);
|
||||
extern int putback_lru_pages(struct list_head *l);
|
||||
extern int migrate_page(struct address_space *,
|
||||
|
|
@ -39,9 +21,6 @@ extern int migrate_vmas(struct mm_struct *mm,
|
|||
const nodemask_t *from, const nodemask_t *to,
|
||||
unsigned long flags);
|
||||
#else
|
||||
static inline int vma_migratable(struct vm_area_struct *vma)
|
||||
{ return 0; }
|
||||
|
||||
static inline int isolate_lru_page(struct page *p, struct list_head *list)
|
||||
{ return -ENOSYS; }
|
||||
static inline int putback_lru_pages(struct list_head *l) { return 0; }
|
||||
|
|
|
|||
|
|
@ -68,6 +68,14 @@ enum {
|
|||
MLX4_DEV_CAP_FLAG_UD_MCAST = 1 << 21
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX4_BMME_FLAG_LOCAL_INV = 1 << 6,
|
||||
MLX4_BMME_FLAG_REMOTE_INV = 1 << 7,
|
||||
MLX4_BMME_FLAG_TYPE_2_WIN = 1 << 9,
|
||||
MLX4_BMME_FLAG_RESERVED_LKEY = 1 << 10,
|
||||
MLX4_BMME_FLAG_FAST_REG_WR = 1 << 11,
|
||||
};
|
||||
|
||||
enum mlx4_event {
|
||||
MLX4_EVENT_TYPE_COMP = 0x00,
|
||||
MLX4_EVENT_TYPE_PATH_MIG = 0x01,
|
||||
|
|
@ -184,6 +192,8 @@ struct mlx4_caps {
|
|||
u32 max_msg_sz;
|
||||
u32 page_size_cap;
|
||||
u32 flags;
|
||||
u32 bmme_flags;
|
||||
u32 reserved_lkey;
|
||||
u16 stat_rate_support;
|
||||
u8 port_width_cap[MLX4_MAX_PORTS + 1];
|
||||
int max_gso_sz;
|
||||
|
|
|
|||
|
|
@ -164,11 +164,13 @@ enum {
|
|||
MLX4_WQE_CTRL_SOLICITED = 1 << 1,
|
||||
MLX4_WQE_CTRL_IP_CSUM = 1 << 4,
|
||||
MLX4_WQE_CTRL_TCP_UDP_CSUM = 1 << 5,
|
||||
MLX4_WQE_CTRL_INS_VLAN = 1 << 6,
|
||||
};
|
||||
|
||||
struct mlx4_wqe_ctrl_seg {
|
||||
__be32 owner_opcode;
|
||||
u8 reserved2[3];
|
||||
__be16 vlan_tag;
|
||||
u8 ins_vlan;
|
||||
u8 fence_size;
|
||||
/*
|
||||
* High 24 bits are SRC remote buffer; low 8 bits are flags:
|
||||
|
|
@ -219,7 +221,7 @@ struct mlx4_wqe_datagram_seg {
|
|||
__be32 reservd[2];
|
||||
};
|
||||
|
||||
struct mlx4_lso_seg {
|
||||
struct mlx4_wqe_lso_seg {
|
||||
__be32 mss_hdr_size;
|
||||
__be32 header[0];
|
||||
};
|
||||
|
|
@ -233,6 +235,14 @@ struct mlx4_wqe_bind_seg {
|
|||
__be64 length;
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX4_WQE_FMR_PERM_LOCAL_READ = 1 << 27,
|
||||
MLX4_WQE_FMR_PERM_LOCAL_WRITE = 1 << 28,
|
||||
MLX4_WQE_FMR_PERM_REMOTE_READ = 1 << 29,
|
||||
MLX4_WQE_FMR_PERM_REMOTE_WRITE = 1 << 30,
|
||||
MLX4_WQE_FMR_PERM_ATOMIC = 1 << 31
|
||||
};
|
||||
|
||||
struct mlx4_wqe_fmr_seg {
|
||||
__be32 flags;
|
||||
__be32 mem_key;
|
||||
|
|
@ -255,11 +265,11 @@ struct mlx4_wqe_fmr_ext_seg {
|
|||
};
|
||||
|
||||
struct mlx4_wqe_local_inval_seg {
|
||||
u8 flags;
|
||||
u8 reserved1[3];
|
||||
__be32 flags;
|
||||
u32 reserved1;
|
||||
__be32 mem_key;
|
||||
u8 reserved2[3];
|
||||
u8 guest_id;
|
||||
u32 reserved2[2];
|
||||
__be32 guest_id;
|
||||
__be64 pa;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -41,6 +41,9 @@ extern unsigned long mmap_min_addr;
|
|||
|
||||
#define nth_page(page,n) pfn_to_page(page_to_pfn((page)) + (n))
|
||||
|
||||
/* to align the pointer to the (next) page boundary */
|
||||
#define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE)
|
||||
|
||||
/*
|
||||
* Linux kernel virtual memory manager primitives.
|
||||
* The idea being to have a "virtual" mm in the same way
|
||||
|
|
@ -100,6 +103,7 @@ extern unsigned int kobjsize(const void *objp);
|
|||
#define VM_DONTEXPAND 0x00040000 /* Cannot expand with mremap() */
|
||||
#define VM_RESERVED 0x00080000 /* Count as reserved_vm like IO */
|
||||
#define VM_ACCOUNT 0x00100000 /* Is a VM accounted object */
|
||||
#define VM_NORESERVE 0x00200000 /* should the VM suppress accounting */
|
||||
#define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */
|
||||
#define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */
|
||||
#define VM_MAPPED_COPY 0x01000000 /* T if mapped copy of data (nommu mmap) */
|
||||
|
|
@ -166,12 +170,16 @@ struct vm_operations_struct {
|
|||
void (*open)(struct vm_area_struct * area);
|
||||
void (*close)(struct vm_area_struct * area);
|
||||
int (*fault)(struct vm_area_struct *vma, struct vm_fault *vmf);
|
||||
unsigned long (*nopfn)(struct vm_area_struct *area,
|
||||
unsigned long address);
|
||||
|
||||
/* notification that a previously read-only page is about to become
|
||||
* writable, if an error is returned it will cause a SIGBUS */
|
||||
int (*page_mkwrite)(struct vm_area_struct *vma, struct page *page);
|
||||
|
||||
/* called by access_process_vm when get_user_pages() fails, typically
|
||||
* for use by special VMAs that can switch between memory and hardware
|
||||
*/
|
||||
int (*access)(struct vm_area_struct *vma, unsigned long addr,
|
||||
void *buf, int len, int write);
|
||||
#ifdef CONFIG_NUMA
|
||||
/*
|
||||
* set_policy() op must add a reference to any non-NULL @new mempolicy
|
||||
|
|
@ -674,13 +682,6 @@ static inline int page_mapped(struct page *page)
|
|||
return atomic_read(&(page)->_mapcount) >= 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Error return values for the *_nopfn functions
|
||||
*/
|
||||
#define NOPFN_SIGBUS ((unsigned long) -1)
|
||||
#define NOPFN_OOM ((unsigned long) -2)
|
||||
#define NOPFN_REFAULT ((unsigned long) -3)
|
||||
|
||||
/*
|
||||
* Different kinds of faults, as returned by handle_mm_fault().
|
||||
* Used to decide whether a process gets delivered SIGBUS or
|
||||
|
|
@ -772,14 +773,14 @@ struct mm_walk {
|
|||
|
||||
int walk_page_range(unsigned long addr, unsigned long end,
|
||||
struct mm_walk *walk);
|
||||
void free_pgd_range(struct mmu_gather **tlb, unsigned long addr,
|
||||
void free_pgd_range(struct mmu_gather *tlb, unsigned long addr,
|
||||
unsigned long end, unsigned long floor, unsigned long ceiling);
|
||||
void free_pgtables(struct mmu_gather **tlb, struct vm_area_struct *start_vma,
|
||||
unsigned long floor, unsigned long ceiling);
|
||||
int copy_page_range(struct mm_struct *dst, struct mm_struct *src,
|
||||
struct vm_area_struct *vma);
|
||||
void unmap_mapping_range(struct address_space *mapping,
|
||||
loff_t const holebegin, loff_t const holelen, int even_cows);
|
||||
int generic_access_phys(struct vm_area_struct *vma, unsigned long addr,
|
||||
void *buf, int len, int write);
|
||||
|
||||
static inline void unmap_shared_mapping_range(struct address_space *mapping,
|
||||
loff_t const holebegin, loff_t const holelen)
|
||||
|
|
@ -809,7 +810,6 @@ extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *
|
|||
|
||||
int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, unsigned long start,
|
||||
int len, int write, int force, struct page **pages, struct vm_area_struct **vmas);
|
||||
void print_bad_pte(struct vm_area_struct *, pte_t, unsigned long);
|
||||
|
||||
extern int try_to_release_page(struct page * page, gfp_t gfp_mask);
|
||||
extern void do_invalidatepage(struct page *page, unsigned long offset);
|
||||
|
|
@ -832,6 +832,39 @@ extern int mprotect_fixup(struct vm_area_struct *vma,
|
|||
struct vm_area_struct **pprev, unsigned long start,
|
||||
unsigned long end, unsigned long newflags);
|
||||
|
||||
#ifdef CONFIG_HAVE_GET_USER_PAGES_FAST
|
||||
/*
|
||||
* get_user_pages_fast provides equivalent functionality to get_user_pages,
|
||||
* operating on current and current->mm (force=0 and doesn't return any vmas).
|
||||
*
|
||||
* get_user_pages_fast may take mmap_sem and page tables, so no assumptions
|
||||
* can be made about locking. get_user_pages_fast is to be implemented in a
|
||||
* way that is advantageous (vs get_user_pages()) when the user memory area is
|
||||
* already faulted in and present in ptes. However if the pages have to be
|
||||
* faulted in, it may turn out to be slightly slower).
|
||||
*/
|
||||
int get_user_pages_fast(unsigned long start, int nr_pages, int write,
|
||||
struct page **pages);
|
||||
|
||||
#else
|
||||
/*
|
||||
* Should probably be moved to asm-generic, and architectures can include it if
|
||||
* they don't implement their own get_user_pages_fast.
|
||||
*/
|
||||
#define get_user_pages_fast(start, nr_pages, write, pages) \
|
||||
({ \
|
||||
struct mm_struct *mm = current->mm; \
|
||||
int ret; \
|
||||
\
|
||||
down_read(&mm->mmap_sem); \
|
||||
ret = get_user_pages(current, mm, start, nr_pages, \
|
||||
write, 0, pages, NULL); \
|
||||
up_read(&mm->mmap_sem); \
|
||||
\
|
||||
ret; \
|
||||
})
|
||||
#endif
|
||||
|
||||
/*
|
||||
* A callback you can register to apply pressure to ageable caches.
|
||||
*
|
||||
|
|
@ -965,9 +998,8 @@ static inline void pgtable_page_dtor(struct page *page)
|
|||
NULL: pte_offset_kernel(pmd, address))
|
||||
|
||||
extern void free_area_init(unsigned long * zones_size);
|
||||
extern void free_area_init_node(int nid, pg_data_t *pgdat,
|
||||
unsigned long * zones_size, unsigned long zone_start_pfn,
|
||||
unsigned long *zholes_size);
|
||||
extern void free_area_init_node(int nid, unsigned long * zones_size,
|
||||
unsigned long zone_start_pfn, unsigned long *zholes_size);
|
||||
#ifdef CONFIG_ARCH_POPULATES_NODE_MAP
|
||||
/*
|
||||
* With CONFIG_ARCH_POPULATES_NODE_MAP set, an architecture may initialise its
|
||||
|
|
|
|||
|
|
@ -159,6 +159,17 @@ struct vm_area_struct {
|
|||
#endif
|
||||
};
|
||||
|
||||
struct core_thread {
|
||||
struct task_struct *task;
|
||||
struct core_thread *next;
|
||||
};
|
||||
|
||||
struct core_state {
|
||||
atomic_t nr_threads;
|
||||
struct core_thread dumper;
|
||||
struct completion startup;
|
||||
};
|
||||
|
||||
struct mm_struct {
|
||||
struct vm_area_struct * mmap; /* list of VMAs */
|
||||
struct rb_root mm_rb;
|
||||
|
|
@ -175,7 +186,6 @@ struct mm_struct {
|
|||
atomic_t mm_users; /* How many users with user space? */
|
||||
atomic_t mm_count; /* How many references to "struct mm_struct" (users count as 1) */
|
||||
int map_count; /* number of VMAs */
|
||||
int core_waiters;
|
||||
struct rw_semaphore mmap_sem;
|
||||
spinlock_t page_table_lock; /* Protects page tables and some counters */
|
||||
|
||||
|
|
@ -219,8 +229,7 @@ struct mm_struct {
|
|||
|
||||
unsigned long flags; /* Must use atomic bitops to access the bits */
|
||||
|
||||
/* coredumping support */
|
||||
struct completion *core_startup_done, core_done;
|
||||
struct core_state *core_state; /* coredumping support */
|
||||
|
||||
/* aio bits */
|
||||
rwlock_t ioctx_list_lock; /* aio lock */
|
||||
|
|
|
|||
|
|
@ -111,6 +111,8 @@ struct mmc_card {
|
|||
unsigned num_info; /* number of info strings */
|
||||
const char **info; /* info strings */
|
||||
struct sdio_func_tuple *tuples; /* unknown common tuples */
|
||||
|
||||
struct dentry *debugfs_root;
|
||||
};
|
||||
|
||||
#define mmc_card_mmc(c) ((c)->type == MMC_TYPE_MMC)
|
||||
|
|
|
|||
|
|
@ -157,6 +157,8 @@ struct mmc_host {
|
|||
struct led_trigger *led; /* activity led */
|
||||
#endif
|
||||
|
||||
struct dentry *debugfs_root;
|
||||
|
||||
unsigned long private[0] ____cacheline_aligned;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
/* Not Yet Implemented */
|
||||
#define MODULE_SUPPORTED_DEVICE(name)
|
||||
|
||||
/* v850 toolchain uses a `_' prefix for all user symbols */
|
||||
/* some toolchains uses a `_' prefix for all user symbols */
|
||||
#ifndef MODULE_SYMBOL_PREFIX
|
||||
#define MODULE_SYMBOL_PREFIX ""
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ struct vfsmount {
|
|||
struct list_head mnt_child; /* and going through their mnt_child */
|
||||
int mnt_flags;
|
||||
/* 4 bytes hole on 64bits arches */
|
||||
char *mnt_devname; /* Name of device e.g. /dev/dsk/hda1 */
|
||||
const char *mnt_devname; /* Name of device e.g. /dev/dsk/hda1 */
|
||||
struct list_head mnt_list;
|
||||
struct list_head mnt_expire; /* link in fs-specific expiry list */
|
||||
struct list_head mnt_share; /* circular list of shared mounts */
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
#define _LINUX_MSDOS_FS_H
|
||||
|
||||
#include <linux/magic.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
/*
|
||||
* The MS-DOS filesystem constants/structures
|
||||
*/
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
#define SECTOR_SIZE 512 /* sector size (bytes) */
|
||||
#define SECTOR_BITS 9 /* log2(SECTOR_SIZE) */
|
||||
|
|
@ -89,24 +89,22 @@
|
|||
#define IS_FSINFO(x) (le32_to_cpu((x)->signature1) == FAT_FSINFO_SIG1 \
|
||||
&& le32_to_cpu((x)->signature2) == FAT_FSINFO_SIG2)
|
||||
|
||||
struct __fat_dirent {
|
||||
long d_ino;
|
||||
__kernel_off_t d_off;
|
||||
unsigned short d_reclen;
|
||||
char d_name[256]; /* We must not include limits.h! */
|
||||
};
|
||||
|
||||
/*
|
||||
* ioctl commands
|
||||
*/
|
||||
#define VFAT_IOCTL_READDIR_BOTH _IOR('r', 1, struct dirent [2])
|
||||
#define VFAT_IOCTL_READDIR_SHORT _IOR('r', 2, struct dirent [2])
|
||||
#define VFAT_IOCTL_READDIR_BOTH _IOR('r', 1, struct __fat_dirent[2])
|
||||
#define VFAT_IOCTL_READDIR_SHORT _IOR('r', 2, struct __fat_dirent[2])
|
||||
/* <linux/videotext.h> has used 0x72 ('r') in collision, so skip a few */
|
||||
#define FAT_IOCTL_GET_ATTRIBUTES _IOR('r', 0x10, __u32)
|
||||
#define FAT_IOCTL_SET_ATTRIBUTES _IOW('r', 0x11, __u32)
|
||||
|
||||
/*
|
||||
* vfat shortname flags
|
||||
*/
|
||||
#define VFAT_SFN_DISPLAY_LOWER 0x0001 /* convert to lowercase for display */
|
||||
#define VFAT_SFN_DISPLAY_WIN95 0x0002 /* emulate win95 rule for display */
|
||||
#define VFAT_SFN_DISPLAY_WINNT 0x0004 /* emulate winnt rule for display */
|
||||
#define VFAT_SFN_CREATE_WIN95 0x0100 /* emulate win95 rule for create */
|
||||
#define VFAT_SFN_CREATE_WINNT 0x0200 /* emulate winnt rule for create */
|
||||
|
||||
struct fat_boot_sector {
|
||||
__u8 ignored[3]; /* Boot strap short or near jump */
|
||||
__u8 system_id[8]; /* Name - can be used to special case
|
||||
|
|
@ -168,14 +166,6 @@ struct msdos_dir_slot {
|
|||
__u8 name11_12[4]; /* last 2 characters in name */
|
||||
};
|
||||
|
||||
struct fat_slot_info {
|
||||
loff_t i_pos; /* on-disk position of directory entry */
|
||||
loff_t slot_off; /* offset for slot or de start */
|
||||
int nr_slots; /* number of slots + 1(de) in filename */
|
||||
struct msdos_dir_entry *de;
|
||||
struct buffer_head *bh;
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/buffer_head.h>
|
||||
|
|
@ -184,6 +174,15 @@ struct fat_slot_info {
|
|||
#include <linux/fs.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
/*
|
||||
* vfat shortname flags
|
||||
*/
|
||||
#define VFAT_SFN_DISPLAY_LOWER 0x0001 /* convert to lowercase for display */
|
||||
#define VFAT_SFN_DISPLAY_WIN95 0x0002 /* emulate win95 rule for display */
|
||||
#define VFAT_SFN_DISPLAY_WINNT 0x0004 /* emulate winnt rule for display */
|
||||
#define VFAT_SFN_CREATE_WIN95 0x0100 /* emulate win95 rule for create */
|
||||
#define VFAT_SFN_CREATE_WINNT 0x0200 /* emulate winnt rule for create */
|
||||
|
||||
struct fat_mount_options {
|
||||
uid_t fs_uid;
|
||||
gid_t fs_gid;
|
||||
|
|
@ -202,10 +201,10 @@ struct fat_mount_options {
|
|||
utf8:1, /* Use of UTF-8 character set (Default) */
|
||||
unicode_xlate:1, /* create escape sequences for unhandled Unicode */
|
||||
numtail:1, /* Does first alias have a numeric '~1' type tail? */
|
||||
atari:1, /* Use Atari GEMDOS variation of MS-DOS fs */
|
||||
flush:1, /* write things quickly */
|
||||
nocase:1, /* Does this need case conversion? 0=need case conversion*/
|
||||
usefree:1; /* Use free_clusters for FAT32 */
|
||||
usefree:1, /* Use free_clusters for FAT32 */
|
||||
tz_utc:1; /* Filesystem timestamps are in UTC */
|
||||
};
|
||||
|
||||
#define FAT_HASH_BITS 8
|
||||
|
|
@ -267,6 +266,14 @@ struct msdos_inode_info {
|
|||
struct inode vfs_inode;
|
||||
};
|
||||
|
||||
struct fat_slot_info {
|
||||
loff_t i_pos; /* on-disk position of directory entry */
|
||||
loff_t slot_off; /* offset for slot or de start */
|
||||
int nr_slots; /* number of slots + 1(de) in filename */
|
||||
struct msdos_dir_entry *de;
|
||||
struct buffer_head *bh;
|
||||
};
|
||||
|
||||
static inline struct msdos_sb_info *MSDOS_SB(struct super_block *sb)
|
||||
{
|
||||
return sb->s_fs_info;
|
||||
|
|
@ -428,8 +435,9 @@ extern int fat_flush_inodes(struct super_block *sb, struct inode *i1,
|
|||
extern void fat_fs_panic(struct super_block *s, const char *fmt, ...);
|
||||
extern void fat_clusters_flush(struct super_block *sb);
|
||||
extern int fat_chain_add(struct inode *inode, int new_dclus, int nr_cluster);
|
||||
extern int date_dos2unix(unsigned short time, unsigned short date);
|
||||
extern void fat_date_unix2dos(int unix_date, __le16 *time, __le16 *date);
|
||||
extern int date_dos2unix(unsigned short time, unsigned short date, int tz_utc);
|
||||
extern void fat_date_unix2dos(int unix_date, __le16 *time, __le16 *date,
|
||||
int tz_utc);
|
||||
extern int fat_sync_bhs(struct buffer_head **bhs, int nr_bhs);
|
||||
|
||||
int fat_cache_init(void);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
/*
|
||||
* $Id: blktrans.h,v 1.6 2005/11/07 11:14:54 gleixner Exp $
|
||||
*
|
||||
* (C) 2003 David Woodhouse <dwmw2@infradead.org>
|
||||
*
|
||||
* Interface to Linux block layer for MTD 'translation layers'.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
|
||||
/* Common Flash Interface structures
|
||||
* See http://support.intel.com/design/flash/technote/index.htm
|
||||
* $Id: cfi.h,v 1.57 2005/11/15 23:28:17 tpoynor Exp $
|
||||
*/
|
||||
|
||||
#ifndef __MTD_CFI_H__
|
||||
|
|
|
|||
|
|
@ -1,8 +1,3 @@
|
|||
/*
|
||||
* $Id: cfi_endian.h,v 1.11 2002/01/30 23:20:48 awozniak Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
#ifndef CONFIG_MTD_CFI_ADV_OPTIONS
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@
|
|||
* (C) 2002 Robert Kaiser <rkaiser@sysgo.de>
|
||||
*
|
||||
* This code is GPL
|
||||
*
|
||||
* $Id: concat.h,v 1.1 2002/03/08 16:34:36 rkaiser Exp $
|
||||
*/
|
||||
|
||||
#ifndef MTD_CONCAT_H
|
||||
|
|
|
|||
|
|
@ -6,8 +6,6 @@
|
|||
* Copyright (C) 2002-2003 Greg Ungerer <gerg@snapgear.com>
|
||||
* Copyright (C) 2002-2003 SnapGear Inc
|
||||
*
|
||||
* $Id: doc2000.h,v 1.25 2005/11/07 11:14:54 gleixner Exp $
|
||||
*
|
||||
* Released under GPL
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -5,9 +5,6 @@
|
|||
* Contains information about the location and state of a given flash device
|
||||
*
|
||||
* (C) 2000 Red Hat. GPLd.
|
||||
*
|
||||
* $Id: flashchip.h,v 1.18 2005/11/07 11:14:54 gleixner Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __MTD_FLASHCHIP_H__
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
/*
|
||||
* $Id: ftl.h,v 1.7 2005/11/07 11:14:54 gleixner Exp $
|
||||
*
|
||||
* Derived from (and probably identical to):
|
||||
* ftl.h 1.7 1999/10/25 20:23:17
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
/*
|
||||
* (C) 2001, 2001 Red Hat, Inc.
|
||||
* GPL'd
|
||||
* $Id: gen_probe.h,v 1.4 2005/11/07 11:14:54 gleixner Exp $
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MTD_GEN_PROBE_H__
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@
|
|||
* inftl.h -- defines to support the Inverse NAND Flash Translation Layer
|
||||
*
|
||||
* (C) Copyright 2002, Greg Ungerer (gerg@snapgear.com)
|
||||
*
|
||||
* $Id: inftl.h,v 1.7 2005/06/13 13:08:45 sean Exp $
|
||||
*/
|
||||
|
||||
#ifndef __MTD_INFTL_H__
|
||||
|
|
@ -52,8 +50,6 @@ struct INFTLrecord {
|
|||
int INFTL_mount(struct INFTLrecord *s);
|
||||
int INFTL_formatblock(struct INFTLrecord *s, int block);
|
||||
|
||||
extern char inftlmountrev[];
|
||||
|
||||
void INFTL_dumptables(struct INFTLrecord *s);
|
||||
void INFTL_dumpVUchains(struct INFTLrecord *s);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
/* Overhauled routines for dealing with different mmap regions of flash */
|
||||
/* $Id: map.h,v 1.54 2005/11/07 11:14:54 gleixner Exp $ */
|
||||
|
||||
#ifndef __LINUX_MTD_MAP_H__
|
||||
#define __LINUX_MTD_MAP_H__
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
/*
|
||||
* $Id: mtd.h,v 1.61 2005/11/07 11:14:54 gleixner Exp $
|
||||
*
|
||||
* Copyright (C) 1999-2003 David Woodhouse <dwmw2@infradead.org> et al.
|
||||
*
|
||||
* Released under GPL
|
||||
|
|
|
|||
|
|
@ -5,8 +5,6 @@
|
|||
* Steven J. Hill <sjhill@realitydiluted.com>
|
||||
* Thomas Gleixner <tglx@linutronix.de>
|
||||
*
|
||||
* $Id: nand.h,v 1.74 2005/09/15 13:58:50 vwool Exp $
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
|
|
@ -179,6 +177,7 @@ typedef enum {
|
|||
#define NAND_MUST_PAD(chip) (!(chip->options & NAND_NO_PADDING))
|
||||
#define NAND_HAS_CACHEPROG(chip) ((chip->options & NAND_CACHEPRG))
|
||||
#define NAND_HAS_COPYBACK(chip) ((chip->options & NAND_COPYBACK))
|
||||
#define NAND_SUBPAGE_READ(chip) ((chip->ecc.mode == NAND_ECC_SOFT))
|
||||
|
||||
/* Mask to zero out the chip options, which come from the id table */
|
||||
#define NAND_CHIPOPTIONS_MSK (0x0000ffff & ~NAND_NO_AUTOINCR)
|
||||
|
|
@ -276,6 +275,10 @@ struct nand_ecc_ctrl {
|
|||
int (*read_page)(struct mtd_info *mtd,
|
||||
struct nand_chip *chip,
|
||||
uint8_t *buf);
|
||||
int (*read_subpage)(struct mtd_info *mtd,
|
||||
struct nand_chip *chip,
|
||||
uint32_t offs, uint32_t len,
|
||||
uint8_t *buf);
|
||||
void (*write_page)(struct mtd_info *mtd,
|
||||
struct nand_chip *chip,
|
||||
const uint8_t *buf);
|
||||
|
|
|
|||
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (C) 2000 Steven J. Hill (sjhill@realitydiluted.com)
|
||||
*
|
||||
* $Id: nand_ecc.h,v 1.4 2004/06/17 02:35:02 dbrown Exp $
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
/*
|
||||
* $Id: nftl.h,v 1.16 2004/06/30 14:49:00 dbrown Exp $
|
||||
*
|
||||
* (C) 1999-2003 David Woodhouse <dwmw2@infradead.org>
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@
|
|||
* (C) 2000 Nicolas Pitre <nico@cam.org>
|
||||
*
|
||||
* This code is GPL
|
||||
*
|
||||
* $Id: partitions.h,v 1.17 2005/11/07 11:14:55 gleixner Exp $
|
||||
*/
|
||||
|
||||
#ifndef MTD_PARTITIONS_H
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@
|
|||
* For boards with physically mapped flash and using
|
||||
* drivers/mtd/maps/physmap.c mapping driver.
|
||||
*
|
||||
* $Id: physmap.h,v 1.4 2005/11/07 11:14:55 gleixner Exp $
|
||||
*
|
||||
* Copyright (C) 2003 MontaVista Software Inc.
|
||||
* Author: Jun Sun, jsun@mvista.com or jsun@junsun.net
|
||||
*
|
||||
|
|
|
|||
|
|
@ -6,8 +6,6 @@
|
|||
*
|
||||
* Generic platform device based RAM map
|
||||
*
|
||||
* $Id: plat-ram.h,v 1.2 2005/01/24 00:37:40 bjd Exp $
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
/*
|
||||
* $Id: pmc551.h,v 1.6 2005/11/07 11:14:55 gleixner Exp $
|
||||
*
|
||||
* PMC551 PCI Mezzanine Ram Device
|
||||
*
|
||||
* Author:
|
||||
|
|
@ -17,7 +15,7 @@
|
|||
|
||||
#include <linux/mtd/mtd.h>
|
||||
|
||||
#define PMC551_VERSION "$Id: pmc551.h,v 1.6 2005/11/07 11:14:55 gleixner Exp $\n"\
|
||||
#define PMC551_VERSION \
|
||||
"Ramix PMC551 PCI Mezzanine Ram Driver. (C) 1999,2000 Nortel Networks.\n"
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -45,13 +45,13 @@ enum {
|
|||
* @size: how many physical eraseblocks are reserved for this volume
|
||||
* @used_bytes: how many bytes of data this volume contains
|
||||
* @used_ebs: how many physical eraseblocks of this volume actually contain any
|
||||
* data
|
||||
* data
|
||||
* @vol_type: volume type (%UBI_DYNAMIC_VOLUME or %UBI_STATIC_VOLUME)
|
||||
* @corrupted: non-zero if the volume is corrupted (static volumes only)
|
||||
* @upd_marker: non-zero if the volume has update marker set
|
||||
* @alignment: volume alignment
|
||||
* @usable_leb_size: how many bytes are available in logical eraseblocks of
|
||||
* this volume
|
||||
* this volume
|
||||
* @name_len: volume name length
|
||||
* @name: volume name
|
||||
* @cdev: UBI volume character device major and minor numbers
|
||||
|
|
@ -152,6 +152,7 @@ int ubi_leb_erase(struct ubi_volume_desc *desc, int lnum);
|
|||
int ubi_leb_unmap(struct ubi_volume_desc *desc, int lnum);
|
||||
int ubi_leb_map(struct ubi_volume_desc *desc, int lnum, int dtype);
|
||||
int ubi_is_mapped(struct ubi_volume_desc *desc, int lnum);
|
||||
int ubi_sync(int ubi_num);
|
||||
|
||||
/*
|
||||
* This function is the same as the 'ubi_leb_read()' function, but it does not
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* $Id: xip.h,v 1.5 2005/11/07 11:14:55 gleixner Exp $
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MTD_XIP_H__
|
||||
|
|
|
|||
|
|
@ -47,27 +47,24 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
|
|||
#define LOOKUP_DIRECTORY 2
|
||||
#define LOOKUP_CONTINUE 4
|
||||
#define LOOKUP_PARENT 16
|
||||
#define LOOKUP_NOALT 32
|
||||
#define LOOKUP_REVAL 64
|
||||
/*
|
||||
* Intent data
|
||||
*/
|
||||
#define LOOKUP_OPEN (0x0100)
|
||||
#define LOOKUP_CREATE (0x0200)
|
||||
#define LOOKUP_ACCESS (0x0400)
|
||||
#define LOOKUP_CHDIR (0x0800)
|
||||
|
||||
extern int __user_walk(const char __user *, unsigned, struct nameidata *);
|
||||
extern int __user_walk_fd(int dfd, const char __user *, unsigned, struct nameidata *);
|
||||
#define user_path_walk(name,nd) \
|
||||
__user_walk_fd(AT_FDCWD, name, LOOKUP_FOLLOW, nd)
|
||||
#define user_path_walk_link(name,nd) \
|
||||
__user_walk_fd(AT_FDCWD, name, 0, nd)
|
||||
extern int user_path_at(int, const char __user *, unsigned, struct path *);
|
||||
|
||||
#define user_path(name, path) user_path_at(AT_FDCWD, name, LOOKUP_FOLLOW, path)
|
||||
#define user_lpath(name, path) user_path_at(AT_FDCWD, name, 0, path)
|
||||
#define user_path_dir(name, path) \
|
||||
user_path_at(AT_FDCWD, name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, path)
|
||||
|
||||
extern int path_lookup(const char *, unsigned, struct nameidata *);
|
||||
extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
|
||||
const char *, unsigned int, struct nameidata *);
|
||||
|
||||
extern int __user_path_lookup_open(const char __user *, unsigned lookup_flags, struct nameidata *nd, int open_flags);
|
||||
extern int path_lookup_open(int dfd, const char *name, unsigned lookup_flags, struct nameidata *, int open_flags);
|
||||
extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry,
|
||||
int (*open)(struct inode *, struct file *));
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
#include <linux/wait.h>
|
||||
#include <linux/socket.h>
|
||||
#include <linux/fcntl.h> /* For O_CLOEXEC and O_NONBLOCK */
|
||||
#include <asm/socket.h>
|
||||
|
||||
struct poll_table_struct;
|
||||
|
|
@ -46,6 +47,7 @@ struct net;
|
|||
#define SYS_GETSOCKOPT 15 /* sys_getsockopt(2) */
|
||||
#define SYS_SENDMSG 16 /* sys_sendmsg(2) */
|
||||
#define SYS_RECVMSG 17 /* sys_recvmsg(2) */
|
||||
#define SYS_PACCEPT 18 /* sys_paccept(2) */
|
||||
|
||||
typedef enum {
|
||||
SS_FREE = 0, /* not allocated */
|
||||
|
|
@ -94,6 +96,15 @@ enum sock_type {
|
|||
};
|
||||
|
||||
#define SOCK_MAX (SOCK_PACKET + 1)
|
||||
/* Mask which covers at least up to SOCK_MASK-1. The
|
||||
* remaining bits are used as flags. */
|
||||
#define SOCK_TYPE_MASK 0xf
|
||||
|
||||
/* Flags for socket, socketpair, paccept */
|
||||
#define SOCK_CLOEXEC O_CLOEXEC
|
||||
#ifndef SOCK_NONBLOCK
|
||||
#define SOCK_NONBLOCK O_NONBLOCK
|
||||
#endif
|
||||
|
||||
#endif /* ARCH_HAS_SOCKET_TYPES */
|
||||
|
||||
|
|
@ -208,10 +219,12 @@ extern int sock_sendmsg(struct socket *sock, struct msghdr *msg,
|
|||
size_t len);
|
||||
extern int sock_recvmsg(struct socket *sock, struct msghdr *msg,
|
||||
size_t size, int flags);
|
||||
extern int sock_map_fd(struct socket *sock);
|
||||
extern int sock_map_fd(struct socket *sock, int flags);
|
||||
extern struct socket *sockfd_lookup(int fd, int *err);
|
||||
#define sockfd_put(sock) fput(sock->file)
|
||||
extern int net_ratelimit(void);
|
||||
extern long do_accept(int fd, struct sockaddr __user *upeer_sockaddr,
|
||||
int __user *upeer_addrlen, int flags);
|
||||
|
||||
#define net_random() random32()
|
||||
#define net_srandom(seed) srandom32((__force u32)seed)
|
||||
|
|
@ -338,8 +351,7 @@ static const struct proto_ops name##_ops = { \
|
|||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
#include <linux/sysctl.h>
|
||||
extern int net_msg_cost;
|
||||
extern int net_msg_burst;
|
||||
extern struct ratelimit_state net_ratelimit_state;
|
||||
#endif
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@
|
|||
#include <linux/in.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/namei.h>
|
||||
#include <linux/pagemap.h>
|
||||
#include <linux/rbtree.h>
|
||||
#include <linux/rwsem.h>
|
||||
|
|
@ -332,7 +331,7 @@ extern int nfs_refresh_inode(struct inode *, struct nfs_fattr *);
|
|||
extern int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr);
|
||||
extern int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr);
|
||||
extern int nfs_getattr(struct vfsmount *, struct dentry *, struct kstat *);
|
||||
extern int nfs_permission(struct inode *, int, struct nameidata *);
|
||||
extern int nfs_permission(struct inode *, int);
|
||||
extern int nfs_open(struct inode *, struct file *);
|
||||
extern int nfs_release(struct inode *, struct file *);
|
||||
extern int nfs_attribute_timeout(struct inode *inode);
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@
|
|||
|
||||
#include <linux/types.h>
|
||||
#include <linux/unistd.h>
|
||||
#include <linux/dirent.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/posix_acl.h>
|
||||
#include <linux/mount.h>
|
||||
|
|
|
|||
|
|
@ -214,6 +214,8 @@ static inline int notifier_to_errno(int ret)
|
|||
#define CPU_DEAD 0x0007 /* CPU (unsigned)v dead */
|
||||
#define CPU_DYING 0x0008 /* CPU (unsigned)v not running any task,
|
||||
* not handling interrupts, soon dead */
|
||||
#define CPU_POST_DEAD 0x0009 /* CPU (unsigned)v dead, cpu_hotplug
|
||||
* lock is dropped */
|
||||
|
||||
/* Used for CPU hotplug events occuring while tasks are frozen due to a suspend
|
||||
* operation in progress
|
||||
|
|
|
|||
|
|
@ -82,9 +82,12 @@ static inline void get_nsproxy(struct nsproxy *ns)
|
|||
}
|
||||
|
||||
#ifdef CONFIG_CGROUP_NS
|
||||
int ns_cgroup_clone(struct task_struct *tsk);
|
||||
int ns_cgroup_clone(struct task_struct *tsk, struct pid *pid);
|
||||
#else
|
||||
static inline int ns_cgroup_clone(struct task_struct *tsk) { return 0; }
|
||||
static inline int ns_cgroup_clone(struct task_struct *tsk, struct pid *pid)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue