Pull pnpacpi into acpica branch
This commit is contained in:
+7
-1
@@ -129,6 +129,7 @@ enum {
|
||||
ATA_CMD_READ_EXT = 0x25,
|
||||
ATA_CMD_WRITE = 0xCA,
|
||||
ATA_CMD_WRITE_EXT = 0x35,
|
||||
ATA_CMD_WRITE_FUA_EXT = 0x3D,
|
||||
ATA_CMD_PIO_READ = 0x20,
|
||||
ATA_CMD_PIO_READ_EXT = 0x24,
|
||||
ATA_CMD_PIO_WRITE = 0x30,
|
||||
@@ -137,10 +138,13 @@ enum {
|
||||
ATA_CMD_READ_MULTI_EXT = 0x29,
|
||||
ATA_CMD_WRITE_MULTI = 0xC5,
|
||||
ATA_CMD_WRITE_MULTI_EXT = 0x39,
|
||||
ATA_CMD_WRITE_MULTI_FUA_EXT = 0xCE,
|
||||
ATA_CMD_SET_FEATURES = 0xEF,
|
||||
ATA_CMD_PACKET = 0xA0,
|
||||
ATA_CMD_VERIFY = 0x40,
|
||||
ATA_CMD_VERIFY_EXT = 0x42,
|
||||
ATA_CMD_STANDBYNOW1 = 0xE0,
|
||||
ATA_CMD_IDLEIMMEDIATE = 0xE1,
|
||||
ATA_CMD_INIT_DEV_PARAMS = 0x91,
|
||||
|
||||
/* SETFEATURES stuff */
|
||||
@@ -192,6 +196,7 @@ enum {
|
||||
ATA_TFLAG_DEVICE = (1 << 2), /* enable r/w to device reg */
|
||||
ATA_TFLAG_WRITE = (1 << 3), /* data dir: host->dev==1 (write) */
|
||||
ATA_TFLAG_LBA = (1 << 4), /* enable LBA */
|
||||
ATA_TFLAG_FUA = (1 << 5), /* enable FUA */
|
||||
};
|
||||
|
||||
enum ata_tf_protocols {
|
||||
@@ -245,7 +250,8 @@ struct ata_taskfile {
|
||||
#define ata_id_is_sata(id) ((id)[93] == 0)
|
||||
#define ata_id_rahead_enabled(id) ((id)[85] & (1 << 6))
|
||||
#define ata_id_wcache_enabled(id) ((id)[85] & (1 << 5))
|
||||
#define ata_id_has_flush(id) ((id)[83] & (1 << 12))
|
||||
#define ata_id_has_fua(id) ((id)[84] & (1 << 6))
|
||||
#define ata_id_has_flush(id) ((id)[83] & (1 << 12))
|
||||
#define ata_id_has_flush_ext(id) ((id)[83] & (1 << 13))
|
||||
#define ata_id_has_lba48(id) ((id)[83] & (1 << 10))
|
||||
#define ata_id_has_wcache(id) ((id)[82] & (1 << 5))
|
||||
|
||||
@@ -292,6 +292,8 @@ extern struct bio *bio_clone(struct bio *, gfp_t);
|
||||
extern void bio_init(struct bio *);
|
||||
|
||||
extern int bio_add_page(struct bio *, struct page *, unsigned int,unsigned int);
|
||||
extern int bio_add_pc_page(struct request_queue *, struct bio *, struct page *,
|
||||
unsigned int, unsigned int);
|
||||
extern int bio_get_nr_vecs(struct block_device *);
|
||||
extern struct bio *bio_map_user(struct request_queue *, struct block_device *,
|
||||
unsigned long, unsigned int, int);
|
||||
|
||||
@@ -76,6 +76,15 @@ static __inline__ int generic_fls(int x)
|
||||
*/
|
||||
#include <asm/bitops.h>
|
||||
|
||||
|
||||
static inline int generic_fls64(__u64 x)
|
||||
{
|
||||
__u32 h = x >> 32;
|
||||
if (h)
|
||||
return fls(x) + 32;
|
||||
return fls(x);
|
||||
}
|
||||
|
||||
static __inline__ int get_bitmask_order(unsigned int count)
|
||||
{
|
||||
int order;
|
||||
|
||||
+67
-29
@@ -102,7 +102,7 @@ void copy_io_context(struct io_context **pdst, struct io_context **psrc);
|
||||
void swap_io_context(struct io_context **ioc1, struct io_context **ioc2);
|
||||
|
||||
struct request;
|
||||
typedef void (rq_end_io_fn)(struct request *);
|
||||
typedef void (rq_end_io_fn)(struct request *, int);
|
||||
|
||||
struct request_list {
|
||||
int count[2];
|
||||
@@ -184,6 +184,7 @@ struct request {
|
||||
void *sense;
|
||||
|
||||
unsigned int timeout;
|
||||
int retries;
|
||||
|
||||
/*
|
||||
* For Power Management requests
|
||||
@@ -206,6 +207,7 @@ enum rq_flag_bits {
|
||||
__REQ_SORTED, /* elevator knows about this request */
|
||||
__REQ_SOFTBARRIER, /* may not be passed by ioscheduler */
|
||||
__REQ_HARDBARRIER, /* may not be passed by drive either */
|
||||
__REQ_FUA, /* forced unit access */
|
||||
__REQ_CMD, /* is a regular fs rw request */
|
||||
__REQ_NOMERGE, /* don't touch this for merging */
|
||||
__REQ_STARTED, /* drive already may have started this one */
|
||||
@@ -229,9 +231,7 @@ enum rq_flag_bits {
|
||||
__REQ_PM_SUSPEND, /* suspend request */
|
||||
__REQ_PM_RESUME, /* resume request */
|
||||
__REQ_PM_SHUTDOWN, /* shutdown request */
|
||||
__REQ_BAR_PREFLUSH, /* barrier pre-flush done */
|
||||
__REQ_BAR_POSTFLUSH, /* barrier post-flush */
|
||||
__REQ_BAR_FLUSH, /* rq is the flush request */
|
||||
__REQ_ORDERED_COLOR, /* is before or after barrier */
|
||||
__REQ_NR_BITS, /* stops here */
|
||||
};
|
||||
|
||||
@@ -240,6 +240,7 @@ enum rq_flag_bits {
|
||||
#define REQ_SORTED (1 << __REQ_SORTED)
|
||||
#define REQ_SOFTBARRIER (1 << __REQ_SOFTBARRIER)
|
||||
#define REQ_HARDBARRIER (1 << __REQ_HARDBARRIER)
|
||||
#define REQ_FUA (1 << __REQ_FUA)
|
||||
#define REQ_CMD (1 << __REQ_CMD)
|
||||
#define REQ_NOMERGE (1 << __REQ_NOMERGE)
|
||||
#define REQ_STARTED (1 << __REQ_STARTED)
|
||||
@@ -259,9 +260,7 @@ enum rq_flag_bits {
|
||||
#define REQ_PM_SUSPEND (1 << __REQ_PM_SUSPEND)
|
||||
#define REQ_PM_RESUME (1 << __REQ_PM_RESUME)
|
||||
#define REQ_PM_SHUTDOWN (1 << __REQ_PM_SHUTDOWN)
|
||||
#define REQ_BAR_PREFLUSH (1 << __REQ_BAR_PREFLUSH)
|
||||
#define REQ_BAR_POSTFLUSH (1 << __REQ_BAR_POSTFLUSH)
|
||||
#define REQ_BAR_FLUSH (1 << __REQ_BAR_FLUSH)
|
||||
#define REQ_ORDERED_COLOR (1 << __REQ_ORDERED_COLOR)
|
||||
|
||||
/*
|
||||
* State information carried for REQ_PM_SUSPEND and REQ_PM_RESUME
|
||||
@@ -291,8 +290,7 @@ struct bio_vec;
|
||||
typedef int (merge_bvec_fn) (request_queue_t *, struct bio *, struct bio_vec *);
|
||||
typedef void (activity_fn) (void *data, int rw);
|
||||
typedef int (issue_flush_fn) (request_queue_t *, struct gendisk *, sector_t *);
|
||||
typedef int (prepare_flush_fn) (request_queue_t *, struct request *);
|
||||
typedef void (end_flush_fn) (request_queue_t *, struct request *);
|
||||
typedef void (prepare_flush_fn) (request_queue_t *, struct request *);
|
||||
|
||||
enum blk_queue_state {
|
||||
Queue_down,
|
||||
@@ -334,7 +332,6 @@ struct request_queue
|
||||
activity_fn *activity_fn;
|
||||
issue_flush_fn *issue_flush_fn;
|
||||
prepare_flush_fn *prepare_flush_fn;
|
||||
end_flush_fn *end_flush_fn;
|
||||
|
||||
/*
|
||||
* Dispatch queue sorting
|
||||
@@ -419,14 +416,11 @@ struct request_queue
|
||||
/*
|
||||
* reserved for flush operations
|
||||
*/
|
||||
struct request *flush_rq;
|
||||
unsigned char ordered;
|
||||
};
|
||||
|
||||
enum {
|
||||
QUEUE_ORDERED_NONE,
|
||||
QUEUE_ORDERED_TAG,
|
||||
QUEUE_ORDERED_FLUSH,
|
||||
unsigned int ordered, next_ordered, ordseq;
|
||||
int orderr, ordcolor;
|
||||
struct request pre_flush_rq, bar_rq, post_flush_rq;
|
||||
struct request *orig_bar_rq;
|
||||
unsigned int bi_size;
|
||||
};
|
||||
|
||||
#define RQ_INACTIVE (-1)
|
||||
@@ -444,12 +438,51 @@ enum {
|
||||
#define QUEUE_FLAG_REENTER 6 /* Re-entrancy avoidance */
|
||||
#define QUEUE_FLAG_PLUGGED 7 /* queue is plugged */
|
||||
#define QUEUE_FLAG_ELVSWITCH 8 /* don't use elevator, just do FIFO */
|
||||
#define QUEUE_FLAG_FLUSH 9 /* doing barrier flush sequence */
|
||||
|
||||
enum {
|
||||
/*
|
||||
* Hardbarrier is supported with one of the following methods.
|
||||
*
|
||||
* NONE : hardbarrier unsupported
|
||||
* DRAIN : ordering by draining is enough
|
||||
* DRAIN_FLUSH : ordering by draining w/ pre and post flushes
|
||||
* DRAIN_FUA : ordering by draining w/ pre flush and FUA write
|
||||
* TAG : ordering by tag is enough
|
||||
* TAG_FLUSH : ordering by tag w/ pre and post flushes
|
||||
* TAG_FUA : ordering by tag w/ pre flush and FUA write
|
||||
*/
|
||||
QUEUE_ORDERED_NONE = 0x00,
|
||||
QUEUE_ORDERED_DRAIN = 0x01,
|
||||
QUEUE_ORDERED_TAG = 0x02,
|
||||
|
||||
QUEUE_ORDERED_PREFLUSH = 0x10,
|
||||
QUEUE_ORDERED_POSTFLUSH = 0x20,
|
||||
QUEUE_ORDERED_FUA = 0x40,
|
||||
|
||||
QUEUE_ORDERED_DRAIN_FLUSH = QUEUE_ORDERED_DRAIN |
|
||||
QUEUE_ORDERED_PREFLUSH | QUEUE_ORDERED_POSTFLUSH,
|
||||
QUEUE_ORDERED_DRAIN_FUA = QUEUE_ORDERED_DRAIN |
|
||||
QUEUE_ORDERED_PREFLUSH | QUEUE_ORDERED_FUA,
|
||||
QUEUE_ORDERED_TAG_FLUSH = QUEUE_ORDERED_TAG |
|
||||
QUEUE_ORDERED_PREFLUSH | QUEUE_ORDERED_POSTFLUSH,
|
||||
QUEUE_ORDERED_TAG_FUA = QUEUE_ORDERED_TAG |
|
||||
QUEUE_ORDERED_PREFLUSH | QUEUE_ORDERED_FUA,
|
||||
|
||||
/*
|
||||
* Ordered operation sequence
|
||||
*/
|
||||
QUEUE_ORDSEQ_STARTED = 0x01, /* flushing in progress */
|
||||
QUEUE_ORDSEQ_DRAIN = 0x02, /* waiting for the queue to be drained */
|
||||
QUEUE_ORDSEQ_PREFLUSH = 0x04, /* pre-flushing in progress */
|
||||
QUEUE_ORDSEQ_BAR = 0x08, /* original barrier req in progress */
|
||||
QUEUE_ORDSEQ_POSTFLUSH = 0x10, /* post-flushing in progress */
|
||||
QUEUE_ORDSEQ_DONE = 0x20,
|
||||
};
|
||||
|
||||
#define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags)
|
||||
#define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags)
|
||||
#define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags)
|
||||
#define blk_queue_flushing(q) test_bit(QUEUE_FLAG_FLUSH, &(q)->queue_flags)
|
||||
#define blk_queue_flushing(q) ((q)->ordseq)
|
||||
|
||||
#define blk_fs_request(rq) ((rq)->flags & REQ_CMD)
|
||||
#define blk_pc_request(rq) ((rq)->flags & REQ_BLOCK_PC)
|
||||
@@ -465,8 +498,7 @@ enum {
|
||||
|
||||
#define blk_sorted_rq(rq) ((rq)->flags & REQ_SORTED)
|
||||
#define blk_barrier_rq(rq) ((rq)->flags & REQ_HARDBARRIER)
|
||||
#define blk_barrier_preflush(rq) ((rq)->flags & REQ_BAR_PREFLUSH)
|
||||
#define blk_barrier_postflush(rq) ((rq)->flags & REQ_BAR_POSTFLUSH)
|
||||
#define blk_fua_rq(rq) ((rq)->flags & REQ_FUA)
|
||||
|
||||
#define list_entry_rq(ptr) list_entry((ptr), struct request, queuelist)
|
||||
|
||||
@@ -558,7 +590,8 @@ extern void blk_unregister_queue(struct gendisk *disk);
|
||||
extern void register_disk(struct gendisk *dev);
|
||||
extern void generic_make_request(struct bio *bio);
|
||||
extern void blk_put_request(struct request *);
|
||||
extern void blk_end_sync_rq(struct request *rq);
|
||||
extern void __blk_put_request(request_queue_t *, struct request *);
|
||||
extern void blk_end_sync_rq(struct request *rq, int error);
|
||||
extern void blk_attempt_remerge(request_queue_t *, struct request *);
|
||||
extern struct request *blk_get_request(request_queue_t *, int, gfp_t);
|
||||
extern void blk_insert_request(request_queue_t *, struct request *, int, void *);
|
||||
@@ -579,6 +612,9 @@ extern int blk_rq_map_kern(request_queue_t *, struct request *, void *, unsigned
|
||||
extern int blk_rq_map_user_iov(request_queue_t *, struct request *, struct sg_iovec *, int);
|
||||
extern int blk_execute_rq(request_queue_t *, struct gendisk *,
|
||||
struct request *, int);
|
||||
extern void blk_execute_rq_nowait(request_queue_t *, struct gendisk *,
|
||||
struct request *, int, rq_end_io_fn *);
|
||||
|
||||
static inline request_queue_t *bdev_get_queue(struct block_device *bdev)
|
||||
{
|
||||
return bdev->bd_disk->queue;
|
||||
@@ -608,7 +644,7 @@ static inline void blk_run_address_space(struct address_space *mapping)
|
||||
*/
|
||||
extern int end_that_request_first(struct request *, int, int);
|
||||
extern int end_that_request_chunk(struct request *, int, int);
|
||||
extern void end_that_request_last(struct request *);
|
||||
extern void end_that_request_last(struct request *, int);
|
||||
extern void end_request(struct request *req, int uptodate);
|
||||
|
||||
/*
|
||||
@@ -659,11 +695,12 @@ extern void blk_queue_prep_rq(request_queue_t *, prep_rq_fn *pfn);
|
||||
extern void blk_queue_merge_bvec(request_queue_t *, merge_bvec_fn *);
|
||||
extern void blk_queue_dma_alignment(request_queue_t *, int);
|
||||
extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev);
|
||||
extern void blk_queue_ordered(request_queue_t *, int);
|
||||
extern int blk_queue_ordered(request_queue_t *, unsigned, prepare_flush_fn *);
|
||||
extern void blk_queue_issue_flush_fn(request_queue_t *, issue_flush_fn *);
|
||||
extern struct request *blk_start_pre_flush(request_queue_t *,struct request *);
|
||||
extern int blk_complete_barrier_rq(request_queue_t *, struct request *, int);
|
||||
extern int blk_complete_barrier_rq_locked(request_queue_t *, struct request *, int);
|
||||
extern int blk_do_ordered(request_queue_t *, struct request **);
|
||||
extern unsigned blk_ordered_cur_seq(request_queue_t *);
|
||||
extern unsigned blk_ordered_req_seq(struct request *);
|
||||
extern void blk_ordered_complete_seq(request_queue_t *, unsigned, int);
|
||||
|
||||
extern int blk_rq_map_sg(request_queue_t *, struct request *, struct scatterlist *);
|
||||
extern void blk_dump_rq_flags(struct request *, char *);
|
||||
@@ -696,7 +733,8 @@ extern int blkdev_issue_flush(struct block_device *, sector_t *);
|
||||
|
||||
#define MAX_PHYS_SEGMENTS 128
|
||||
#define MAX_HW_SEGMENTS 128
|
||||
#define MAX_SECTORS 255
|
||||
#define SAFE_MAX_SECTORS 255
|
||||
#define BLK_DEF_MAX_SECTORS 1024
|
||||
|
||||
#define MAX_SEGMENT_SIZE 65536
|
||||
|
||||
|
||||
+12
-34
@@ -43,50 +43,38 @@ typedef struct bootmem_data {
|
||||
extern unsigned long __init bootmem_bootmap_pages (unsigned long);
|
||||
extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend);
|
||||
extern void __init free_bootmem (unsigned long addr, unsigned long size);
|
||||
extern void * __init __alloc_bootmem_limit (unsigned long size, unsigned long align, unsigned long goal, unsigned long limit);
|
||||
extern void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal);
|
||||
extern void * __init __alloc_bootmem_low(unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern void * __init __alloc_bootmem_low_node(pg_data_t *pgdat,
|
||||
unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
|
||||
extern void __init reserve_bootmem (unsigned long addr, unsigned long size);
|
||||
#define alloc_bootmem(x) \
|
||||
__alloc_bootmem((x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
|
||||
#define alloc_bootmem_low(x) \
|
||||
__alloc_bootmem((x), SMP_CACHE_BYTES, 0)
|
||||
__alloc_bootmem_low((x), SMP_CACHE_BYTES, 0)
|
||||
#define alloc_bootmem_pages(x) \
|
||||
__alloc_bootmem((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
|
||||
#define alloc_bootmem_low_pages(x) \
|
||||
__alloc_bootmem((x), PAGE_SIZE, 0)
|
||||
|
||||
#define alloc_bootmem_limit(x, limit) \
|
||||
__alloc_bootmem_limit((x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS), (limit))
|
||||
#define alloc_bootmem_low_limit(x, limit) \
|
||||
__alloc_bootmem_limit((x), SMP_CACHE_BYTES, 0, (limit))
|
||||
#define alloc_bootmem_pages_limit(x, limit) \
|
||||
__alloc_bootmem_limit((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS), (limit))
|
||||
#define alloc_bootmem_low_pages_limit(x, limit) \
|
||||
__alloc_bootmem_limit((x), PAGE_SIZE, 0, (limit))
|
||||
|
||||
__alloc_bootmem_low((x), PAGE_SIZE, 0)
|
||||
#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
|
||||
extern unsigned long __init free_all_bootmem (void);
|
||||
|
||||
extern void * __init __alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal);
|
||||
extern unsigned long __init init_bootmem_node (pg_data_t *pgdat, unsigned long freepfn, unsigned long startpfn, unsigned long endpfn);
|
||||
extern void __init reserve_bootmem_node (pg_data_t *pgdat, unsigned long physaddr, unsigned long size);
|
||||
extern void __init free_bootmem_node (pg_data_t *pgdat, unsigned long addr, unsigned long size);
|
||||
extern unsigned long __init free_all_bootmem_node (pg_data_t *pgdat);
|
||||
extern void * __init __alloc_bootmem_node_limit (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal, unsigned long limit);
|
||||
#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) \
|
||||
__alloc_bootmem_node((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
|
||||
#define alloc_bootmem_low_pages_node(pgdat, x) \
|
||||
__alloc_bootmem_node((pgdat), (x), PAGE_SIZE, 0)
|
||||
|
||||
#define alloc_bootmem_node_limit(pgdat, x, limit) \
|
||||
__alloc_bootmem_node_limit((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS), (limit))
|
||||
#define alloc_bootmem_pages_node_limit(pgdat, x, limit) \
|
||||
__alloc_bootmem_node_limit((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS), (limit))
|
||||
#define alloc_bootmem_low_pages_node_limit(pgdat, x, limit) \
|
||||
__alloc_bootmem_node_limit((pgdat), (x), PAGE_SIZE, 0, (limit))
|
||||
|
||||
__alloc_bootmem_low_node((pgdat), (x), PAGE_SIZE, 0)
|
||||
#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
|
||||
|
||||
#ifdef CONFIG_HAVE_ARCH_ALLOC_REMAP
|
||||
@@ -123,15 +111,5 @@ extern void *__init alloc_large_system_hash(const char *tablename,
|
||||
#endif
|
||||
extern int __initdata hashdist; /* Distribute hashes across NUMA nodes? */
|
||||
|
||||
static inline void *__alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal)
|
||||
{
|
||||
return __alloc_bootmem_limit(size, align, goal, 0);
|
||||
}
|
||||
|
||||
static inline void *__alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align,
|
||||
unsigned long goal)
|
||||
{
|
||||
return __alloc_bootmem_node_limit(pgdat, size, align, goal, 0);
|
||||
}
|
||||
|
||||
#endif /* _LINUX_BOOTMEM_H */
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#define SMP_CACHE_BYTES L1_CACHE_BYTES
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_X86) || defined(CONFIG_SPARC64)
|
||||
#if defined(CONFIG_X86) || defined(CONFIG_SPARC64) || defined(CONFIG_IA64)
|
||||
#define __read_mostly __attribute__((__section__(".data.read_mostly")))
|
||||
#else
|
||||
#define __read_mostly
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#define CN_PROC_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/time.h>
|
||||
#include <linux/connector.h>
|
||||
|
||||
/*
|
||||
@@ -65,6 +66,7 @@ struct proc_event {
|
||||
PROC_EVENT_EXIT = 0x80000000
|
||||
} what;
|
||||
__u32 cpu;
|
||||
struct timespec timestamp;
|
||||
union { /* must be last field of proc_event struct */
|
||||
struct {
|
||||
__u32 err;
|
||||
|
||||
@@ -0,0 +1,205 @@
|
||||
/* -*- mode: c; c-basic-offset: 8; -*-
|
||||
* vim: noexpandtab sw=8 ts=8 sts=0:
|
||||
*
|
||||
* configfs.h - definitions for the device driver filesystem
|
||||
*
|
||||
* 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; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 021110-1307, USA.
|
||||
*
|
||||
* Based on sysfs:
|
||||
* sysfs is Copyright (C) 2001, 2002, 2003 Patrick Mochel
|
||||
*
|
||||
* Based on kobject.h:
|
||||
* Copyright (c) 2002-2003 Patrick Mochel
|
||||
* Copyright (c) 2002-2003 Open Source Development Labs
|
||||
*
|
||||
* configfs Copyright (C) 2005 Oracle. All rights reserved.
|
||||
*
|
||||
* Please read Documentation/filesystems/configfs.txt before using the
|
||||
* configfs interface, ESPECIALLY the parts about reference counts and
|
||||
* item destructors.
|
||||
*/
|
||||
|
||||
#ifndef _CONFIGFS_H_
|
||||
#define _CONFIGFS_H_
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/kref.h>
|
||||
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/semaphore.h>
|
||||
|
||||
#define CONFIGFS_ITEM_NAME_LEN 20
|
||||
|
||||
struct module;
|
||||
|
||||
struct configfs_item_operations;
|
||||
struct configfs_group_operations;
|
||||
struct configfs_attribute;
|
||||
struct configfs_subsystem;
|
||||
|
||||
struct config_item {
|
||||
char *ci_name;
|
||||
char ci_namebuf[CONFIGFS_ITEM_NAME_LEN];
|
||||
struct kref ci_kref;
|
||||
struct list_head ci_entry;
|
||||
struct config_item *ci_parent;
|
||||
struct config_group *ci_group;
|
||||
struct config_item_type *ci_type;
|
||||
struct dentry *ci_dentry;
|
||||
};
|
||||
|
||||
extern int config_item_set_name(struct config_item *, const char *, ...);
|
||||
|
||||
static inline char *config_item_name(struct config_item * item)
|
||||
{
|
||||
return item->ci_name;
|
||||
}
|
||||
|
||||
extern void config_item_init(struct config_item *);
|
||||
extern void config_item_init_type_name(struct config_item *item,
|
||||
const char *name,
|
||||
struct config_item_type *type);
|
||||
extern void config_item_cleanup(struct config_item *);
|
||||
|
||||
extern struct config_item * config_item_get(struct config_item *);
|
||||
extern void config_item_put(struct config_item *);
|
||||
|
||||
struct config_item_type {
|
||||
struct module *ct_owner;
|
||||
struct configfs_item_operations *ct_item_ops;
|
||||
struct configfs_group_operations *ct_group_ops;
|
||||
struct configfs_attribute **ct_attrs;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* group - a group of config_items of a specific type, belonging
|
||||
* to a specific subsystem.
|
||||
*/
|
||||
|
||||
struct config_group {
|
||||
struct config_item cg_item;
|
||||
struct list_head cg_children;
|
||||
struct configfs_subsystem *cg_subsys;
|
||||
struct config_group **default_groups;
|
||||
};
|
||||
|
||||
|
||||
extern void config_group_init(struct config_group *group);
|
||||
extern void config_group_init_type_name(struct config_group *group,
|
||||
const char *name,
|
||||
struct config_item_type *type);
|
||||
|
||||
|
||||
static inline struct config_group *to_config_group(struct config_item *item)
|
||||
{
|
||||
return item ? container_of(item,struct config_group,cg_item) : NULL;
|
||||
}
|
||||
|
||||
static inline struct config_group *config_group_get(struct config_group *group)
|
||||
{
|
||||
return group ? to_config_group(config_item_get(&group->cg_item)) : NULL;
|
||||
}
|
||||
|
||||
static inline void config_group_put(struct config_group *group)
|
||||
{
|
||||
config_item_put(&group->cg_item);
|
||||
}
|
||||
|
||||
extern struct config_item *config_group_find_obj(struct config_group *, const char *);
|
||||
|
||||
|
||||
struct configfs_attribute {
|
||||
char *ca_name;
|
||||
struct module *ca_owner;
|
||||
mode_t ca_mode;
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* If allow_link() exists, the item can symlink(2) out to other
|
||||
* items. If the item is a group, it may support mkdir(2).
|
||||
* Groups supply one of make_group() and make_item(). If the
|
||||
* group supports make_group(), one can create group children. If it
|
||||
* supports make_item(), one can create config_item children. If it has
|
||||
* default_groups on group->default_groups, it has automatically created
|
||||
* group children. default_groups may coexist alongsize make_group() or
|
||||
* make_item(), but if the group wishes to have only default_groups
|
||||
* children (disallowing mkdir(2)), it need not provide either function.
|
||||
* If the group has commit(), it supports pending and commited (active)
|
||||
* items.
|
||||
*/
|
||||
struct configfs_item_operations {
|
||||
void (*release)(struct config_item *);
|
||||
ssize_t (*show_attribute)(struct config_item *, struct configfs_attribute *,char *);
|
||||
ssize_t (*store_attribute)(struct config_item *,struct configfs_attribute *,const char *, size_t);
|
||||
int (*allow_link)(struct config_item *src, struct config_item *target);
|
||||
int (*drop_link)(struct config_item *src, struct config_item *target);
|
||||
};
|
||||
|
||||
struct configfs_group_operations {
|
||||
struct config_item *(*make_item)(struct config_group *group, const char *name);
|
||||
struct config_group *(*make_group)(struct config_group *group, const char *name);
|
||||
int (*commit_item)(struct config_item *item);
|
||||
void (*drop_item)(struct config_group *group, struct config_item *item);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Use these macros to make defining attributes easier. See include/linux/device.h
|
||||
* for examples..
|
||||
*/
|
||||
|
||||
#if 0
|
||||
#define __ATTR(_name,_mode,_show,_store) { \
|
||||
.attr = {.ca_name = __stringify(_name), .ca_mode = _mode, .ca_owner = THIS_MODULE }, \
|
||||
.show = _show, \
|
||||
.store = _store, \
|
||||
}
|
||||
|
||||
#define __ATTR_RO(_name) { \
|
||||
.attr = { .ca_name = __stringify(_name), .ca_mode = 0444, .ca_owner = THIS_MODULE }, \
|
||||
.show = _name##_show, \
|
||||
}
|
||||
|
||||
#define __ATTR_NULL { .attr = { .name = NULL } }
|
||||
|
||||
#define attr_name(_attr) (_attr).attr.name
|
||||
#endif
|
||||
|
||||
|
||||
struct configfs_subsystem {
|
||||
struct config_group su_group;
|
||||
struct semaphore su_sem;
|
||||
};
|
||||
|
||||
static inline struct configfs_subsystem *to_configfs_subsystem(struct config_group *group)
|
||||
{
|
||||
return group ?
|
||||
container_of(group, struct configfs_subsystem, su_group) :
|
||||
NULL;
|
||||
}
|
||||
|
||||
int configfs_register_subsystem(struct configfs_subsystem *subsys);
|
||||
void configfs_unregister_subsystem(struct configfs_subsystem *subsys);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _CONFIGFS_H_ */
|
||||
@@ -256,6 +256,16 @@ int cpufreq_update_policy(unsigned int cpu);
|
||||
/* query the current CPU frequency (in kHz). If zero, cpufreq couldn't detect it */
|
||||
unsigned int cpufreq_get(unsigned int cpu);
|
||||
|
||||
/* query the last known CPU freq (in kHz). If zero, cpufreq couldn't detect it */
|
||||
#ifdef CONFIG_CPU_FREQ
|
||||
unsigned int cpufreq_quick_get(unsigned int cpu);
|
||||
#else
|
||||
static inline unsigned int cpufreq_quick_get(unsigned int cpu)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*********************************************************************
|
||||
* CPUFREQ DEFAULT GOVERNOR *
|
||||
|
||||
@@ -192,10 +192,9 @@ enum {
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
#include <net/inet_connection_sock.h>
|
||||
#include <net/inet_sock.h>
|
||||
#include <net/inet_timewait_sock.h>
|
||||
#include <net/sock.h>
|
||||
#include <net/tcp_states.h>
|
||||
#include <net/tcp.h>
|
||||
|
||||
enum dccp_state {
|
||||
DCCP_OPEN = TCP_ESTABLISHED,
|
||||
@@ -408,8 +407,6 @@ struct dccp_ackvec;
|
||||
* @dccps_gar - greatest valid ack number received on a non-Sync; initialized to %dccps_iss
|
||||
* @dccps_timestamp_time - time of latest TIMESTAMP option
|
||||
* @dccps_timestamp_echo - latest timestamp received on a TIMESTAMP option
|
||||
* @dccps_ext_header_len - network protocol overhead (IP/IPv6 options)
|
||||
* @dccps_pmtu_cookie - Last pmtu seen by socket
|
||||
* @dccps_packet_size - Set thru setsockopt
|
||||
* @dccps_role - Role of this sock, one of %dccp_role
|
||||
* @dccps_ndp_count - number of Non Data Packets since last data packet
|
||||
@@ -434,8 +431,6 @@ struct dccp_sock {
|
||||
__u32 dccps_timestamp_echo;
|
||||
__u32 dccps_packet_size;
|
||||
unsigned long dccps_ndp_count;
|
||||
__u16 dccps_ext_header_len;
|
||||
__u32 dccps_pmtu_cookie;
|
||||
__u32 dccps_mss_cache;
|
||||
struct dccp_options dccps_options;
|
||||
struct dccp_ackvec *dccps_hc_rx_ackvec;
|
||||
|
||||
@@ -47,8 +47,8 @@ struct bus_type {
|
||||
struct driver_attribute * drv_attrs;
|
||||
|
||||
int (*match)(struct device * dev, struct device_driver * drv);
|
||||
int (*hotplug) (struct device *dev, char **envp,
|
||||
int num_envp, char *buffer, int buffer_size);
|
||||
int (*uevent)(struct device *dev, char **envp,
|
||||
int num_envp, char *buffer, int buffer_size);
|
||||
int (*suspend)(struct device * dev, pm_message_t state);
|
||||
int (*resume)(struct device * dev);
|
||||
};
|
||||
@@ -151,7 +151,7 @@ struct class {
|
||||
struct class_attribute * class_attrs;
|
||||
struct class_device_attribute * class_dev_attrs;
|
||||
|
||||
int (*hotplug)(struct class_device *dev, char **envp,
|
||||
int (*uevent)(struct class_device *dev, char **envp,
|
||||
int num_envp, char *buffer, int buffer_size);
|
||||
|
||||
void (*release)(struct class_device *dev);
|
||||
@@ -209,9 +209,9 @@ extern int class_device_create_file(struct class_device *,
|
||||
* set, this will be called instead of the class specific release function.
|
||||
* Only use this if you want to override the default release function, like
|
||||
* when you are nesting class_device structures.
|
||||
* @hotplug: pointer to a hotplug function for this struct class_device. If
|
||||
* set, this will be called instead of the class specific hotplug function.
|
||||
* Only use this if you want to override the default hotplug function, like
|
||||
* @uevent: pointer to a uevent function for this struct class_device. If
|
||||
* set, this will be called instead of the class specific uevent function.
|
||||
* Only use this if you want to override the default uevent function, like
|
||||
* when you are nesting class_device structures.
|
||||
*/
|
||||
struct class_device {
|
||||
@@ -227,7 +227,7 @@ struct class_device {
|
||||
struct class_device *parent; /* parent of this child device, if there is one */
|
||||
|
||||
void (*release)(struct class_device *dev);
|
||||
int (*hotplug)(struct class_device *dev, char **envp,
|
||||
int (*uevent)(struct class_device *dev, char **envp,
|
||||
int num_envp, char *buffer, int buffer_size);
|
||||
char class_id[BUS_ID_SIZE]; /* unique to this class */
|
||||
};
|
||||
|
||||
@@ -272,9 +272,9 @@ typedef char ioctl_struct[308];
|
||||
#define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
|
||||
|
||||
#define DM_VERSION_MAJOR 4
|
||||
#define DM_VERSION_MINOR 4
|
||||
#define DM_VERSION_MINOR 5
|
||||
#define DM_VERSION_PATCHLEVEL 0
|
||||
#define DM_VERSION_EXTRA "-ioctl (2005-01-12)"
|
||||
#define DM_VERSION_EXTRA "-ioctl (2005-10-04)"
|
||||
|
||||
/* Status bits */
|
||||
#define DM_READONLY_FLAG (1 << 0) /* In/Out */
|
||||
@@ -301,8 +301,13 @@ typedef char ioctl_struct[308];
|
||||
#define DM_BUFFER_FULL_FLAG (1 << 8) /* Out */
|
||||
|
||||
/*
|
||||
* Set this to improve performance when you aren't going to use open_count
|
||||
* Set this to improve performance when you aren't going to use open_count.
|
||||
*/
|
||||
#define DM_SKIP_BDGET_FLAG (1 << 9) /* In */
|
||||
|
||||
/*
|
||||
* Set this to avoid attempting to freeze any filesystem when suspending.
|
||||
*/
|
||||
#define DM_SKIP_LOCKFS_FLAG (1 << 10) /* In */
|
||||
|
||||
#endif /* _LINUX_DM_IOCTL_H */
|
||||
|
||||
+14
-14
@@ -32,39 +32,39 @@
|
||||
|
||||
|
||||
typedef enum {
|
||||
AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */
|
||||
AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */
|
||||
AUDIO_SOURCE_MEMORY /* Select internal memory as the main source */
|
||||
} audio_stream_source_t;
|
||||
|
||||
|
||||
typedef enum {
|
||||
AUDIO_STOPPED, /* Device is stopped */
|
||||
AUDIO_PLAYING, /* Device is currently playing */
|
||||
AUDIO_PLAYING, /* Device is currently playing */
|
||||
AUDIO_PAUSED /* Device is paused */
|
||||
} audio_play_state_t;
|
||||
|
||||
|
||||
typedef enum {
|
||||
AUDIO_STEREO,
|
||||
AUDIO_MONO_LEFT,
|
||||
AUDIO_STEREO,
|
||||
AUDIO_MONO_LEFT,
|
||||
AUDIO_MONO_RIGHT
|
||||
} audio_channel_select_t;
|
||||
|
||||
|
||||
typedef struct audio_mixer {
|
||||
unsigned int volume_left;
|
||||
unsigned int volume_right;
|
||||
unsigned int volume_left;
|
||||
unsigned int volume_right;
|
||||
// what else do we need? bass, pass-through, ...
|
||||
} audio_mixer_t;
|
||||
|
||||
|
||||
typedef struct audio_status {
|
||||
int AV_sync_state; /* sync audio and video? */
|
||||
int mute_state; /* audio is muted */
|
||||
audio_play_state_t play_state; /* current playback state */
|
||||
audio_stream_source_t stream_source; /* current stream source */
|
||||
audio_channel_select_t channel_select; /* currently selected channel */
|
||||
int bypass_mode; /* pass on audio data to */
|
||||
int AV_sync_state; /* sync audio and video? */
|
||||
int mute_state; /* audio is muted */
|
||||
audio_play_state_t play_state; /* current playback state */
|
||||
audio_stream_source_t stream_source; /* current stream source */
|
||||
audio_channel_select_t channel_select; /* currently selected channel */
|
||||
int bypass_mode; /* pass on audio data to */
|
||||
audio_mixer_t mixer_state; /* current mixer state */
|
||||
} audio_status_t; /* separate decoder hardware */
|
||||
|
||||
@@ -74,8 +74,8 @@ struct audio_karaoke{ /* if Vocal1 or Vocal2 are non-zero, they get mixed */
|
||||
int vocal1; /* into left and right t at 70% each */
|
||||
int vocal2; /* if both, Vocal1 and Vocal2 are non-zero, Vocal1 gets*/
|
||||
int melody; /* mixed into the left channel and */
|
||||
/* Vocal2 into the right channel at 100% each. */
|
||||
/* if Melody is non-zero, the melody channel gets mixed*/
|
||||
/* Vocal2 into the right channel at 100% each. */
|
||||
/* if Melody is non-zero, the melody channel gets mixed*/
|
||||
} audio_karaoke_t; /* into left and right */
|
||||
|
||||
|
||||
|
||||
+18
-18
@@ -27,16 +27,16 @@
|
||||
/* slot interface types and info */
|
||||
|
||||
typedef struct ca_slot_info {
|
||||
int num; /* slot number */
|
||||
int num; /* slot number */
|
||||
|
||||
int type; /* CA interface this slot supports */
|
||||
int type; /* CA interface this slot supports */
|
||||
#define CA_CI 1 /* CI high level interface */
|
||||
#define CA_CI_LINK 2 /* CI link layer level interface */
|
||||
#define CA_CI_PHYS 4 /* CI physical layer level interface */
|
||||
#define CA_DESCR 8 /* built-in descrambler */
|
||||
#define CA_SC 128 /* simple smart card interface */
|
||||
|
||||
unsigned int flags;
|
||||
unsigned int flags;
|
||||
#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
|
||||
#define CA_CI_MODULE_READY 2
|
||||
} ca_slot_info_t;
|
||||
@@ -45,37 +45,37 @@ typedef struct ca_slot_info {
|
||||
/* descrambler types and info */
|
||||
|
||||
typedef struct ca_descr_info {
|
||||
unsigned int num; /* number of available descramblers (keys) */
|
||||
unsigned int type; /* type of supported scrambling system */
|
||||
unsigned int num; /* number of available descramblers (keys) */
|
||||
unsigned int type; /* type of supported scrambling system */
|
||||
#define CA_ECD 1
|
||||
#define CA_NDS 2
|
||||
#define CA_DSS 4
|
||||
} ca_descr_info_t;
|
||||
|
||||
typedef struct ca_caps {
|
||||
unsigned int slot_num; /* total number of CA card and module slots */
|
||||
unsigned int slot_type; /* OR of all supported types */
|
||||
unsigned int descr_num; /* total number of descrambler slots (keys) */
|
||||
unsigned int descr_type; /* OR of all supported types */
|
||||
unsigned int slot_num; /* total number of CA card and module slots */
|
||||
unsigned int slot_type; /* OR of all supported types */
|
||||
unsigned int descr_num; /* total number of descrambler slots (keys) */
|
||||
unsigned int descr_type; /* OR of all supported types */
|
||||
} ca_caps_t;
|
||||
|
||||
/* a message to/from a CI-CAM */
|
||||
typedef struct ca_msg {
|
||||
unsigned int index;
|
||||
unsigned int type;
|
||||
unsigned int length;
|
||||
unsigned char msg[256];
|
||||
unsigned int index;
|
||||
unsigned int type;
|
||||
unsigned int length;
|
||||
unsigned char msg[256];
|
||||
} ca_msg_t;
|
||||
|
||||
typedef struct ca_descr {
|
||||
unsigned int index;
|
||||
unsigned int parity; /* 0 == even, 1 == odd */
|
||||
unsigned char cw[8];
|
||||
unsigned int index;
|
||||
unsigned int parity; /* 0 == even, 1 == odd */
|
||||
unsigned char cw[8];
|
||||
} ca_descr_t;
|
||||
|
||||
typedef struct ca_pid {
|
||||
unsigned int pid;
|
||||
int index; /* -1 == disable*/
|
||||
unsigned int pid;
|
||||
int index; /* -1 == disable*/
|
||||
} ca_pid_t;
|
||||
|
||||
#define CA_RESET _IO('o', 128)
|
||||
|
||||
+10
-10
@@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* dmx.h
|
||||
*
|
||||
* Copyright (C) 2000 Marcus Metzler <marcus@convergence.de>
|
||||
@@ -38,10 +38,10 @@ typedef enum
|
||||
{
|
||||
DMX_OUT_DECODER, /* Streaming directly to decoder. */
|
||||
DMX_OUT_TAP, /* Output going to a memory buffer */
|
||||
/* (to be retrieved via the read command).*/
|
||||
/* (to be retrieved via the read command).*/
|
||||
DMX_OUT_TS_TAP /* Output multiplexed into a new TS */
|
||||
/* (to be retrieved by reading from the */
|
||||
/* logical DVR device). */
|
||||
/* (to be retrieved by reading from the */
|
||||
/* logical DVR device). */
|
||||
} dmx_output_t;
|
||||
|
||||
|
||||
@@ -54,25 +54,25 @@ typedef enum
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DMX_PES_AUDIO0,
|
||||
DMX_PES_AUDIO0,
|
||||
DMX_PES_VIDEO0,
|
||||
DMX_PES_TELETEXT0,
|
||||
DMX_PES_SUBTITLE0,
|
||||
DMX_PES_PCR0,
|
||||
|
||||
DMX_PES_AUDIO1,
|
||||
DMX_PES_AUDIO1,
|
||||
DMX_PES_VIDEO1,
|
||||
DMX_PES_TELETEXT1,
|
||||
DMX_PES_SUBTITLE1,
|
||||
DMX_PES_PCR1,
|
||||
|
||||
DMX_PES_AUDIO2,
|
||||
DMX_PES_AUDIO2,
|
||||
DMX_PES_VIDEO2,
|
||||
DMX_PES_TELETEXT2,
|
||||
DMX_PES_SUBTITLE2,
|
||||
DMX_PES_PCR2,
|
||||
|
||||
DMX_PES_AUDIO3,
|
||||
DMX_PES_AUDIO3,
|
||||
DMX_PES_VIDEO3,
|
||||
DMX_PES_TELETEXT3,
|
||||
DMX_PES_SUBTITLE3,
|
||||
@@ -90,8 +90,8 @@ typedef enum
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DMX_SCRAMBLING_EV,
|
||||
DMX_FRONTEND_EV
|
||||
DMX_SCRAMBLING_EV,
|
||||
DMX_FRONTEND_EV
|
||||
} dmx_event_t;
|
||||
|
||||
|
||||
|
||||
+29
-29
@@ -98,43 +98,43 @@ typedef enum {
|
||||
} OSD_Command;
|
||||
|
||||
typedef struct osd_cmd_s {
|
||||
OSD_Command cmd;
|
||||
int x0;
|
||||
int y0;
|
||||
int x1;
|
||||
int y1;
|
||||
int color;
|
||||
void __user *data;
|
||||
OSD_Command cmd;
|
||||
int x0;
|
||||
int y0;
|
||||
int x1;
|
||||
int y1;
|
||||
int color;
|
||||
void __user *data;
|
||||
} osd_cmd_t;
|
||||
|
||||
/* OSD_OpenRaw: set 'color' to desired window type */
|
||||
typedef enum {
|
||||
OSD_BITMAP1, /* 1 bit bitmap */
|
||||
OSD_BITMAP2, /* 2 bit bitmap */
|
||||
OSD_BITMAP4, /* 4 bit bitmap */
|
||||
OSD_BITMAP8, /* 8 bit bitmap */
|
||||
OSD_BITMAP1HR, /* 1 Bit bitmap half resolution */
|
||||
OSD_BITMAP2HR, /* 2 bit bitmap half resolution */
|
||||
OSD_BITMAP4HR, /* 4 bit bitmap half resolution */
|
||||
OSD_BITMAP8HR, /* 8 bit bitmap half resolution */
|
||||
OSD_YCRCB422, /* 4:2:2 YCRCB Graphic Display */
|
||||
OSD_YCRCB444, /* 4:4:4 YCRCB Graphic Display */
|
||||
OSD_YCRCB444HR, /* 4:4:4 YCRCB graphic half resolution */
|
||||
OSD_VIDEOTSIZE, /* True Size Normal MPEG Video Display */
|
||||
OSD_VIDEOHSIZE, /* MPEG Video Display Half Resolution */
|
||||
OSD_VIDEOQSIZE, /* MPEG Video Display Quarter Resolution */
|
||||
OSD_VIDEODSIZE, /* MPEG Video Display Double Resolution */
|
||||
OSD_VIDEOTHSIZE, /* True Size MPEG Video Display Half Resolution */
|
||||
OSD_VIDEOTQSIZE, /* True Size MPEG Video Display Quarter Resolution*/
|
||||
OSD_VIDEOTDSIZE, /* True Size MPEG Video Display Double Resolution */
|
||||
OSD_VIDEONSIZE, /* Full Size MPEG Video Display */
|
||||
OSD_CURSOR /* Cursor */
|
||||
OSD_BITMAP1, /* 1 bit bitmap */
|
||||
OSD_BITMAP2, /* 2 bit bitmap */
|
||||
OSD_BITMAP4, /* 4 bit bitmap */
|
||||
OSD_BITMAP8, /* 8 bit bitmap */
|
||||
OSD_BITMAP1HR, /* 1 Bit bitmap half resolution */
|
||||
OSD_BITMAP2HR, /* 2 bit bitmap half resolution */
|
||||
OSD_BITMAP4HR, /* 4 bit bitmap half resolution */
|
||||
OSD_BITMAP8HR, /* 8 bit bitmap half resolution */
|
||||
OSD_YCRCB422, /* 4:2:2 YCRCB Graphic Display */
|
||||
OSD_YCRCB444, /* 4:4:4 YCRCB Graphic Display */
|
||||
OSD_YCRCB444HR, /* 4:4:4 YCRCB graphic half resolution */
|
||||
OSD_VIDEOTSIZE, /* True Size Normal MPEG Video Display */
|
||||
OSD_VIDEOHSIZE, /* MPEG Video Display Half Resolution */
|
||||
OSD_VIDEOQSIZE, /* MPEG Video Display Quarter Resolution */
|
||||
OSD_VIDEODSIZE, /* MPEG Video Display Double Resolution */
|
||||
OSD_VIDEOTHSIZE, /* True Size MPEG Video Display Half Resolution */
|
||||
OSD_VIDEOTQSIZE, /* True Size MPEG Video Display Quarter Resolution*/
|
||||
OSD_VIDEOTDSIZE, /* True Size MPEG Video Display Double Resolution */
|
||||
OSD_VIDEONSIZE, /* Full Size MPEG Video Display */
|
||||
OSD_CURSOR /* Cursor */
|
||||
} osd_raw_window_t;
|
||||
|
||||
typedef struct osd_cap_s {
|
||||
int cmd;
|
||||
int cmd;
|
||||
#define OSD_CAP_MEMSIZE 1 /* memory size */
|
||||
long val;
|
||||
long val;
|
||||
} osd_cap_t;
|
||||
|
||||
|
||||
|
||||
+22
-22
@@ -36,7 +36,7 @@
|
||||
|
||||
typedef enum {
|
||||
VIDEO_FORMAT_4_3, /* Select 4:3 format */
|
||||
VIDEO_FORMAT_16_9, /* Select 16:9 format. */
|
||||
VIDEO_FORMAT_16_9, /* Select 16:9 format. */
|
||||
VIDEO_FORMAT_221_1 /* 2.21:1 */
|
||||
} video_format_t;
|
||||
|
||||
@@ -54,7 +54,7 @@ typedef enum {
|
||||
|
||||
|
||||
typedef enum {
|
||||
VIDEO_PAN_SCAN, /* use pan and scan format */
|
||||
VIDEO_PAN_SCAN, /* use pan and scan format */
|
||||
VIDEO_LETTER_BOX, /* use letterbox format */
|
||||
VIDEO_CENTER_CUT_OUT /* use center cut out format */
|
||||
} video_displayformat_t;
|
||||
@@ -66,7 +66,7 @@ typedef struct {
|
||||
} video_size_t;
|
||||
|
||||
typedef enum {
|
||||
VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */
|
||||
VIDEO_SOURCE_DEMUX, /* Select the demux as the main source */
|
||||
VIDEO_SOURCE_MEMORY /* If this source is selected, the stream
|
||||
comes from the user through the write
|
||||
system call */
|
||||
@@ -75,35 +75,35 @@ typedef enum {
|
||||
|
||||
typedef enum {
|
||||
VIDEO_STOPPED, /* Video is stopped */
|
||||
VIDEO_PLAYING, /* Video is currently playing */
|
||||
VIDEO_PLAYING, /* Video is currently playing */
|
||||
VIDEO_FREEZED /* Video is freezed */
|
||||
} video_play_state_t;
|
||||
|
||||
|
||||
struct video_event {
|
||||
int32_t type;
|
||||
int32_t type;
|
||||
#define VIDEO_EVENT_SIZE_CHANGED 1
|
||||
#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
|
||||
time_t timestamp;
|
||||
time_t timestamp;
|
||||
union {
|
||||
video_size_t size;
|
||||
video_size_t size;
|
||||
unsigned int frame_rate; /* in frames per 1000sec */
|
||||
} u;
|
||||
};
|
||||
|
||||
|
||||
struct video_status {
|
||||
int video_blank; /* blank video on freeze? */
|
||||
video_play_state_t play_state; /* current state of playback */
|
||||
video_stream_source_t stream_source; /* current source (demux/memory) */
|
||||
video_format_t video_format; /* current aspect ratio of stream*/
|
||||
video_displayformat_t display_format;/* selected cropping mode */
|
||||
int video_blank; /* blank video on freeze? */
|
||||
video_play_state_t play_state; /* current state of playback */
|
||||
video_stream_source_t stream_source; /* current source (demux/memory) */
|
||||
video_format_t video_format; /* current aspect ratio of stream*/
|
||||
video_displayformat_t display_format;/* selected cropping mode */
|
||||
};
|
||||
|
||||
|
||||
struct video_still_picture {
|
||||
char __user *iFrame; /* pointer to a single iframe in memory */
|
||||
int32_t size;
|
||||
char __user *iFrame; /* pointer to a single iframe in memory */
|
||||
int32_t size;
|
||||
};
|
||||
|
||||
|
||||
@@ -111,19 +111,19 @@ typedef
|
||||
struct video_highlight {
|
||||
int active; /* 1=show highlight, 0=hide highlight */
|
||||
uint8_t contrast1; /* 7- 4 Pattern pixel contrast */
|
||||
/* 3- 0 Background pixel contrast */
|
||||
/* 3- 0 Background pixel contrast */
|
||||
uint8_t contrast2; /* 7- 4 Emphasis pixel-2 contrast */
|
||||
/* 3- 0 Emphasis pixel-1 contrast */
|
||||
/* 3- 0 Emphasis pixel-1 contrast */
|
||||
uint8_t color1; /* 7- 4 Pattern pixel color */
|
||||
/* 3- 0 Background pixel color */
|
||||
/* 3- 0 Background pixel color */
|
||||
uint8_t color2; /* 7- 4 Emphasis pixel-2 color */
|
||||
/* 3- 0 Emphasis pixel-1 color */
|
||||
/* 3- 0 Emphasis pixel-1 color */
|
||||
uint32_t ypos; /* 23-22 auto action mode */
|
||||
/* 21-12 start y */
|
||||
/* 9- 0 end y */
|
||||
/* 21-12 start y */
|
||||
/* 9- 0 end y */
|
||||
uint32_t xpos; /* 23-22 button color number */
|
||||
/* 21-12 start x */
|
||||
/* 9- 0 end x */
|
||||
/* 21-12 start x */
|
||||
/* 9- 0 end x */
|
||||
} video_highlight_t;
|
||||
|
||||
|
||||
|
||||
@@ -130,6 +130,7 @@ extern int elv_try_last_merge(request_queue_t *, struct bio *);
|
||||
#define ELEVATOR_INSERT_FRONT 1
|
||||
#define ELEVATOR_INSERT_BACK 2
|
||||
#define ELEVATOR_INSERT_SORT 3
|
||||
#define ELEVATOR_INSERT_REQUEUE 4
|
||||
|
||||
/*
|
||||
* return values from elevator_may_queue_fn
|
||||
|
||||
@@ -63,10 +63,11 @@ static inline int is_zero_ether_addr(const u8 *addr)
|
||||
* @addr: Pointer to a six-byte array containing the Ethernet address
|
||||
*
|
||||
* Return true if the address is a multicast address.
|
||||
* By definition the broadcast address is also a multicast address.
|
||||
*/
|
||||
static inline int is_multicast_ether_addr(const u8 *addr)
|
||||
{
|
||||
return ((addr[0] != 0xff) && (0x01 & addr[0]));
|
||||
return (0x01 & addr[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -617,6 +617,12 @@ struct fb_ops {
|
||||
|
||||
/* perform fb specific mmap */
|
||||
int (*fb_mmap)(struct fb_info *info, struct file *file, struct vm_area_struct *vma);
|
||||
|
||||
/* save current hardware state */
|
||||
void (*fb_save_state)(struct fb_info *info);
|
||||
|
||||
/* restore saved state */
|
||||
void (*fb_restore_state)(struct fb_info *info);
|
||||
};
|
||||
|
||||
#ifdef CONFIG_FB_TILEBLITTING
|
||||
@@ -726,6 +732,18 @@ struct fb_tile_ops {
|
||||
from userspace */
|
||||
#define FBINFO_MISC_TILEBLITTING 0x20000 /* use tile blitting */
|
||||
|
||||
/* A driver may set this flag to indicate that it does want a set_par to be
|
||||
* called every time when fbcon_switch is executed. The advantage is that with
|
||||
* this flag set you can really be shure that set_par is always called before
|
||||
* any of the functions dependant on the correct hardware state or altering
|
||||
* that state, even if you are using some broken X releases. The disadvantage
|
||||
* is that it introduces unwanted delays to every console switch if set_par
|
||||
* is slow. It is a good idea to try this flag in the drivers initialization
|
||||
* code whenever there is a bug report related to switching between X and the
|
||||
* framebuffer console.
|
||||
*/
|
||||
#define FBINFO_MISC_ALWAYS_SETPAR 0x40000
|
||||
|
||||
struct fb_info {
|
||||
int node;
|
||||
int flags;
|
||||
@@ -815,6 +833,18 @@ struct fb_info {
|
||||
#define fb_writeq(b,addr) (*(volatile u64 *) (addr) = (b))
|
||||
#define fb_memset memset
|
||||
|
||||
#endif
|
||||
|
||||
#if defined (__BIG_ENDIAN)
|
||||
#define FB_LEFT_POS(bpp) (32 - bpp)
|
||||
#define FB_SHIFT_HIGH(val, bits) ((val) >> (bits))
|
||||
#define FB_SHIFT_LOW(val, bits) ((val) << (bits))
|
||||
#define FB_BIT_NR(b) (7 - (b))
|
||||
#else
|
||||
#define FB_LEFT_POS(bpp) (0)
|
||||
#define FB_SHIFT_HIGH(val, bits) ((val) << (bits))
|
||||
#define FB_SHIFT_LOW(val, bits) ((val) >> (bits))
|
||||
#define FB_BIT_NR(b) (b)
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -143,7 +143,7 @@ static inline unsigned int sk_filter_len(struct sk_filter *fp)
|
||||
struct sk_buff;
|
||||
struct sock;
|
||||
|
||||
extern int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen);
|
||||
extern unsigned int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen);
|
||||
extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk);
|
||||
extern int sk_chk_filter(struct sock_filter *filter, int flen);
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
@@ -14,7 +14,7 @@ struct device;
|
||||
int request_firmware(const struct firmware **fw, const char *name,
|
||||
struct device *device);
|
||||
int request_firmware_nowait(
|
||||
struct module *module, int hotplug,
|
||||
struct module *module, int uevent,
|
||||
const char *name, struct device *device, void *context,
|
||||
void (*cont)(const struct firmware *fw, void *context));
|
||||
|
||||
|
||||
+33
-1
@@ -302,6 +302,37 @@ struct iattr {
|
||||
*/
|
||||
#include <linux/quota.h>
|
||||
|
||||
/**
|
||||
* enum positive_aop_returns - aop return codes with specific semantics
|
||||
*
|
||||
* @AOP_WRITEPAGE_ACTIVATE: Informs the caller that page writeback has
|
||||
* completed, that the page is still locked, and
|
||||
* should be considered active. The VM uses this hint
|
||||
* to return the page to the active list -- it won't
|
||||
* be a candidate for writeback again in the near
|
||||
* future. Other callers must be careful to unlock
|
||||
* the page if they get this return. Returned by
|
||||
* writepage();
|
||||
*
|
||||
* @AOP_TRUNCATED_PAGE: The AOP method that was handed a locked page has
|
||||
* unlocked it and the page might have been truncated.
|
||||
* The caller should back up to acquiring a new page and
|
||||
* trying again. The aop will be taking reasonable
|
||||
* precautions not to livelock. If the caller held a page
|
||||
* reference, it should drop it before retrying. Returned
|
||||
* by readpage(), prepare_write(), and commit_write().
|
||||
*
|
||||
* address_space_operation functions return these large constants to indicate
|
||||
* special semantics to the caller. These are much larger than the bytes in a
|
||||
* page to allow for functions that return the number of bytes operated on in a
|
||||
* given page.
|
||||
*/
|
||||
|
||||
enum positive_aop_returns {
|
||||
AOP_WRITEPAGE_ACTIVATE = 0x80000,
|
||||
AOP_TRUNCATED_PAGE = 0x80001,
|
||||
};
|
||||
|
||||
/*
|
||||
* oh the beauties of C type declarations.
|
||||
*/
|
||||
@@ -729,7 +760,7 @@ extern struct file_lock *posix_test_lock(struct file *, struct file_lock *);
|
||||
extern int posix_lock_file(struct file *, struct file_lock *);
|
||||
extern int posix_lock_file_wait(struct file *, struct file_lock *);
|
||||
extern void posix_block_lock(struct file_lock *, struct file_lock *);
|
||||
extern void posix_unblock_lock(struct file *, struct file_lock *);
|
||||
extern int posix_unblock_lock(struct file *, struct file_lock *);
|
||||
extern int posix_locks_deadlock(struct file_lock *, struct file_lock *);
|
||||
extern int flock_lock_file_wait(struct file *filp, struct file_lock *fl);
|
||||
extern int __break_lease(struct inode *inode, unsigned int flags);
|
||||
@@ -1019,6 +1050,7 @@ struct inode_operations {
|
||||
ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
|
||||
ssize_t (*listxattr) (struct dentry *, char *, size_t);
|
||||
int (*removexattr) (struct dentry *, const char *);
|
||||
void (*truncate_range)(struct inode *, loff_t, loff_t);
|
||||
};
|
||||
|
||||
struct seq_file;
|
||||
|
||||
+16
-8
@@ -14,7 +14,7 @@
|
||||
#define FUSE_KERNEL_VERSION 7
|
||||
|
||||
/** Minor version number of this interface */
|
||||
#define FUSE_KERNEL_MINOR_VERSION 3
|
||||
#define FUSE_KERNEL_MINOR_VERSION 5
|
||||
|
||||
/** The node ID of the root inode */
|
||||
#define FUSE_ROOT_ID 1
|
||||
@@ -53,6 +53,9 @@ struct fuse_kstatfs {
|
||||
__u64 ffree;
|
||||
__u32 bsize;
|
||||
__u32 namelen;
|
||||
__u32 frsize;
|
||||
__u32 padding;
|
||||
__u32 spare[6];
|
||||
};
|
||||
|
||||
#define FATTR_MODE (1 << 0)
|
||||
@@ -105,12 +108,8 @@ enum fuse_opcode {
|
||||
FUSE_CREATE = 35
|
||||
};
|
||||
|
||||
/* Conservative buffer size for the client */
|
||||
#define FUSE_MAX_IN 8192
|
||||
|
||||
#define FUSE_NAME_MAX 1024
|
||||
#define FUSE_SYMLINK_MAX 4096
|
||||
#define FUSE_XATTR_SIZE_MAX 4096
|
||||
/* The read buffer is required to be at least 8k, but may be much larger */
|
||||
#define FUSE_MIN_READ_BUFFER 8192
|
||||
|
||||
struct fuse_entry_out {
|
||||
__u64 nodeid; /* Inode ID */
|
||||
@@ -213,6 +212,8 @@ struct fuse_write_out {
|
||||
__u32 padding;
|
||||
};
|
||||
|
||||
#define FUSE_COMPAT_STATFS_SIZE 48
|
||||
|
||||
struct fuse_statfs_out {
|
||||
struct fuse_kstatfs st;
|
||||
};
|
||||
@@ -243,11 +244,18 @@ struct fuse_access_in {
|
||||
__u32 padding;
|
||||
};
|
||||
|
||||
struct fuse_init_in_out {
|
||||
struct fuse_init_in {
|
||||
__u32 major;
|
||||
__u32 minor;
|
||||
};
|
||||
|
||||
struct fuse_init_out {
|
||||
__u32 major;
|
||||
__u32 minor;
|
||||
__u32 unused[3];
|
||||
__u32 max_write;
|
||||
};
|
||||
|
||||
struct fuse_in_header {
|
||||
__u32 len;
|
||||
__u32 opcode;
|
||||
|
||||
@@ -22,7 +22,7 @@ int hugetlb_report_meminfo(char *);
|
||||
int hugetlb_report_node_meminfo(int, char *);
|
||||
int is_hugepage_mem_enough(size_t);
|
||||
unsigned long hugetlb_total_pages(void);
|
||||
struct page *alloc_huge_page(void);
|
||||
struct page *alloc_huge_page(struct vm_area_struct *, unsigned long);
|
||||
void free_huge_page(struct page *);
|
||||
int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
|
||||
unsigned long address, int write_access);
|
||||
@@ -97,7 +97,7 @@ static inline unsigned long hugetlb_total_pages(void)
|
||||
#define is_hugepage_only_range(mm, addr, len) 0
|
||||
#define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) \
|
||||
do { } while (0)
|
||||
#define alloc_huge_page() ({ NULL; })
|
||||
#define alloc_huge_page(vma, addr) ({ NULL; })
|
||||
#define free_huge_page(p) ({ (void)(p); BUG(); })
|
||||
#define hugetlb_fault(mm, vma, addr, write) ({ BUG(); 0; })
|
||||
|
||||
|
||||
@@ -23,14 +23,14 @@
|
||||
#ifndef _LINUX_HWMON_VID_H
|
||||
#define _LINUX_HWMON_VID_H
|
||||
|
||||
int vid_from_reg(int val, int vrm);
|
||||
int vid_which_vrm(void);
|
||||
int vid_from_reg(int val, u8 vrm);
|
||||
u8 vid_which_vrm(void);
|
||||
|
||||
/* vrm is the VRM/VRD document version multiplied by 10.
|
||||
val is in mV to avoid floating point in the kernel.
|
||||
Returned value is the 4-, 5- or 6-bit VID code.
|
||||
Note that only VRM 9.x is supported for now. */
|
||||
static inline int vid_to_reg(int val, int vrm)
|
||||
static inline int vid_to_reg(int val, u8 vrm)
|
||||
{
|
||||
switch (vrm) {
|
||||
case 91: /* VRM 9.1 */
|
||||
|
||||
+1
-21
@@ -25,12 +25,6 @@
|
||||
|
||||
/*
|
||||
* ---- Driver types -----------------------------------------------------
|
||||
* device id name + number function description, i2c address(es)
|
||||
*
|
||||
* Range 1000-1999 range is defined in sensors/sensors.h
|
||||
* Range 0x100 - 0x1ff is for V4L2 Common Components
|
||||
* Range 0xf000 - 0xffff is reserved for local experimentation, and should
|
||||
* never be used in official drivers
|
||||
*/
|
||||
|
||||
#define I2C_DRIVERID_MSP3400 1
|
||||
@@ -108,15 +102,9 @@
|
||||
#define I2C_DRIVERID_SAA7127 72 /* saa7124 video encoder */
|
||||
#define I2C_DRIVERID_SAA711X 73 /* saa711x video encoders */
|
||||
#define I2C_DRIVERID_AKITAIOEXP 74 /* IO Expander on Sharp SL-C1000 */
|
||||
#define I2C_DRIVERID_I2C_IR 75 /* I2C InfraRed on Video boards */
|
||||
|
||||
#define I2C_DRIVERID_EXP0 0xF0 /* experimental use id's */
|
||||
#define I2C_DRIVERID_EXP1 0xF1
|
||||
#define I2C_DRIVERID_EXP2 0xF2
|
||||
#define I2C_DRIVERID_EXP3 0xF3
|
||||
#define I2C_DRIVERID_INFRARED 75 /* I2C InfraRed on Video boards */
|
||||
|
||||
#define I2C_DRIVERID_I2CDEV 900
|
||||
#define I2C_DRIVERID_I2CPROC 901
|
||||
#define I2C_DRIVERID_ARP 902 /* SMBus ARP Client */
|
||||
#define I2C_DRIVERID_ALERT 903 /* SMBus Alert Responder Client */
|
||||
|
||||
@@ -131,15 +119,12 @@
|
||||
#define I2C_DRIVERID_ADM1021 1008
|
||||
#define I2C_DRIVERID_ADM9240 1009
|
||||
#define I2C_DRIVERID_LTC1710 1010
|
||||
#define I2C_DRIVERID_SIS5595 1011
|
||||
#define I2C_DRIVERID_ICSPLL 1012
|
||||
#define I2C_DRIVERID_BT869 1013
|
||||
#define I2C_DRIVERID_MAXILIFE 1014
|
||||
#define I2C_DRIVERID_MATORB 1015
|
||||
#define I2C_DRIVERID_GL520 1016
|
||||
#define I2C_DRIVERID_THMC50 1017
|
||||
#define I2C_DRIVERID_DDCMON 1018
|
||||
#define I2C_DRIVERID_VIA686A 1019
|
||||
#define I2C_DRIVERID_ADM1025 1020
|
||||
#define I2C_DRIVERID_LM87 1021
|
||||
#define I2C_DRIVERID_PCF8574 1022
|
||||
@@ -151,21 +136,16 @@
|
||||
#define I2C_DRIVERID_FSCPOS 1028
|
||||
#define I2C_DRIVERID_FSCSCY 1029
|
||||
#define I2C_DRIVERID_PCF8591 1030
|
||||
#define I2C_DRIVERID_SMSC47M1 1031
|
||||
#define I2C_DRIVERID_VT1211 1032
|
||||
#define I2C_DRIVERID_LM92 1033
|
||||
#define I2C_DRIVERID_VT8231 1034
|
||||
#define I2C_DRIVERID_SMARTBATT 1035
|
||||
#define I2C_DRIVERID_BMCSENSORS 1036
|
||||
#define I2C_DRIVERID_FS451 1037
|
||||
#define I2C_DRIVERID_W83627HF 1038
|
||||
#define I2C_DRIVERID_LM85 1039
|
||||
#define I2C_DRIVERID_LM83 1040
|
||||
#define I2C_DRIVERID_LM90 1042
|
||||
#define I2C_DRIVERID_ASB100 1043
|
||||
#define I2C_DRIVERID_FSCHER 1046
|
||||
#define I2C_DRIVERID_W83L785TS 1047
|
||||
#define I2C_DRIVERID_SMSC47B397 1050
|
||||
|
||||
/*
|
||||
* ---- Adapter types ----------------------------------------------------
|
||||
|
||||
+12
-29
@@ -105,14 +105,14 @@ extern s32 i2c_smbus_read_i2c_block_data(struct i2c_client * client,
|
||||
* A driver is capable of handling one or more physical devices present on
|
||||
* I2C adapters. This information is used to inform the driver of adapter
|
||||
* events.
|
||||
*
|
||||
* The driver.owner field should be set to the module owner of this driver.
|
||||
* The driver.name field should be set to the name of this driver.
|
||||
*/
|
||||
|
||||
struct i2c_driver {
|
||||
struct module *owner;
|
||||
char name[32];
|
||||
int id;
|
||||
unsigned int class;
|
||||
unsigned int flags; /* div., see below */
|
||||
|
||||
/* Notifies the driver that a new bus has appeared. This routine
|
||||
* can be used by the driver to test if the bus meets its conditions
|
||||
@@ -250,18 +250,7 @@ static inline void i2c_set_adapdata (struct i2c_adapter *dev, void *data)
|
||||
dev_set_drvdata (&dev->dev, data);
|
||||
}
|
||||
|
||||
/*flags for the driver struct: */
|
||||
#define I2C_DF_NOTIFY 0x01 /* notify on bus (de/a)ttaches */
|
||||
#if 0
|
||||
/* this flag is gone -- there is a (optional) driver->detach_adapter
|
||||
* callback now which can be used instead */
|
||||
# define I2C_DF_DUMMY 0x02
|
||||
#endif
|
||||
|
||||
/*flags for the client struct: */
|
||||
#define I2C_CLIENT_ALLOW_USE 0x01 /* Client allows access */
|
||||
#define I2C_CLIENT_ALLOW_MULTIPLE_USE 0x02 /* Allow multiple access-locks */
|
||||
/* on an i2c_client */
|
||||
#define I2C_CLIENT_PEC 0x04 /* Use Packet Error Checking */
|
||||
#define I2C_CLIENT_TEN 0x10 /* we have a ten bit chip address */
|
||||
/* Must equal I2C_M_TEN below */
|
||||
@@ -302,26 +291,20 @@ struct i2c_client_address_data {
|
||||
extern int i2c_add_adapter(struct i2c_adapter *);
|
||||
extern int i2c_del_adapter(struct i2c_adapter *);
|
||||
|
||||
extern int i2c_add_driver(struct i2c_driver *);
|
||||
extern int i2c_register_driver(struct module *, struct i2c_driver *);
|
||||
extern int i2c_del_driver(struct i2c_driver *);
|
||||
|
||||
static inline int i2c_add_driver(struct i2c_driver *driver)
|
||||
{
|
||||
return i2c_register_driver(THIS_MODULE, driver);
|
||||
}
|
||||
|
||||
extern int i2c_attach_client(struct i2c_client *);
|
||||
extern int i2c_detach_client(struct i2c_client *);
|
||||
|
||||
/* New function: This is to get an i2c_client-struct for controlling the
|
||||
client either by using i2c_control-function or having the
|
||||
client-module export functions that can be used with the i2c_client
|
||||
-struct. */
|
||||
extern struct i2c_client *i2c_get_client(int driver_id, int adapter_id,
|
||||
struct i2c_client *prev);
|
||||
|
||||
/* Should be used with new function
|
||||
extern struct i2c_client *i2c_get_client(int,int,struct i2c_client *);
|
||||
to make sure that client-struct is valid and that it is okay to access
|
||||
the i2c-client.
|
||||
returns -EACCES if client doesn't allow use (default)
|
||||
returns -EBUSY if client doesn't allow multiple use (default) and
|
||||
usage_count >0 */
|
||||
/* Should be used to make sure that client-struct is valid and that it
|
||||
is okay to access the i2c-client.
|
||||
returns -ENODEV if client has gone in the meantime */
|
||||
extern int i2c_use_client(struct i2c_client *);
|
||||
extern int i2c_release_client(struct i2c_client *);
|
||||
|
||||
|
||||
+871
-743
File diff suppressed because it is too large
Load Diff
+6
-125
@@ -23,17 +23,6 @@
|
||||
#include <asm/io.h>
|
||||
#include <asm/semaphore.h>
|
||||
|
||||
/*
|
||||
* This is the multiple IDE interface driver, as evolved from hd.c.
|
||||
* It supports up to four IDE interfaces, on one or more IRQs (usually 14 & 15).
|
||||
* There can be up to two drives per interface, as per the ATA-2 spec.
|
||||
*
|
||||
* Primary i/f: ide0: major=3; (hda) minor=0; (hdb) minor=64
|
||||
* Secondary i/f: ide1: major=22; (hdc or hd1a) minor=0; (hdd or hd1b) minor=64
|
||||
* Tertiary i/f: ide2: major=33; (hde) minor=0; (hdf) minor=64
|
||||
* Quaternary i/f: ide3: major=34; (hdg) minor=0; (hdh) minor=64
|
||||
*/
|
||||
|
||||
/******************************************************************************
|
||||
* IDE driver configuration options (play with these as desired):
|
||||
*
|
||||
@@ -193,11 +182,6 @@ typedef unsigned char byte; /* used everywhere */
|
||||
#define WAIT_CMD (10*HZ) /* 10sec - maximum wait for an IRQ to happen */
|
||||
#define WAIT_MIN_SLEEP (2*HZ/100) /* 20msec - minimum sleep time */
|
||||
|
||||
#define HOST(hwif,chipset) \
|
||||
{ \
|
||||
return ((hwif)->chipset == chipset) ? 1 : 0; \
|
||||
}
|
||||
|
||||
/*
|
||||
* Check for an interrupt and acknowledge the interrupt status
|
||||
*/
|
||||
@@ -390,45 +374,6 @@ typedef union {
|
||||
} b;
|
||||
} ata_nsector_t, ata_data_t, atapi_bcount_t, ata_index_t;
|
||||
|
||||
/*
|
||||
* ATA-IDE Error Register
|
||||
*
|
||||
* mark : Bad address mark
|
||||
* tzero : Couldn't find track 0
|
||||
* abrt : Aborted Command
|
||||
* mcr : Media Change Request
|
||||
* id : ID field not found
|
||||
* mce : Media Change Event
|
||||
* ecc : Uncorrectable ECC error
|
||||
* bdd : dual meaing
|
||||
*/
|
||||
typedef union {
|
||||
unsigned all :8;
|
||||
struct {
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
unsigned mark :1;
|
||||
unsigned tzero :1;
|
||||
unsigned abrt :1;
|
||||
unsigned mcr :1;
|
||||
unsigned id :1;
|
||||
unsigned mce :1;
|
||||
unsigned ecc :1;
|
||||
unsigned bdd :1;
|
||||
#elif defined(__BIG_ENDIAN_BITFIELD)
|
||||
unsigned bdd :1;
|
||||
unsigned ecc :1;
|
||||
unsigned mce :1;
|
||||
unsigned id :1;
|
||||
unsigned mcr :1;
|
||||
unsigned abrt :1;
|
||||
unsigned tzero :1;
|
||||
unsigned mark :1;
|
||||
#else
|
||||
#error "Please fix <asm/byteorder.h>"
|
||||
#endif
|
||||
} b;
|
||||
} ata_error_t;
|
||||
|
||||
/*
|
||||
* ATA-IDE Select Register, aka Device-Head
|
||||
*
|
||||
@@ -503,39 +448,6 @@ typedef union {
|
||||
} b;
|
||||
} ata_status_t, atapi_status_t;
|
||||
|
||||
/*
|
||||
* ATA-IDE Control Register
|
||||
*
|
||||
* bit0 : Should be set to zero
|
||||
* nIEN : device INTRQ to host
|
||||
* SRST : host soft reset bit
|
||||
* bit3 : ATA-2 thingy, Should be set to 1
|
||||
* reserved456 : Reserved
|
||||
* HOB : 48-bit address ordering, High Ordered Bit
|
||||
*/
|
||||
typedef union {
|
||||
unsigned all : 8;
|
||||
struct {
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
unsigned bit0 : 1;
|
||||
unsigned nIEN : 1;
|
||||
unsigned SRST : 1;
|
||||
unsigned bit3 : 1;
|
||||
unsigned reserved456 : 3;
|
||||
unsigned HOB : 1;
|
||||
#elif defined(__BIG_ENDIAN_BITFIELD)
|
||||
unsigned HOB : 1;
|
||||
unsigned reserved456 : 3;
|
||||
unsigned bit3 : 1;
|
||||
unsigned SRST : 1;
|
||||
unsigned nIEN : 1;
|
||||
unsigned bit0 : 1;
|
||||
#else
|
||||
#error "Please fix <asm/byteorder.h>"
|
||||
#endif
|
||||
} b;
|
||||
} ata_control_t;
|
||||
|
||||
/*
|
||||
* ATAPI Feature Register
|
||||
*
|
||||
@@ -617,39 +529,6 @@ typedef union {
|
||||
} b;
|
||||
} atapi_error_t;
|
||||
|
||||
/*
|
||||
* ATAPI floppy Drive Select Register
|
||||
*
|
||||
* sam_lun : Logical unit number
|
||||
* reserved3 : Reserved
|
||||
* drv : The responding drive will be drive 0 (0) or drive 1 (1)
|
||||
* one5 : Should be set to 1
|
||||
* reserved6 : Reserved
|
||||
* one7 : Should be set to 1
|
||||
*/
|
||||
typedef union {
|
||||
unsigned all :8;
|
||||
struct {
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
unsigned sam_lun :3;
|
||||
unsigned reserved3 :1;
|
||||
unsigned drv :1;
|
||||
unsigned one5 :1;
|
||||
unsigned reserved6 :1;
|
||||
unsigned one7 :1;
|
||||
#elif defined(__BIG_ENDIAN_BITFIELD)
|
||||
unsigned one7 :1;
|
||||
unsigned reserved6 :1;
|
||||
unsigned one5 :1;
|
||||
unsigned drv :1;
|
||||
unsigned reserved3 :1;
|
||||
unsigned sam_lun :3;
|
||||
#else
|
||||
#error "Please fix <asm/byteorder.h>"
|
||||
#endif
|
||||
} b;
|
||||
} atapi_select_t;
|
||||
|
||||
/*
|
||||
* Status returned from various ide_ functions
|
||||
*/
|
||||
@@ -1101,10 +980,7 @@ typedef struct ide_driver_s {
|
||||
int (*end_request)(ide_drive_t *, int, int);
|
||||
ide_startstop_t (*error)(ide_drive_t *, struct request *rq, u8, u8);
|
||||
ide_startstop_t (*abort)(ide_drive_t *, struct request *rq);
|
||||
int (*ioctl)(ide_drive_t *, struct inode *, struct file *, unsigned int, unsigned long);
|
||||
ide_proc_entry_t *proc;
|
||||
void (*ata_prebuilder)(ide_drive_t *);
|
||||
void (*atapi_prebuilder)(ide_drive_t *);
|
||||
struct device_driver gen_driver;
|
||||
} ide_driver_t;
|
||||
|
||||
@@ -1298,7 +1174,6 @@ extern int ide_spin_wait_hwgroup(ide_drive_t *);
|
||||
extern void ide_timer_expiry(unsigned long);
|
||||
extern irqreturn_t ide_intr(int irq, void *dev_id, struct pt_regs *regs);
|
||||
extern void do_ide_request(request_queue_t *);
|
||||
extern void ide_init_subdrivers(void);
|
||||
|
||||
void ide_init_disk(struct gendisk *, ide_drive_t *);
|
||||
|
||||
@@ -1371,6 +1246,12 @@ void ide_init_sg_cmd(ide_drive_t *, struct request *);
|
||||
#define GOOD_DMA_DRIVE 1
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA
|
||||
struct drive_list_entry {
|
||||
const char *id_model;
|
||||
const char *id_firmware;
|
||||
};
|
||||
|
||||
int ide_in_drive_list(struct hd_driveid *, const struct drive_list_entry *);
|
||||
int __ide_dma_bad_drive(ide_drive_t *);
|
||||
int __ide_dma_good_drive(ide_drive_t *);
|
||||
int ide_use_dma(ide_drive_t *);
|
||||
|
||||
@@ -157,8 +157,7 @@ struct pppox_proto {
|
||||
extern int register_pppox_proto(int proto_num, struct pppox_proto *pp);
|
||||
extern void unregister_pppox_proto(int proto_num);
|
||||
extern void pppox_unbind_sock(struct sock *sk);/* delete ppp-channel binding */
|
||||
extern int pppox_channel_ioctl(struct ppp_channel *pc, unsigned int cmd,
|
||||
unsigned long arg);
|
||||
extern int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);
|
||||
|
||||
/* PPPoX socket states */
|
||||
enum {
|
||||
|
||||
@@ -45,6 +45,6 @@
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/types.h>
|
||||
|
||||
extern __u32 in_aton(const char *str);
|
||||
extern __be32 in_aton(const char *str);
|
||||
#endif
|
||||
#endif /* _LINUX_INET_H */
|
||||
|
||||
@@ -47,6 +47,8 @@ struct inotify_event {
|
||||
#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */
|
||||
|
||||
/* special flags */
|
||||
#define IN_ONLYDIR 0x01000000 /* only watch the path if it is a directory */
|
||||
#define IN_DONT_FOLLOW 0x02000000 /* don't follow a sym link */
|
||||
#define IN_MASK_ADD 0x20000000 /* add to the mask of an already existing watch */
|
||||
#define IN_ISDIR 0x40000000 /* event occurred against dir */
|
||||
#define IN_ONESHOT 0x80000000 /* only send event once */
|
||||
|
||||
+41
-38
@@ -13,6 +13,7 @@
|
||||
#include <linux/time.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#else
|
||||
#include <sys/time.h>
|
||||
#include <sys/ioctl.h>
|
||||
@@ -511,6 +512,8 @@ struct input_absinfo {
|
||||
#define KEY_FN_S 0x1e3
|
||||
#define KEY_FN_B 0x1e4
|
||||
|
||||
/* We avoid low common keys in module aliases so they don't get huge. */
|
||||
#define KEY_MIN_INTERESTING KEY_MUTE
|
||||
#define KEY_MAX 0x1ff
|
||||
|
||||
/*
|
||||
@@ -793,6 +796,44 @@ struct ff_effect {
|
||||
|
||||
#define FF_MAX 0x7f
|
||||
|
||||
struct input_device_id {
|
||||
|
||||
kernel_ulong_t flags;
|
||||
|
||||
struct input_id id;
|
||||
|
||||
kernel_ulong_t evbit[EV_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t keybit[KEY_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t relbit[REL_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t absbit[ABS_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t mscbit[MSC_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t ledbit[LED_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t sndbit[SND_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t ffbit[FF_MAX/BITS_PER_LONG+1];
|
||||
kernel_ulong_t swbit[SW_MAX/BITS_PER_LONG+1];
|
||||
|
||||
kernel_ulong_t driver_info;
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure for hotplug & device<->driver matching.
|
||||
*/
|
||||
|
||||
#define INPUT_DEVICE_ID_MATCH_BUS 1
|
||||
#define INPUT_DEVICE_ID_MATCH_VENDOR 2
|
||||
#define INPUT_DEVICE_ID_MATCH_PRODUCT 4
|
||||
#define INPUT_DEVICE_ID_MATCH_VERSION 8
|
||||
|
||||
#define INPUT_DEVICE_ID_MATCH_EVBIT 0x010
|
||||
#define INPUT_DEVICE_ID_MATCH_KEYBIT 0x020
|
||||
#define INPUT_DEVICE_ID_MATCH_RELBIT 0x040
|
||||
#define INPUT_DEVICE_ID_MATCH_ABSBIT 0x080
|
||||
#define INPUT_DEVICE_ID_MATCH_MSCIT 0x100
|
||||
#define INPUT_DEVICE_ID_MATCH_LEDBIT 0x200
|
||||
#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x400
|
||||
#define INPUT_DEVICE_ID_MATCH_FFBIT 0x800
|
||||
#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
/*
|
||||
@@ -901,49 +942,11 @@ struct input_dev {
|
||||
};
|
||||
#define to_input_dev(d) container_of(d, struct input_dev, cdev)
|
||||
|
||||
/*
|
||||
* Structure for hotplug & device<->driver matching.
|
||||
*/
|
||||
|
||||
#define INPUT_DEVICE_ID_MATCH_BUS 1
|
||||
#define INPUT_DEVICE_ID_MATCH_VENDOR 2
|
||||
#define INPUT_DEVICE_ID_MATCH_PRODUCT 4
|
||||
#define INPUT_DEVICE_ID_MATCH_VERSION 8
|
||||
|
||||
#define INPUT_DEVICE_ID_MATCH_EVBIT 0x010
|
||||
#define INPUT_DEVICE_ID_MATCH_KEYBIT 0x020
|
||||
#define INPUT_DEVICE_ID_MATCH_RELBIT 0x040
|
||||
#define INPUT_DEVICE_ID_MATCH_ABSBIT 0x080
|
||||
#define INPUT_DEVICE_ID_MATCH_MSCIT 0x100
|
||||
#define INPUT_DEVICE_ID_MATCH_LEDBIT 0x200
|
||||
#define INPUT_DEVICE_ID_MATCH_SNDBIT 0x400
|
||||
#define INPUT_DEVICE_ID_MATCH_FFBIT 0x800
|
||||
#define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000
|
||||
|
||||
#define INPUT_DEVICE_ID_MATCH_DEVICE\
|
||||
(INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT)
|
||||
#define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION\
|
||||
(INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION)
|
||||
|
||||
struct input_device_id {
|
||||
|
||||
unsigned long flags;
|
||||
|
||||
struct input_id id;
|
||||
|
||||
unsigned long evbit[NBITS(EV_MAX)];
|
||||
unsigned long keybit[NBITS(KEY_MAX)];
|
||||
unsigned long relbit[NBITS(REL_MAX)];
|
||||
unsigned long absbit[NBITS(ABS_MAX)];
|
||||
unsigned long mscbit[NBITS(MSC_MAX)];
|
||||
unsigned long ledbit[NBITS(LED_MAX)];
|
||||
unsigned long sndbit[NBITS(SND_MAX)];
|
||||
unsigned long ffbit[NBITS(FF_MAX)];
|
||||
unsigned long swbit[NBITS(SW_MAX)];
|
||||
|
||||
unsigned long driver_info;
|
||||
};
|
||||
|
||||
struct input_handle;
|
||||
|
||||
struct input_handler {
|
||||
|
||||
+6
-125
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
#ifndef _LINUX_IP_H
|
||||
#define _LINUX_IP_H
|
||||
#include <linux/types.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
#define IPTOS_TOS_MASK 0x1E
|
||||
@@ -78,126 +79,6 @@
|
||||
#define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */
|
||||
#define IPOPT_TS_PRESPEC 3 /* specified modules only */
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/config.h>
|
||||
#include <linux/types.h>
|
||||
#include <net/request_sock.h>
|
||||
#include <net/sock.h>
|
||||
#include <linux/igmp.h>
|
||||
#include <net/flow.h>
|
||||
|
||||
struct ip_options {
|
||||
__u32 faddr; /* Saved first hop address */
|
||||
unsigned char optlen;
|
||||
unsigned char srr;
|
||||
unsigned char rr;
|
||||
unsigned char ts;
|
||||
unsigned char is_setbyuser:1, /* Set by setsockopt? */
|
||||
is_data:1, /* Options in __data, rather than skb */
|
||||
is_strictroute:1, /* Strict source route */
|
||||
srr_is_hit:1, /* Packet destination addr was our one */
|
||||
is_changed:1, /* IP checksum more not valid */
|
||||
rr_needaddr:1, /* Need to record addr of outgoing dev */
|
||||
ts_needtime:1, /* Need to record timestamp */
|
||||
ts_needaddr:1; /* Need to record addr of outgoing dev */
|
||||
unsigned char router_alert;
|
||||
unsigned char __pad1;
|
||||
unsigned char __pad2;
|
||||
unsigned char __data[0];
|
||||
};
|
||||
|
||||
#define optlength(opt) (sizeof(struct ip_options) + opt->optlen)
|
||||
|
||||
struct inet_request_sock {
|
||||
struct request_sock req;
|
||||
u32 loc_addr;
|
||||
u32 rmt_addr;
|
||||
u16 rmt_port;
|
||||
u16 snd_wscale : 4,
|
||||
rcv_wscale : 4,
|
||||
tstamp_ok : 1,
|
||||
sack_ok : 1,
|
||||
wscale_ok : 1,
|
||||
ecn_ok : 1,
|
||||
acked : 1;
|
||||
struct ip_options *opt;
|
||||
};
|
||||
|
||||
static inline struct inet_request_sock *inet_rsk(const struct request_sock *sk)
|
||||
{
|
||||
return (struct inet_request_sock *)sk;
|
||||
}
|
||||
|
||||
struct ipv6_pinfo;
|
||||
|
||||
struct inet_sock {
|
||||
/* sk and pinet6 has to be the first two members of inet_sock */
|
||||
struct sock sk;
|
||||
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
|
||||
struct ipv6_pinfo *pinet6;
|
||||
#endif
|
||||
/* Socket demultiplex comparisons on incoming packets. */
|
||||
__u32 daddr; /* Foreign IPv4 addr */
|
||||
__u32 rcv_saddr; /* Bound local IPv4 addr */
|
||||
__u16 dport; /* Destination port */
|
||||
__u16 num; /* Local port */
|
||||
__u32 saddr; /* Sending source */
|
||||
__s16 uc_ttl; /* Unicast TTL */
|
||||
__u16 cmsg_flags;
|
||||
struct ip_options *opt;
|
||||
__u16 sport; /* Source port */
|
||||
__u16 id; /* ID counter for DF pkts */
|
||||
__u8 tos; /* TOS */
|
||||
__u8 mc_ttl; /* Multicasting TTL */
|
||||
__u8 pmtudisc;
|
||||
unsigned recverr : 1,
|
||||
freebind : 1,
|
||||
hdrincl : 1,
|
||||
mc_loop : 1;
|
||||
int mc_index; /* Multicast device index */
|
||||
__u32 mc_addr;
|
||||
struct ip_mc_socklist *mc_list; /* Group array */
|
||||
/*
|
||||
* Following members are used to retain the infomation to build
|
||||
* an ip header on each ip fragmentation while the socket is corked.
|
||||
*/
|
||||
struct {
|
||||
unsigned int flags;
|
||||
unsigned int fragsize;
|
||||
struct ip_options *opt;
|
||||
struct rtable *rt;
|
||||
int length; /* Total length of all frames */
|
||||
u32 addr;
|
||||
struct flowi fl;
|
||||
} cork;
|
||||
};
|
||||
|
||||
#define IPCORK_OPT 1 /* ip-options has been held in ipcork.opt */
|
||||
#define IPCORK_ALLFRAG 2 /* always fragment (for ipv6 for now) */
|
||||
|
||||
static inline struct inet_sock *inet_sk(const struct sock *sk)
|
||||
{
|
||||
return (struct inet_sock *)sk;
|
||||
}
|
||||
|
||||
static inline void __inet_sk_copy_descendant(struct sock *sk_to,
|
||||
const struct sock *sk_from,
|
||||
const int ancestor_size)
|
||||
{
|
||||
memcpy(inet_sk(sk_to) + 1, inet_sk(sk_from) + 1,
|
||||
sk_from->sk_prot->obj_size - ancestor_size);
|
||||
}
|
||||
#if !(defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE))
|
||||
static inline void inet_sk_copy_descendant(struct sock *sk_to,
|
||||
const struct sock *sk_from)
|
||||
{
|
||||
__inet_sk_copy_descendant(sk_to, sk_from, sizeof(struct inet_sock));
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
extern int inet_sk_rebuild_header(struct sock *sk);
|
||||
|
||||
struct iphdr {
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
__u8 ihl:4,
|
||||
@@ -209,14 +90,14 @@ struct iphdr {
|
||||
#error "Please fix <asm/byteorder.h>"
|
||||
#endif
|
||||
__u8 tos;
|
||||
__u16 tot_len;
|
||||
__u16 id;
|
||||
__u16 frag_off;
|
||||
__be16 tot_len;
|
||||
__be16 id;
|
||||
__be16 frag_off;
|
||||
__u8 ttl;
|
||||
__u8 protocol;
|
||||
__u16 check;
|
||||
__u32 saddr;
|
||||
__u32 daddr;
|
||||
__be32 saddr;
|
||||
__be32 daddr;
|
||||
/*The options start here. */
|
||||
};
|
||||
|
||||
|
||||
+61
-22
@@ -171,12 +171,13 @@ enum {
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/in6.h> /* struct sockaddr_in6 */
|
||||
#include <linux/icmpv6.h>
|
||||
#include <net/if_inet6.h> /* struct ipv6_mc_socklist */
|
||||
#include <linux/tcp.h>
|
||||
#include <linux/udp.h>
|
||||
|
||||
#include <net/if_inet6.h> /* struct ipv6_mc_socklist */
|
||||
#include <net/inet_sock.h>
|
||||
|
||||
/*
|
||||
This structure contains results of exthdrs parsing
|
||||
as offsets from skb->nh.
|
||||
@@ -199,18 +200,17 @@ static inline int inet6_iif(const struct sk_buff *skb)
|
||||
return IP6CB(skb)->iif;
|
||||
}
|
||||
|
||||
struct tcp6_request_sock {
|
||||
struct tcp_request_sock req;
|
||||
struct inet6_request_sock {
|
||||
struct in6_addr loc_addr;
|
||||
struct in6_addr rmt_addr;
|
||||
struct sk_buff *pktopts;
|
||||
int iif;
|
||||
};
|
||||
|
||||
static inline struct tcp6_request_sock *tcp6_rsk(const struct request_sock *sk)
|
||||
{
|
||||
return (struct tcp6_request_sock *)sk;
|
||||
}
|
||||
struct tcp6_request_sock {
|
||||
struct tcp_request_sock tcp6rsk_tcp;
|
||||
struct inet6_request_sock tcp6rsk_inet6;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ipv6_pinfo - ipv6 private area
|
||||
@@ -298,12 +298,36 @@ struct tcp6_sock {
|
||||
struct ipv6_pinfo inet6;
|
||||
};
|
||||
|
||||
extern int inet6_sk_rebuild_header(struct sock *sk);
|
||||
|
||||
#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
|
||||
static inline struct ipv6_pinfo * inet6_sk(const struct sock *__sk)
|
||||
{
|
||||
return inet_sk(__sk)->pinet6;
|
||||
}
|
||||
|
||||
static inline struct inet6_request_sock *
|
||||
inet6_rsk(const struct request_sock *rsk)
|
||||
{
|
||||
return (struct inet6_request_sock *)(((u8 *)rsk) +
|
||||
inet_rsk(rsk)->inet6_rsk_offset);
|
||||
}
|
||||
|
||||
static inline u32 inet6_rsk_offset(struct request_sock *rsk)
|
||||
{
|
||||
return rsk->rsk_ops->obj_size - sizeof(struct inet6_request_sock);
|
||||
}
|
||||
|
||||
static inline struct request_sock *inet6_reqsk_alloc(struct request_sock_ops *ops)
|
||||
{
|
||||
struct request_sock *req = reqsk_alloc(ops);
|
||||
|
||||
if (req != NULL)
|
||||
inet_rsk(req)->inet6_rsk_offset = inet6_rsk_offset(req);
|
||||
|
||||
return req;
|
||||
}
|
||||
|
||||
static inline struct raw6_sock *raw6_sk(const struct sock *sk)
|
||||
{
|
||||
return (struct raw6_sock *)sk;
|
||||
@@ -323,28 +347,37 @@ static inline void inet_sk_copy_descendant(struct sock *sk_to,
|
||||
#define __ipv6_only_sock(sk) (inet6_sk(sk)->ipv6only)
|
||||
#define ipv6_only_sock(sk) ((sk)->sk_family == PF_INET6 && __ipv6_only_sock(sk))
|
||||
|
||||
#include <linux/tcp.h>
|
||||
|
||||
struct tcp6_timewait_sock {
|
||||
struct tcp_timewait_sock tw_v6_sk;
|
||||
struct in6_addr tw_v6_daddr;
|
||||
struct in6_addr tw_v6_rcv_saddr;
|
||||
struct inet6_timewait_sock {
|
||||
struct in6_addr tw_v6_daddr;
|
||||
struct in6_addr tw_v6_rcv_saddr;
|
||||
};
|
||||
|
||||
static inline struct tcp6_timewait_sock *tcp6_twsk(const struct sock *sk)
|
||||
struct tcp6_timewait_sock {
|
||||
struct tcp_timewait_sock tcp6tw_tcp;
|
||||
struct inet6_timewait_sock tcp6tw_inet6;
|
||||
};
|
||||
|
||||
static inline u16 inet6_tw_offset(const struct proto *prot)
|
||||
{
|
||||
return (struct tcp6_timewait_sock *)sk;
|
||||
return prot->twsk_prot->twsk_obj_size -
|
||||
sizeof(struct inet6_timewait_sock);
|
||||
}
|
||||
|
||||
static inline struct in6_addr *__tcp_v6_rcv_saddr(const struct sock *sk)
|
||||
static inline struct inet6_timewait_sock *inet6_twsk(const struct sock *sk)
|
||||
{
|
||||
return (struct inet6_timewait_sock *)(((u8 *)sk) +
|
||||
inet_twsk(sk)->tw_ipv6_offset);
|
||||
}
|
||||
|
||||
static inline struct in6_addr *__inet6_rcv_saddr(const struct sock *sk)
|
||||
{
|
||||
return likely(sk->sk_state != TCP_TIME_WAIT) ?
|
||||
&inet6_sk(sk)->rcv_saddr : &tcp6_twsk(sk)->tw_v6_rcv_saddr;
|
||||
&inet6_sk(sk)->rcv_saddr : &inet6_twsk(sk)->tw_v6_rcv_saddr;
|
||||
}
|
||||
|
||||
static inline struct in6_addr *tcp_v6_rcv_saddr(const struct sock *sk)
|
||||
static inline struct in6_addr *inet6_rcv_saddr(const struct sock *sk)
|
||||
{
|
||||
return sk->sk_family == AF_INET6 ? __tcp_v6_rcv_saddr(sk) : NULL;
|
||||
return sk->sk_family == AF_INET6 ? __inet6_rcv_saddr(sk) : NULL;
|
||||
}
|
||||
|
||||
static inline int inet_v6_ipv6only(const struct sock *sk)
|
||||
@@ -361,13 +394,19 @@ static inline struct ipv6_pinfo * inet6_sk(const struct sock *__sk)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline struct inet6_request_sock *
|
||||
inet6_rsk(const struct request_sock *rsk)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline struct raw6_sock *raw6_sk(const struct sock *sk)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#define __tcp_v6_rcv_saddr(__sk) NULL
|
||||
#define tcp_v6_rcv_saddr(__sk) NULL
|
||||
#define __inet6_rcv_saddr(__sk) NULL
|
||||
#define inet6_rcv_saddr(__sk) NULL
|
||||
#define tcp_twsk_ipv6only(__sk) 0
|
||||
#define inet_v6_ipv6only(__sk) 0
|
||||
#endif /* defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) */
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
fallback, no routers on link */
|
||||
#define RTF_ADDRCONF 0x00040000 /* addrconf route - RA */
|
||||
#define RTF_PREFIX_RT 0x00080000 /* A prefix only route - RA */
|
||||
#define RTF_ANYCAST 0x00100000 /* Anycast */
|
||||
|
||||
#define RTF_NONEXTHOP 0x00200000 /* route with no nexthop */
|
||||
#define RTF_EXPIRES 0x00400000
|
||||
|
||||
+13
-2
@@ -10,9 +10,9 @@
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <asm/smp.h> /* cpu_online_map */
|
||||
#include <linux/smp.h>
|
||||
|
||||
#if !defined(CONFIG_ARCH_S390)
|
||||
#if !defined(CONFIG_S390)
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/cache.h>
|
||||
@@ -221,6 +221,17 @@ extern void note_interrupt(unsigned int irq, irq_desc_t *desc,
|
||||
extern int can_request_irq(unsigned int irq, unsigned long irqflags);
|
||||
|
||||
extern void init_irq_proc(void);
|
||||
|
||||
#ifdef CONFIG_AUTO_IRQ_AFFINITY
|
||||
extern int select_smp_affinity(unsigned int irq);
|
||||
#else
|
||||
static inline int
|
||||
select_smp_affinity(unsigned int irq)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
extern hw_irq_controller no_irq_type; /* needed in every arch ? */
|
||||
|
||||
+7
-1
@@ -497,6 +497,12 @@ struct transaction_s
|
||||
*/
|
||||
struct journal_head *t_checkpoint_list;
|
||||
|
||||
/*
|
||||
* Doubly-linked circular list of all buffers submitted for IO while
|
||||
* checkpointing. [j_list_lock]
|
||||
*/
|
||||
struct journal_head *t_checkpoint_io_list;
|
||||
|
||||
/*
|
||||
* Doubly-linked circular list of temporary buffers currently undergoing
|
||||
* IO in the log [j_list_lock]
|
||||
@@ -843,7 +849,7 @@ extern void journal_commit_transaction(journal_t *);
|
||||
|
||||
/* Checkpoint list management */
|
||||
int __journal_clean_checkpoint_list(journal_t *journal);
|
||||
void __journal_remove_checkpoint(struct journal_head *);
|
||||
int __journal_remove_checkpoint(struct journal_head *);
|
||||
void __journal_insert_checkpoint(struct journal_head *, transaction_t *);
|
||||
|
||||
/* Buffer IO */
|
||||
|
||||
@@ -193,14 +193,6 @@ struct key_type {
|
||||
*/
|
||||
int (*instantiate)(struct key *key, const void *data, size_t datalen);
|
||||
|
||||
/* duplicate a key of this type (optional)
|
||||
* - the source key will be locked against change
|
||||
* - the new description will be attached
|
||||
* - the quota will have been adjusted automatically from
|
||||
* source->quotalen
|
||||
*/
|
||||
int (*duplicate)(struct key *key, const struct key *source);
|
||||
|
||||
/* update a key of this type (optional)
|
||||
* - this method should call key_payload_reserve() to recalculate the
|
||||
* quota consumption
|
||||
|
||||
+34
-20
@@ -23,14 +23,27 @@
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/rwsem.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/kobject_uevent.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <asm/atomic.h>
|
||||
|
||||
#define KOBJ_NAME_LEN 20
|
||||
#define KOBJ_NAME_LEN 20
|
||||
#define UEVENT_HELPER_PATH_LEN 256
|
||||
|
||||
/* counter to tag the hotplug event, read only except for the kobject core */
|
||||
extern u64 hotplug_seqnum;
|
||||
/* path to the userspace helper executed on an event */
|
||||
extern char uevent_helper[];
|
||||
|
||||
/* counter to tag the uevent, read only except for the kobject core */
|
||||
extern u64 uevent_seqnum;
|
||||
|
||||
/* the actions here must match the proper string in lib/kobject_uevent.c */
|
||||
typedef int __bitwise kobject_action_t;
|
||||
enum kobject_action {
|
||||
KOBJ_ADD = (__force kobject_action_t) 0x01, /* exclusive to core */
|
||||
KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* exclusive to core */
|
||||
KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* device state change */
|
||||
KOBJ_OFFLINE = (__force kobject_action_t) 0x04, /* device offline */
|
||||
KOBJ_ONLINE = (__force kobject_action_t) 0x05, /* device online */
|
||||
};
|
||||
|
||||
struct kobject {
|
||||
const char * k_name;
|
||||
@@ -87,15 +100,14 @@ struct kobj_type {
|
||||
* of object; multiple ksets can belong to one subsystem. All
|
||||
* ksets of a subsystem share the subsystem's lock.
|
||||
*
|
||||
* Each kset can support hotplugging; if it does, it will be given
|
||||
* the opportunity to filter out specific kobjects from being
|
||||
* reported, as well as to add its own "data" elements to the
|
||||
* environment being passed to the hotplug helper.
|
||||
* Each kset can support specific event variables; it can
|
||||
* supress the event generation or add subsystem specific
|
||||
* variables carried with the event.
|
||||
*/
|
||||
struct kset_hotplug_ops {
|
||||
struct kset_uevent_ops {
|
||||
int (*filter)(struct kset *kset, struct kobject *kobj);
|
||||
const char *(*name)(struct kset *kset, struct kobject *kobj);
|
||||
int (*hotplug)(struct kset *kset, struct kobject *kobj, char **envp,
|
||||
int (*uevent)(struct kset *kset, struct kobject *kobj, char **envp,
|
||||
int num_envp, char *buffer, int buffer_size);
|
||||
};
|
||||
|
||||
@@ -105,7 +117,7 @@ struct kset {
|
||||
struct list_head list;
|
||||
spinlock_t list_lock;
|
||||
struct kobject kobj;
|
||||
struct kset_hotplug_ops * hotplug_ops;
|
||||
struct kset_uevent_ops * uevent_ops;
|
||||
};
|
||||
|
||||
|
||||
@@ -153,20 +165,20 @@ struct subsystem {
|
||||
struct rw_semaphore rwsem;
|
||||
};
|
||||
|
||||
#define decl_subsys(_name,_type,_hotplug_ops) \
|
||||
#define decl_subsys(_name,_type,_uevent_ops) \
|
||||
struct subsystem _name##_subsys = { \
|
||||
.kset = { \
|
||||
.kobj = { .name = __stringify(_name) }, \
|
||||
.ktype = _type, \
|
||||
.hotplug_ops =_hotplug_ops, \
|
||||
.uevent_ops =_uevent_ops, \
|
||||
} \
|
||||
}
|
||||
#define decl_subsys_name(_varname,_name,_type,_hotplug_ops) \
|
||||
#define decl_subsys_name(_varname,_name,_type,_uevent_ops) \
|
||||
struct subsystem _varname##_subsys = { \
|
||||
.kset = { \
|
||||
.kobj = { .name = __stringify(_name) }, \
|
||||
.ktype = _type, \
|
||||
.hotplug_ops =_hotplug_ops, \
|
||||
.uevent_ops =_uevent_ops, \
|
||||
} \
|
||||
}
|
||||
|
||||
@@ -241,15 +253,17 @@ struct subsys_attribute {
|
||||
extern int subsys_create_file(struct subsystem * , struct subsys_attribute *);
|
||||
extern void subsys_remove_file(struct subsystem * , struct subsys_attribute *);
|
||||
|
||||
#ifdef CONFIG_HOTPLUG
|
||||
void kobject_hotplug(struct kobject *kobj, enum kobject_action action);
|
||||
int add_hotplug_env_var(char **envp, int num_envp, int *cur_index,
|
||||
#if defined(CONFIG_HOTPLUG) & defined(CONFIG_NET)
|
||||
void kobject_uevent(struct kobject *kobj, enum kobject_action action);
|
||||
|
||||
int add_uevent_var(char **envp, int num_envp, int *cur_index,
|
||||
char *buffer, int buffer_size, int *cur_len,
|
||||
const char *format, ...)
|
||||
__attribute__((format (printf, 7, 8)));
|
||||
#else
|
||||
static inline void kobject_hotplug(struct kobject *kobj, enum kobject_action action) { }
|
||||
static inline int add_hotplug_env_var(char **envp, int num_envp, int *cur_index,
|
||||
static inline void kobject_uevent(struct kobject *kobj, enum kobject_action action) { }
|
||||
|
||||
static inline int add_uevent_var(char **envp, int num_envp, int *cur_index,
|
||||
char *buffer, int buffer_size, int *cur_len,
|
||||
const char *format, ...)
|
||||
{ return 0; }
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
/*
|
||||
* kobject_uevent.h - list of kobject user events that can be generated
|
||||
*
|
||||
* Copyright (C) 2004 IBM Corp.
|
||||
* Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com>
|
||||
*
|
||||
* This file is released under the GPLv2.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _KOBJECT_EVENT_H_
|
||||
#define _KOBJECT_EVENT_H_
|
||||
|
||||
#define HOTPLUG_PATH_LEN 256
|
||||
|
||||
/* path to the hotplug userspace helper executed on an event */
|
||||
extern char hotplug_path[];
|
||||
|
||||
/*
|
||||
* If you add an action here, you must also add the proper string to the
|
||||
* lib/kobject_uevent.c file.
|
||||
*/
|
||||
typedef int __bitwise kobject_action_t;
|
||||
enum kobject_action {
|
||||
KOBJ_ADD = (__force kobject_action_t) 0x01, /* add event, for hotplug */
|
||||
KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* remove event, for hotplug */
|
||||
KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* a sysfs attribute file has changed */
|
||||
KOBJ_MOUNT = (__force kobject_action_t) 0x04, /* mount event for block devices */
|
||||
KOBJ_UMOUNT = (__force kobject_action_t) 0x05, /* umount event for block devices */
|
||||
KOBJ_OFFLINE = (__force kobject_action_t) 0x06, /* offline event for hotplug devices */
|
||||
KOBJ_ONLINE = (__force kobject_action_t) 0x07, /* online event for hotplug devices */
|
||||
};
|
||||
|
||||
|
||||
#ifdef CONFIG_KOBJECT_UEVENT
|
||||
int kobject_uevent(struct kobject *kobj,
|
||||
enum kobject_action action,
|
||||
struct attribute *attr);
|
||||
int kobject_uevent_atomic(struct kobject *kobj,
|
||||
enum kobject_action action,
|
||||
struct attribute *attr);
|
||||
#else
|
||||
static inline int kobject_uevent(struct kobject *kobj,
|
||||
enum kobject_action action,
|
||||
struct attribute *attr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline int kobject_uevent_atomic(struct kobject *kobj,
|
||||
enum kobject_action action,
|
||||
struct attribute *attr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/rcupdate.h>
|
||||
|
||||
#ifdef CONFIG_KPROBES
|
||||
#include <asm/kprobes.h>
|
||||
|
||||
/* kprobe_status settings */
|
||||
@@ -147,7 +148,6 @@ struct kretprobe_instance {
|
||||
struct task_struct *task;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_KPROBES
|
||||
extern spinlock_t kretprobe_lock;
|
||||
extern int arch_prepare_kprobe(struct kprobe *p);
|
||||
extern void arch_copy_kprobe(struct kprobe *p);
|
||||
@@ -158,6 +158,7 @@ extern int arch_init_kprobes(void);
|
||||
extern void show_registers(struct pt_regs *regs);
|
||||
extern kprobe_opcode_t *get_insn_slot(void);
|
||||
extern void free_insn_slot(kprobe_opcode_t *slot);
|
||||
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);
|
||||
@@ -195,6 +196,11 @@ void add_rp_inst(struct kretprobe_instance *ri);
|
||||
void kprobe_flush_task(struct task_struct *tk);
|
||||
void recycle_rp_inst(struct kretprobe_instance *ri);
|
||||
#else /* CONFIG_KPROBES */
|
||||
|
||||
#define __kprobes /**/
|
||||
struct jprobe;
|
||||
struct kretprobe;
|
||||
|
||||
static inline struct kprobe *kprobe_running(void)
|
||||
{
|
||||
return NULL;
|
||||
|
||||
+18
-7
@@ -122,6 +122,9 @@ enum {
|
||||
ATA_FLAG_NOINTR = (1 << 9), /* FIXME: Remove this once
|
||||
* proper HSM is in place. */
|
||||
ATA_FLAG_DEBUGMSG = (1 << 10),
|
||||
ATA_FLAG_NO_ATAPI = (1 << 11), /* No ATAPI support */
|
||||
|
||||
ATA_FLAG_SUSPENDED = (1 << 12), /* port is suspended */
|
||||
|
||||
ATA_QCFLAG_ACTIVE = (1 << 1), /* cmd not yet ack'd to scsi lyer */
|
||||
ATA_QCFLAG_SG = (1 << 3), /* have s/g table? */
|
||||
@@ -135,6 +138,8 @@ enum {
|
||||
ATA_TMOUT_BOOT_QUICK = 7 * HZ, /* hueristic */
|
||||
ATA_TMOUT_CDB = 30 * HZ,
|
||||
ATA_TMOUT_CDB_QUICK = 5 * HZ,
|
||||
ATA_TMOUT_INTERNAL = 30 * HZ,
|
||||
ATA_TMOUT_INTERNAL_QUICK = 5 * HZ,
|
||||
|
||||
/* ATA bus states */
|
||||
BUS_UNKNOWN = 0,
|
||||
@@ -194,7 +199,7 @@ struct ata_port;
|
||||
struct ata_queued_cmd;
|
||||
|
||||
/* typedefs */
|
||||
typedef int (*ata_qc_cb_t) (struct ata_queued_cmd *qc, unsigned int err_mask);
|
||||
typedef int (*ata_qc_cb_t) (struct ata_queued_cmd *qc);
|
||||
|
||||
struct ata_ioports {
|
||||
unsigned long cmd_addr;
|
||||
@@ -279,9 +284,9 @@ struct ata_queued_cmd {
|
||||
/* DO NOT iterate over __sg manually, use ata_for_each_sg() */
|
||||
struct scatterlist *__sg;
|
||||
|
||||
ata_qc_cb_t complete_fn;
|
||||
unsigned int err_mask;
|
||||
|
||||
struct completion *waiting;
|
||||
ata_qc_cb_t complete_fn;
|
||||
|
||||
void *private_data;
|
||||
};
|
||||
@@ -330,8 +335,6 @@ struct ata_port {
|
||||
|
||||
u8 ctl; /* cache of ATA control register */
|
||||
u8 last_ctl; /* Cache last written value */
|
||||
unsigned int bus_state;
|
||||
unsigned int port_state;
|
||||
unsigned int pio_mask;
|
||||
unsigned int mwdma_mask;
|
||||
unsigned int udma_mask;
|
||||
@@ -435,6 +438,8 @@ extern void ata_std_ports(struct ata_ioports *ioaddr);
|
||||
extern int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_info,
|
||||
unsigned int n_ports);
|
||||
extern void ata_pci_remove_one (struct pci_dev *pdev);
|
||||
extern int ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t state);
|
||||
extern int ata_pci_device_resume(struct pci_dev *pdev);
|
||||
#endif /* CONFIG_PCI */
|
||||
extern int ata_device_add(const struct ata_probe_ent *ent);
|
||||
extern void ata_host_set_remove(struct ata_host_set *host_set);
|
||||
@@ -444,6 +449,10 @@ extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmn
|
||||
extern int ata_scsi_error(struct Scsi_Host *host);
|
||||
extern int ata_scsi_release(struct Scsi_Host *host);
|
||||
extern unsigned int ata_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc);
|
||||
extern int ata_scsi_device_resume(struct scsi_device *);
|
||||
extern int ata_scsi_device_suspend(struct scsi_device *);
|
||||
extern int ata_device_resume(struct ata_port *, struct ata_device *);
|
||||
extern int ata_device_suspend(struct ata_port *, struct ata_device *);
|
||||
extern int ata_ratelimit(void);
|
||||
|
||||
/*
|
||||
@@ -477,9 +486,10 @@ extern void ata_bmdma_start (struct ata_queued_cmd *qc);
|
||||
extern void ata_bmdma_stop(struct ata_queued_cmd *qc);
|
||||
extern u8 ata_bmdma_status(struct ata_port *ap);
|
||||
extern void ata_bmdma_irq_clear(struct ata_port *ap);
|
||||
extern void ata_qc_complete(struct ata_queued_cmd *qc, unsigned int err_mask);
|
||||
extern void ata_qc_complete(struct ata_queued_cmd *qc);
|
||||
extern void ata_eng_timeout(struct ata_port *ap);
|
||||
extern void ata_scsi_simulate(u16 *id, struct scsi_cmnd *cmd,
|
||||
extern void ata_scsi_simulate(struct ata_port *ap, struct ata_device *dev,
|
||||
struct scsi_cmnd *cmd,
|
||||
void (*done)(struct scsi_cmnd *));
|
||||
extern int ata_std_bios_param(struct scsi_device *sdev,
|
||||
struct block_device *bdev,
|
||||
@@ -669,6 +679,7 @@ static inline void ata_qc_reinit(struct ata_queued_cmd *qc)
|
||||
qc->cursect = qc->cursg = qc->cursg_ofs = 0;
|
||||
qc->nsect = 0;
|
||||
qc->nbytes = qc->curbytes = 0;
|
||||
qc->err_mask = 0;
|
||||
|
||||
ata_tf_init(qc->ap, &qc->tf, qc->dev->devno);
|
||||
}
|
||||
|
||||
+25
-1
@@ -202,12 +202,15 @@ static inline void list_del_rcu(struct list_head *entry)
|
||||
*
|
||||
* The old entry will be replaced with the new entry atomically.
|
||||
*/
|
||||
static inline void list_replace_rcu(struct list_head *old, struct list_head *new){
|
||||
static inline void list_replace_rcu(struct list_head *old,
|
||||
struct list_head *new)
|
||||
{
|
||||
new->next = old->next;
|
||||
new->prev = old->prev;
|
||||
smp_wmb();
|
||||
new->next->prev = new;
|
||||
new->prev->next = new;
|
||||
old->prev = LIST_POISON2;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -578,6 +581,27 @@ static inline void hlist_del_init(struct hlist_node *n)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* hlist_replace_rcu - replace old entry by new one
|
||||
* @old : the element to be replaced
|
||||
* @new : the new element to insert
|
||||
*
|
||||
* The old entry will be replaced with the new entry atomically.
|
||||
*/
|
||||
static inline void hlist_replace_rcu(struct hlist_node *old,
|
||||
struct hlist_node *new)
|
||||
{
|
||||
struct hlist_node *next = old->next;
|
||||
|
||||
new->next = next;
|
||||
new->pprev = old->pprev;
|
||||
smp_wmb();
|
||||
if (next)
|
||||
new->next->pprev = &new->next;
|
||||
*new->pprev = new;
|
||||
old->pprev = LIST_POISON2;
|
||||
}
|
||||
|
||||
static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h)
|
||||
{
|
||||
struct hlist_node *first = h->first;
|
||||
|
||||
@@ -172,7 +172,7 @@ extern struct nlm_host *nlm_find_client(void);
|
||||
/*
|
||||
* Server-side lock handling
|
||||
*/
|
||||
int nlmsvc_async_call(struct nlm_rqst *, u32, rpc_action);
|
||||
int nlmsvc_async_call(struct nlm_rqst *, u32, const struct rpc_call_ops *);
|
||||
u32 nlmsvc_lock(struct svc_rqst *, struct nlm_file *,
|
||||
struct nlm_lock *, int, struct nlm_cookie *);
|
||||
u32 nlmsvc_unlock(struct nlm_file *, struct nlm_lock *);
|
||||
|
||||
+19
-19
@@ -109,14 +109,6 @@ static inline int mpol_equal(struct mempolicy *a, struct mempolicy *b)
|
||||
|
||||
#define mpol_set_vma_default(vma) ((vma)->vm_policy = NULL)
|
||||
|
||||
/*
|
||||
* Hugetlb policy. i386 hugetlb so far works with node numbers
|
||||
* instead of zone lists, so give it special interfaces for now.
|
||||
*/
|
||||
extern int mpol_first_node(struct vm_area_struct *vma, unsigned long addr);
|
||||
extern int mpol_node_valid(int nid, struct vm_area_struct *vma,
|
||||
unsigned long addr);
|
||||
|
||||
/*
|
||||
* Tree of shared policies for a shared memory region.
|
||||
* Maintain the policies in a pseudo mm that contains vmas. The vmas
|
||||
@@ -156,6 +148,16 @@ extern void numa_default_policy(void);
|
||||
extern void numa_policy_init(void);
|
||||
extern void numa_policy_rebind(const nodemask_t *old, const nodemask_t *new);
|
||||
extern struct mempolicy default_policy;
|
||||
extern struct zonelist *huge_zonelist(struct vm_area_struct *vma,
|
||||
unsigned long addr);
|
||||
|
||||
extern int policy_zone;
|
||||
|
||||
static inline void check_highest_zone(int k)
|
||||
{
|
||||
if (k > policy_zone)
|
||||
policy_zone = k;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
@@ -182,17 +184,6 @@ static inline struct mempolicy *mpol_copy(struct mempolicy *old)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline int mpol_first_node(struct vm_area_struct *vma, unsigned long a)
|
||||
{
|
||||
return numa_node_id();
|
||||
}
|
||||
|
||||
static inline int
|
||||
mpol_node_valid(int nid, struct vm_area_struct *vma, unsigned long a)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
struct shared_policy {};
|
||||
|
||||
static inline int mpol_set_shared_policy(struct shared_policy *info,
|
||||
@@ -232,6 +223,15 @@ static inline void numa_policy_rebind(const nodemask_t *old,
|
||||
{
|
||||
}
|
||||
|
||||
static inline struct zonelist *huge_zonelist(struct vm_area_struct *vma,
|
||||
unsigned long addr)
|
||||
{
|
||||
return NODE_DATA(0)->node_zonelists + gfp_zone(GFP_HIGHUSER);
|
||||
}
|
||||
|
||||
static inline void check_highest_zone(int k)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_NUMA */
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
||||
+50
-7
@@ -163,7 +163,7 @@ extern unsigned int kobjsize(const void *objp);
|
||||
#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) */
|
||||
#define VM_INCOMPLETE 0x02000000 /* Strange partial PFN mapping marker */
|
||||
#define VM_INSERTPAGE 0x02000000 /* The vma has had "vm_insert_page()" done on it */
|
||||
|
||||
#ifndef VM_STACK_DEFAULT_FLAGS /* arch can override this */
|
||||
#define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS
|
||||
@@ -634,14 +634,38 @@ struct mempolicy *shmem_get_policy(struct vm_area_struct *vma,
|
||||
int shmem_lock(struct file *file, int lock, struct user_struct *user);
|
||||
#else
|
||||
#define shmem_nopage filemap_nopage
|
||||
#define shmem_lock(a, b, c) ({0;}) /* always in memory, no need to lock */
|
||||
#define shmem_set_policy(a, b) (0)
|
||||
#define shmem_get_policy(a, b) (NULL)
|
||||
|
||||
static inline int shmem_lock(struct file *file, int lock,
|
||||
struct user_struct *user)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int shmem_set_policy(struct vm_area_struct *vma,
|
||||
struct mempolicy *new)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline struct mempolicy *shmem_get_policy(struct vm_area_struct *vma,
|
||||
unsigned long addr)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags);
|
||||
extern int shmem_mmap(struct file *file, struct vm_area_struct *vma);
|
||||
|
||||
int shmem_zero_setup(struct vm_area_struct *);
|
||||
|
||||
#ifndef CONFIG_MMU
|
||||
extern unsigned long shmem_get_unmapped_area(struct file *file,
|
||||
unsigned long addr,
|
||||
unsigned long len,
|
||||
unsigned long pgoff,
|
||||
unsigned long flags);
|
||||
#endif
|
||||
|
||||
static inline int can_do_mlock(void)
|
||||
{
|
||||
if (capable(CAP_IPC_LOCK))
|
||||
@@ -690,14 +714,31 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
|
||||
}
|
||||
|
||||
extern int vmtruncate(struct inode * inode, loff_t offset);
|
||||
extern int vmtruncate_range(struct inode * inode, loff_t offset, loff_t end);
|
||||
extern int install_page(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, struct page *page, pgprot_t prot);
|
||||
extern int install_file_pte(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, unsigned long pgoff, pgprot_t prot);
|
||||
extern int __handle_mm_fault(struct mm_struct *mm,struct vm_area_struct *vma, unsigned long address, int write_access);
|
||||
|
||||
static inline int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long address, int write_access)
|
||||
#ifdef CONFIG_MMU
|
||||
extern int __handle_mm_fault(struct mm_struct *mm,struct vm_area_struct *vma,
|
||||
unsigned long address, int write_access);
|
||||
|
||||
static inline int handle_mm_fault(struct mm_struct *mm,
|
||||
struct vm_area_struct *vma, unsigned long address,
|
||||
int write_access)
|
||||
{
|
||||
return __handle_mm_fault(mm, vma, address, write_access) & (~VM_FAULT_WRITE);
|
||||
return __handle_mm_fault(mm, vma, address, write_access) &
|
||||
(~VM_FAULT_WRITE);
|
||||
}
|
||||
#else
|
||||
static inline int handle_mm_fault(struct mm_struct *mm,
|
||||
struct vm_area_struct *vma, unsigned long address,
|
||||
int write_access)
|
||||
{
|
||||
/* should never happen if there's no MMU */
|
||||
BUG();
|
||||
return VM_FAULT_SIGBUS;
|
||||
}
|
||||
#endif
|
||||
|
||||
extern int make_pages_present(unsigned long addr, unsigned long end);
|
||||
extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write);
|
||||
@@ -896,6 +937,8 @@ extern unsigned long do_brk(unsigned long, unsigned long);
|
||||
/* filemap.c */
|
||||
extern unsigned long page_unuse(struct page *);
|
||||
extern void truncate_inode_pages(struct address_space *, loff_t);
|
||||
extern void truncate_inode_pages_range(struct address_space *,
|
||||
loff_t lstart, loff_t lend);
|
||||
|
||||
/* generic vm_area_ops exported for stackable file systems */
|
||||
extern struct page *filemap_nopage(struct vm_area_struct *, unsigned long, int *);
|
||||
|
||||
+26
-18
@@ -46,7 +46,6 @@ struct zone_padding {
|
||||
|
||||
struct per_cpu_pages {
|
||||
int count; /* number of pages in the list */
|
||||
int low; /* low watermark, refill needed */
|
||||
int high; /* high watermark, emptying needed */
|
||||
int batch; /* chunk size for buddy add/remove */
|
||||
struct list_head list; /* the list of pages */
|
||||
@@ -389,6 +388,11 @@ static inline struct zone *next_zone(struct zone *zone)
|
||||
#define for_each_zone(zone) \
|
||||
for (zone = pgdat_list->node_zones; zone; zone = next_zone(zone))
|
||||
|
||||
static inline int populated_zone(struct zone *zone)
|
||||
{
|
||||
return (!!zone->present_pages);
|
||||
}
|
||||
|
||||
static inline int is_highmem_idx(int idx)
|
||||
{
|
||||
return (idx == ZONE_HIGHMEM);
|
||||
@@ -398,6 +402,7 @@ static inline int is_normal_idx(int idx)
|
||||
{
|
||||
return (idx == ZONE_NORMAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* is_highmem - helper function to quickly check if a struct zone is a
|
||||
* highmem zone or not. This is an attempt to keep references
|
||||
@@ -414,6 +419,16 @@ static inline int is_normal(struct zone *zone)
|
||||
return zone == zone->zone_pgdat->node_zones + ZONE_NORMAL;
|
||||
}
|
||||
|
||||
static inline int is_dma32(struct zone *zone)
|
||||
{
|
||||
return zone == zone->zone_pgdat->node_zones + ZONE_DMA32;
|
||||
}
|
||||
|
||||
static inline int is_dma(struct zone *zone)
|
||||
{
|
||||
return zone == zone->zone_pgdat->node_zones + ZONE_DMA;
|
||||
}
|
||||
|
||||
/* These two functions are used to setup the per zone pages min values */
|
||||
struct ctl_table;
|
||||
struct file;
|
||||
@@ -435,7 +450,6 @@ extern struct pglist_data contig_page_data;
|
||||
#define NODE_DATA(nid) (&contig_page_data)
|
||||
#define NODE_MEM_MAP(nid) mem_map
|
||||
#define MAX_NODES_SHIFT 1
|
||||
#define pfn_to_nid(pfn) (0)
|
||||
|
||||
#else /* CONFIG_NEED_MULTIPLE_NODES */
|
||||
|
||||
@@ -470,6 +484,10 @@ extern struct pglist_data contig_page_data;
|
||||
#define early_pfn_to_nid(nid) (0UL)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_FLATMEM
|
||||
#define pfn_to_nid(pfn) (0)
|
||||
#endif
|
||||
|
||||
#define pfn_to_section_nr(pfn) ((pfn) >> PFN_SECTION_SHIFT)
|
||||
#define section_nr_to_pfn(sec) ((sec) << PFN_SECTION_SHIFT)
|
||||
|
||||
@@ -564,11 +582,6 @@ static inline int valid_section_nr(unsigned long nr)
|
||||
return valid_section(__nr_to_section(nr));
|
||||
}
|
||||
|
||||
/*
|
||||
* Given a kernel address, find the home node of the underlying memory.
|
||||
*/
|
||||
#define kvaddr_to_nid(kaddr) pfn_to_nid(__pa(kaddr) >> PAGE_SHIFT)
|
||||
|
||||
static inline struct mem_section *__pfn_to_section(unsigned long pfn)
|
||||
{
|
||||
return __nr_to_section(pfn_to_section_nr(pfn));
|
||||
@@ -598,13 +611,14 @@ static inline int pfn_valid(unsigned long pfn)
|
||||
* this restriction.
|
||||
*/
|
||||
#ifdef CONFIG_NUMA
|
||||
#define pfn_to_nid early_pfn_to_nid
|
||||
#endif
|
||||
|
||||
#define pfn_to_pgdat(pfn) \
|
||||
#define pfn_to_nid(pfn) \
|
||||
({ \
|
||||
NODE_DATA(pfn_to_nid(pfn)); \
|
||||
unsigned long __pfn_to_nid_pfn = (pfn); \
|
||||
page_to_nid(pfn_to_page(__pfn_to_nid_pfn)); \
|
||||
})
|
||||
#else
|
||||
#define pfn_to_nid(pfn) (0)
|
||||
#endif
|
||||
|
||||
#define early_pfn_valid(pfn) pfn_valid(pfn)
|
||||
void sparse_init(void);
|
||||
@@ -613,12 +627,6 @@ void sparse_init(void);
|
||||
#define sparse_index_init(_sec, _nid) do {} while (0)
|
||||
#endif /* CONFIG_SPARSEMEM */
|
||||
|
||||
#ifdef CONFIG_NODES_SPAN_OTHER_NODES
|
||||
#define early_pfn_in_nid(pfn, nid) (early_pfn_to_nid(pfn) == (nid))
|
||||
#else
|
||||
#define early_pfn_in_nid(pfn, nid) (1)
|
||||
#endif
|
||||
|
||||
#ifndef early_pfn_valid
|
||||
#define early_pfn_valid(pfn) (1)
|
||||
#endif
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#ifdef MODULE
|
||||
#define MODULE_PARAM_PREFIX /* empty */
|
||||
#else
|
||||
#define MODULE_PARAM_PREFIX __stringify(KBUILD_MODNAME) "."
|
||||
#define MODULE_PARAM_PREFIX KBUILD_MODNAME "."
|
||||
#endif
|
||||
|
||||
#ifdef MODULE
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
#include <linux/mtd/bbm.h>
|
||||
|
||||
#define MAX_BUFFERRAM 2
|
||||
#define MAX_ONENAND_PAGESIZE (2048 + 64)
|
||||
|
||||
/* Scan and identify a OneNAND device */
|
||||
extern int onenand_scan(struct mtd_info *mtd, int max_chips);
|
||||
@@ -110,6 +109,7 @@ struct onenand_chip {
|
||||
spinlock_t chip_lock;
|
||||
wait_queue_head_t wq;
|
||||
onenand_state_t state;
|
||||
unsigned char *page_buf;
|
||||
|
||||
struct nand_oobinfo *autooob;
|
||||
|
||||
@@ -134,13 +134,12 @@ struct onenand_chip {
|
||||
* Options bits
|
||||
*/
|
||||
#define ONENAND_CONT_LOCK (0x0001)
|
||||
|
||||
#define ONENAND_PAGEBUF_ALLOC (0x1000)
|
||||
|
||||
/*
|
||||
* OneNAND Flash Manufacturer ID Codes
|
||||
*/
|
||||
#define ONENAND_MFR_SAMSUNG 0xec
|
||||
#define ONENAND_MFR_UNKNOWN 0x00
|
||||
|
||||
/**
|
||||
* struct nand_manufacturers - NAND Flash Manufacturer ID Structure
|
||||
|
||||
+13
-7
@@ -13,6 +13,10 @@
|
||||
* L. Haag
|
||||
*
|
||||
* $Log: r3964.h,v $
|
||||
* Revision 1.4 2005/12/21 19:54:24 Kurt Huwig <kurt huwig de>
|
||||
* Fixed HZ usage on 2.6 kernels
|
||||
* Removed unnecessary include
|
||||
*
|
||||
* Revision 1.3 2001/03/18 13:02:24 dwmw2
|
||||
* Fix timer usage, use spinlocks properly.
|
||||
*
|
||||
@@ -45,9 +49,11 @@
|
||||
#define __LINUX_N_R3964_H__
|
||||
|
||||
/* line disciplines for r3964 protocol */
|
||||
#include <asm/termios.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/param.h>
|
||||
|
||||
/*
|
||||
* Common ascii handshake characters:
|
||||
*/
|
||||
@@ -58,14 +64,14 @@
|
||||
#define NAK 0x15
|
||||
|
||||
/*
|
||||
* Timeouts (msecs/10 msecs per timer interrupt):
|
||||
* Timeouts (from milliseconds to jiffies)
|
||||
*/
|
||||
|
||||
#define R3964_TO_QVZ 550/10
|
||||
#define R3964_TO_ZVZ 220/10
|
||||
#define R3964_TO_NO_BUF 400/10
|
||||
#define R3964_NO_TX_ROOM 100/10
|
||||
#define R3964_TO_RX_PANIC 4000/10
|
||||
#define R3964_TO_QVZ ((550)*HZ/1000)
|
||||
#define R3964_TO_ZVZ ((220)*HZ/1000)
|
||||
#define R3964_TO_NO_BUF ((400)*HZ/1000)
|
||||
#define R3964_NO_TX_ROOM ((100)*HZ/1000)
|
||||
#define R3964_TO_RX_PANIC ((4000)*HZ/1000)
|
||||
#define R3964_MAX_RETRIES 5
|
||||
|
||||
#endif
|
||||
|
||||
@@ -37,18 +37,26 @@ enum {
|
||||
/* userspace doesn't need the nbd_device structure */
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/wait.h>
|
||||
|
||||
/* values for flags field */
|
||||
#define NBD_READ_ONLY 0x0001
|
||||
#define NBD_WRITE_NOCHK 0x0002
|
||||
|
||||
struct request;
|
||||
|
||||
struct nbd_device {
|
||||
int flags;
|
||||
int harderror; /* Code of hard error */
|
||||
struct socket * sock;
|
||||
struct file * file; /* If == NULL, device is not ready, yet */
|
||||
int magic;
|
||||
|
||||
spinlock_t queue_lock;
|
||||
struct list_head queue_head;/* Requests are added here... */
|
||||
struct request *active_req;
|
||||
wait_queue_head_t active_wq;
|
||||
|
||||
struct semaphore tx_lock;
|
||||
struct gendisk *disk;
|
||||
int blksize;
|
||||
|
||||
+2
-2
@@ -107,7 +107,7 @@ enum sock_type {
|
||||
struct socket {
|
||||
socket_state state;
|
||||
unsigned long flags;
|
||||
struct proto_ops *ops;
|
||||
const struct proto_ops *ops;
|
||||
struct fasync_struct *fasync_list;
|
||||
struct file *file;
|
||||
struct sock *sk;
|
||||
@@ -260,7 +260,7 @@ SOCKCALL_WRAP(name, recvmsg, (struct kiocb *iocb, struct socket *sock, struct ms
|
||||
SOCKCALL_WRAP(name, mmap, (struct file *file, struct socket *sock, struct vm_area_struct *vma), \
|
||||
(file, sock, vma)) \
|
||||
\
|
||||
static struct proto_ops name##_ops = { \
|
||||
static const struct proto_ops name##_ops = { \
|
||||
.family = fam, \
|
||||
.owner = THIS_MODULE, \
|
||||
.release = __lock_##name##_release, \
|
||||
|
||||
@@ -684,6 +684,7 @@ extern int netif_rx(struct sk_buff *skb);
|
||||
extern int netif_rx_ni(struct sk_buff *skb);
|
||||
#define HAVE_NETIF_RECEIVE_SKB 1
|
||||
extern int netif_receive_skb(struct sk_buff *skb);
|
||||
extern int dev_valid_name(const char *name);
|
||||
extern int dev_ioctl(unsigned int cmd, void __user *);
|
||||
extern int dev_ethtool(struct ifreq *);
|
||||
extern unsigned dev_get_flags(const struct net_device *);
|
||||
@@ -801,12 +802,16 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits)
|
||||
return (1 << debug_value) - 1;
|
||||
}
|
||||
|
||||
/* Schedule rx intr now? */
|
||||
/* Test if receive needs to be scheduled */
|
||||
static inline int __netif_rx_schedule_prep(struct net_device *dev)
|
||||
{
|
||||
return !test_and_set_bit(__LINK_STATE_RX_SCHED, &dev->state);
|
||||
}
|
||||
|
||||
/* Test if receive needs to be scheduled but only if up */
|
||||
static inline int netif_rx_schedule_prep(struct net_device *dev)
|
||||
{
|
||||
return netif_running(dev) &&
|
||||
!test_and_set_bit(__LINK_STATE_RX_SCHED, &dev->state);
|
||||
return netif_running(dev) && __netif_rx_schedule_prep(dev);
|
||||
}
|
||||
|
||||
/* Add interface to tail of rx poll list. This assumes that _prep has
|
||||
|
||||
@@ -64,6 +64,9 @@ enum ctattr_l4proto {
|
||||
CTA_PROTO_ICMP_ID,
|
||||
CTA_PROTO_ICMP_TYPE,
|
||||
CTA_PROTO_ICMP_CODE,
|
||||
CTA_PROTO_ICMPV6_ID,
|
||||
CTA_PROTO_ICMPV6_TYPE,
|
||||
CTA_PROTO_ICMPV6_CODE,
|
||||
__CTA_PROTO_MAX
|
||||
};
|
||||
#define CTA_PROTO_MAX (__CTA_PROTO_MAX - 1)
|
||||
@@ -128,6 +131,4 @@ enum ctattr_help {
|
||||
};
|
||||
#define CTA_HELP_MAX (__CTA_HELP_MAX - 1)
|
||||
|
||||
#define CTA_HELP_MAXNAMESIZE 32
|
||||
|
||||
#endif /* _IPCONNTRACK_NETLINK_H */
|
||||
|
||||
@@ -474,7 +474,11 @@ extern unsigned int ip6t_do_table(struct sk_buff **pskb,
|
||||
extern int ip6t_ext_hdr(u8 nexthdr);
|
||||
/* find specified header and get offset to it */
|
||||
extern int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset,
|
||||
u8 target);
|
||||
int target, unsigned short *fragoff);
|
||||
|
||||
extern int ip6_masked_addrcmp(const struct in6_addr *addr1,
|
||||
const struct in6_addr *mask,
|
||||
const struct in6_addr *addr2);
|
||||
|
||||
#define IP6T_ALIGN(s) (((s) + (__alignof__(struct ip6t_entry)-1)) & ~(__alignof__(struct ip6t_entry)-1))
|
||||
|
||||
|
||||
+55
-11
@@ -38,9 +38,6 @@
|
||||
# define NFS_DEBUG
|
||||
#endif
|
||||
|
||||
#define NFS_MAX_FILE_IO_BUFFER_SIZE 32768
|
||||
#define NFS_DEF_FILE_IO_BUFFER_SIZE 4096
|
||||
|
||||
/* Default timeout values */
|
||||
#define NFS_MAX_UDP_TIMEOUT (60*HZ)
|
||||
#define NFS_MAX_TCP_TIMEOUT (600*HZ)
|
||||
@@ -65,6 +62,7 @@
|
||||
#define FLUSH_STABLE 4 /* commit to stable storage */
|
||||
#define FLUSH_LOWPRI 8 /* low priority background flush */
|
||||
#define FLUSH_HIGHPRI 16 /* high priority memory reclaim flush */
|
||||
#define FLUSH_NOCOMMIT 32 /* Don't send the NFSv3/v4 COMMIT */
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
@@ -291,6 +289,7 @@ static inline int nfs_verify_change_attribute(struct inode *inode, unsigned long
|
||||
/*
|
||||
* linux/fs/nfs/inode.c
|
||||
*/
|
||||
extern int nfs_sync_mapping(struct address_space *mapping);
|
||||
extern void nfs_zap_caches(struct inode *);
|
||||
extern struct inode *nfs_fhget(struct super_block *, struct nfs_fh *,
|
||||
struct nfs_fattr *);
|
||||
@@ -392,6 +391,17 @@ extern int nfs_instantiate(struct dentry *dentry, struct nfs_fh *fh, struct nfs_
|
||||
*/
|
||||
extern struct inode_operations nfs_symlink_inode_operations;
|
||||
|
||||
/*
|
||||
* linux/fs/nfs/sysctl.c
|
||||
*/
|
||||
#ifdef CONFIG_SYSCTL
|
||||
extern int nfs_register_sysctl(void);
|
||||
extern void nfs_unregister_sysctl(void);
|
||||
#else
|
||||
#define nfs_register_sysctl() do { } while(0)
|
||||
#define nfs_unregister_sysctl() do { } while(0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* linux/fs/nfs/unlink.c
|
||||
*/
|
||||
@@ -405,10 +415,12 @@ extern int nfs_writepage(struct page *page, struct writeback_control *wbc);
|
||||
extern int nfs_writepages(struct address_space *, struct writeback_control *);
|
||||
extern int nfs_flush_incompatible(struct file *file, struct page *page);
|
||||
extern int nfs_updatepage(struct file *, struct page *, unsigned int, unsigned int);
|
||||
extern void nfs_writeback_done(struct rpc_task *task);
|
||||
extern void nfs_writeback_done(struct rpc_task *task, void *data);
|
||||
extern void nfs_writedata_release(void *data);
|
||||
|
||||
#if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4)
|
||||
extern void nfs_commit_done(struct rpc_task *);
|
||||
extern void nfs_commit_done(struct rpc_task *, void *data);
|
||||
extern void nfs_commit_release(void *data);
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -459,18 +471,33 @@ static inline int nfs_wb_page(struct inode *inode, struct page* page)
|
||||
*/
|
||||
extern mempool_t *nfs_wdata_mempool;
|
||||
|
||||
static inline struct nfs_write_data *nfs_writedata_alloc(void)
|
||||
static inline struct nfs_write_data *nfs_writedata_alloc(unsigned int pagecount)
|
||||
{
|
||||
struct nfs_write_data *p = mempool_alloc(nfs_wdata_mempool, SLAB_NOFS);
|
||||
|
||||
if (p) {
|
||||
memset(p, 0, sizeof(*p));
|
||||
INIT_LIST_HEAD(&p->pages);
|
||||
if (pagecount < NFS_PAGEVEC_SIZE)
|
||||
p->pagevec = &p->page_array[0];
|
||||
else {
|
||||
size_t size = ++pagecount * sizeof(struct page *);
|
||||
p->pagevec = kmalloc(size, GFP_NOFS);
|
||||
if (p->pagevec) {
|
||||
memset(p->pagevec, 0, size);
|
||||
} else {
|
||||
mempool_free(p, nfs_wdata_mempool);
|
||||
p = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
static inline void nfs_writedata_free(struct nfs_write_data *p)
|
||||
{
|
||||
if (p && (p->pagevec != &p->page_array[0]))
|
||||
kfree(p->pagevec);
|
||||
mempool_free(p, nfs_wdata_mempool);
|
||||
}
|
||||
|
||||
@@ -480,28 +507,45 @@ static inline void nfs_writedata_free(struct nfs_write_data *p)
|
||||
extern int nfs_readpage(struct file *, struct page *);
|
||||
extern int nfs_readpages(struct file *, struct address_space *,
|
||||
struct list_head *, unsigned);
|
||||
extern void nfs_readpage_result(struct rpc_task *);
|
||||
extern void nfs_readpage_result(struct rpc_task *, void *);
|
||||
extern void nfs_readdata_release(void *data);
|
||||
|
||||
|
||||
/*
|
||||
* Allocate and free nfs_read_data structures
|
||||
*/
|
||||
extern mempool_t *nfs_rdata_mempool;
|
||||
|
||||
static inline struct nfs_read_data *nfs_readdata_alloc(void)
|
||||
static inline struct nfs_read_data *nfs_readdata_alloc(unsigned int pagecount)
|
||||
{
|
||||
struct nfs_read_data *p = mempool_alloc(nfs_rdata_mempool, SLAB_NOFS);
|
||||
if (p)
|
||||
|
||||
if (p) {
|
||||
memset(p, 0, sizeof(*p));
|
||||
INIT_LIST_HEAD(&p->pages);
|
||||
if (pagecount < NFS_PAGEVEC_SIZE)
|
||||
p->pagevec = &p->page_array[0];
|
||||
else {
|
||||
size_t size = ++pagecount * sizeof(struct page *);
|
||||
p->pagevec = kmalloc(size, GFP_NOFS);
|
||||
if (p->pagevec) {
|
||||
memset(p->pagevec, 0, size);
|
||||
} else {
|
||||
mempool_free(p, nfs_rdata_mempool);
|
||||
p = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
static inline void nfs_readdata_free(struct nfs_read_data *p)
|
||||
{
|
||||
if (p && (p->pagevec != &p->page_array[0]))
|
||||
kfree(p->pagevec);
|
||||
mempool_free(p, nfs_rdata_mempool);
|
||||
}
|
||||
|
||||
extern void nfs_readdata_release(struct rpc_task *task);
|
||||
|
||||
/*
|
||||
* linux/fs/nfs3proc.c
|
||||
*/
|
||||
|
||||
@@ -71,6 +71,8 @@ int nfs_map_name_to_uid(struct nfs4_client *, const char *, size_t, __u32 *);
|
||||
int nfs_map_group_to_gid(struct nfs4_client *, const char *, size_t, __u32 *);
|
||||
int nfs_map_uid_to_name(struct nfs4_client *, __u32, char *);
|
||||
int nfs_map_gid_to_group(struct nfs4_client *, __u32, char *);
|
||||
|
||||
extern unsigned int nfs_idmap_cache_timeout;
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* NFS_IDMAP_H */
|
||||
|
||||
@@ -79,9 +79,7 @@ extern void nfs_clear_page_writeback(struct nfs_page *req);
|
||||
static inline int
|
||||
nfs_lock_request_dontget(struct nfs_page *req)
|
||||
{
|
||||
if (test_and_set_bit(PG_BUSY, &req->wb_flags))
|
||||
return 0;
|
||||
return 1;
|
||||
return !test_and_set_bit(PG_BUSY, &req->wb_flags);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -125,9 +123,7 @@ nfs_list_remove_request(struct nfs_page *req)
|
||||
static inline int
|
||||
nfs_defer_commit(struct nfs_page *req)
|
||||
{
|
||||
if (test_and_set_bit(PG_NEED_COMMIT, &req->wb_flags))
|
||||
return 0;
|
||||
return 1;
|
||||
return !test_and_set_bit(PG_NEED_COMMIT, &req->wb_flags);
|
||||
}
|
||||
|
||||
static inline void
|
||||
@@ -141,9 +137,7 @@ nfs_clear_commit(struct nfs_page *req)
|
||||
static inline int
|
||||
nfs_defer_reschedule(struct nfs_page *req)
|
||||
{
|
||||
if (test_and_set_bit(PG_NEED_RESCHED, &req->wb_flags))
|
||||
return 0;
|
||||
return 1;
|
||||
return !test_and_set_bit(PG_NEED_RESCHED, &req->wb_flags);
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
||||
+47
-42
@@ -4,6 +4,16 @@
|
||||
#include <linux/sunrpc/xprt.h>
|
||||
#include <linux/nfsacl.h>
|
||||
|
||||
/*
|
||||
* To change the maximum rsize and wsize supported by the NFS client, adjust
|
||||
* NFS_MAX_FILE_IO_SIZE. 64KB is a typical maximum, but some servers can
|
||||
* support a megabyte or more. The default is left at 4096 bytes, which is
|
||||
* reasonable for NFS over UDP.
|
||||
*/
|
||||
#define NFS_MAX_FILE_IO_SIZE (1048576U)
|
||||
#define NFS_DEF_FILE_IO_SIZE (4096U)
|
||||
#define NFS_MIN_FILE_IO_SIZE (1024U)
|
||||
|
||||
struct nfs4_fsid {
|
||||
__u64 major;
|
||||
__u64 minor;
|
||||
@@ -137,7 +147,7 @@ struct nfs_openres {
|
||||
*/
|
||||
struct nfs_open_confirmargs {
|
||||
const struct nfs_fh * fh;
|
||||
nfs4_stateid stateid;
|
||||
nfs4_stateid * stateid;
|
||||
struct nfs_seqid * seqid;
|
||||
};
|
||||
|
||||
@@ -165,66 +175,62 @@ struct nfs_closeres {
|
||||
* * Arguments to the lock,lockt, and locku call.
|
||||
* */
|
||||
struct nfs_lowner {
|
||||
__u64 clientid;
|
||||
u32 id;
|
||||
__u64 clientid;
|
||||
u32 id;
|
||||
};
|
||||
|
||||
struct nfs_lock_opargs {
|
||||
struct nfs_lock_args {
|
||||
struct nfs_fh * fh;
|
||||
struct file_lock * fl;
|
||||
struct nfs_seqid * lock_seqid;
|
||||
nfs4_stateid * lock_stateid;
|
||||
struct nfs_seqid * open_seqid;
|
||||
nfs4_stateid * open_stateid;
|
||||
struct nfs_lowner lock_owner;
|
||||
__u32 reclaim;
|
||||
__u32 new_lock_owner;
|
||||
struct nfs_lowner lock_owner;
|
||||
unsigned char block : 1;
|
||||
unsigned char reclaim : 1;
|
||||
unsigned char new_lock_owner : 1;
|
||||
};
|
||||
|
||||
struct nfs_locku_opargs {
|
||||
struct nfs_lock_res {
|
||||
nfs4_stateid stateid;
|
||||
};
|
||||
|
||||
struct nfs_locku_args {
|
||||
struct nfs_fh * fh;
|
||||
struct file_lock * fl;
|
||||
struct nfs_seqid * seqid;
|
||||
nfs4_stateid * stateid;
|
||||
};
|
||||
|
||||
struct nfs_lockargs {
|
||||
struct nfs_fh * fh;
|
||||
__u32 type;
|
||||
__u64 offset;
|
||||
__u64 length;
|
||||
union {
|
||||
struct nfs_lock_opargs *lock; /* LOCK */
|
||||
struct nfs_lowner *lockt; /* LOCKT */
|
||||
struct nfs_locku_opargs *locku; /* LOCKU */
|
||||
} u;
|
||||
struct nfs_locku_res {
|
||||
nfs4_stateid stateid;
|
||||
};
|
||||
|
||||
struct nfs_lock_denied {
|
||||
__u64 offset;
|
||||
__u64 length;
|
||||
__u32 type;
|
||||
struct nfs_lowner owner;
|
||||
struct nfs_lockt_args {
|
||||
struct nfs_fh * fh;
|
||||
struct file_lock * fl;
|
||||
struct nfs_lowner lock_owner;
|
||||
};
|
||||
|
||||
struct nfs_lockres {
|
||||
union {
|
||||
nfs4_stateid stateid;/* LOCK success, LOCKU */
|
||||
struct nfs_lock_denied denied; /* LOCK failed, LOCKT success */
|
||||
} u;
|
||||
const struct nfs_server * server;
|
||||
struct nfs_lockt_res {
|
||||
struct file_lock * denied; /* LOCK, LOCKT failed */
|
||||
};
|
||||
|
||||
struct nfs4_delegreturnargs {
|
||||
const struct nfs_fh *fhandle;
|
||||
const nfs4_stateid *stateid;
|
||||
const u32 * bitmask;
|
||||
};
|
||||
|
||||
struct nfs4_delegreturnres {
|
||||
struct nfs_fattr * fattr;
|
||||
const struct nfs_server *server;
|
||||
};
|
||||
|
||||
/*
|
||||
* Arguments to the read call.
|
||||
*/
|
||||
|
||||
#define NFS_READ_MAXIOV (9U)
|
||||
#if (NFS_READ_MAXIOV > (MAX_IOVEC -2))
|
||||
#error "NFS_READ_MAXIOV is too large"
|
||||
#endif
|
||||
|
||||
struct nfs_readargs {
|
||||
struct nfs_fh * fh;
|
||||
struct nfs_open_context *context;
|
||||
@@ -243,11 +249,6 @@ struct nfs_readres {
|
||||
/*
|
||||
* Arguments to the write call.
|
||||
*/
|
||||
#define NFS_WRITE_MAXIOV (9U)
|
||||
#if (NFS_WRITE_MAXIOV > (MAX_IOVEC -2))
|
||||
#error "NFS_WRITE_MAXIOV is too large"
|
||||
#endif
|
||||
|
||||
struct nfs_writeargs {
|
||||
struct nfs_fh * fh;
|
||||
struct nfs_open_context *context;
|
||||
@@ -678,6 +679,8 @@ struct nfs4_server_caps_res {
|
||||
|
||||
struct nfs_page;
|
||||
|
||||
#define NFS_PAGEVEC_SIZE (8U)
|
||||
|
||||
struct nfs_read_data {
|
||||
int flags;
|
||||
struct rpc_task task;
|
||||
@@ -686,13 +689,14 @@ struct nfs_read_data {
|
||||
struct nfs_fattr fattr; /* fattr storage */
|
||||
struct list_head pages; /* Coalesced read requests */
|
||||
struct nfs_page *req; /* multi ops per nfs_page */
|
||||
struct page *pagevec[NFS_READ_MAXIOV];
|
||||
struct page **pagevec;
|
||||
struct nfs_readargs args;
|
||||
struct nfs_readres res;
|
||||
#ifdef CONFIG_NFS_V4
|
||||
unsigned long timestamp; /* For lease renewal */
|
||||
#endif
|
||||
void (*complete) (struct nfs_read_data *, int);
|
||||
struct page *page_array[NFS_PAGEVEC_SIZE + 1];
|
||||
};
|
||||
|
||||
struct nfs_write_data {
|
||||
@@ -704,13 +708,14 @@ struct nfs_write_data {
|
||||
struct nfs_writeverf verf;
|
||||
struct list_head pages; /* Coalesced requests we wish to flush */
|
||||
struct nfs_page *req; /* multi ops per nfs_page */
|
||||
struct page *pagevec[NFS_WRITE_MAXIOV];
|
||||
struct page **pagevec;
|
||||
struct nfs_writeargs args; /* argument struct */
|
||||
struct nfs_writeres res; /* result struct */
|
||||
#ifdef CONFIG_NFS_V4
|
||||
unsigned long timestamp; /* For lease renewal */
|
||||
#endif
|
||||
void (*complete) (struct nfs_write_data *, int);
|
||||
struct page *page_array[NFS_PAGEVEC_SIZE + 1];
|
||||
};
|
||||
|
||||
struct nfs_access_entry;
|
||||
|
||||
@@ -88,10 +88,12 @@ struct nfsd_readdirargs {
|
||||
|
||||
struct nfsd_attrstat {
|
||||
struct svc_fh fh;
|
||||
struct kstat stat;
|
||||
};
|
||||
|
||||
struct nfsd_diropres {
|
||||
struct svc_fh fh;
|
||||
struct kstat stat;
|
||||
};
|
||||
|
||||
struct nfsd_readlinkres {
|
||||
@@ -101,6 +103,7 @@ struct nfsd_readlinkres {
|
||||
struct nfsd_readres {
|
||||
struct svc_fh fh;
|
||||
unsigned long count;
|
||||
struct kstat stat;
|
||||
};
|
||||
|
||||
struct nfsd_readdirres {
|
||||
|
||||
@@ -126,6 +126,7 @@ struct nfsd3_setaclargs {
|
||||
struct nfsd3_attrstat {
|
||||
__u32 status;
|
||||
struct svc_fh fh;
|
||||
struct kstat stat;
|
||||
};
|
||||
|
||||
/* LOOKUP, CREATE, MKDIR, SYMLINK, MKNOD */
|
||||
|
||||
+64
-23
@@ -79,13 +79,23 @@
|
||||
/*
|
||||
* Global page accounting. One instance per CPU. Only unsigned longs are
|
||||
* allowed.
|
||||
*
|
||||
* - Fields can be modified with xxx_page_state and xxx_page_state_zone at
|
||||
* any time safely (which protects the instance from modification by
|
||||
* interrupt.
|
||||
* - The __xxx_page_state variants can be used safely when interrupts are
|
||||
* disabled.
|
||||
* - The __xxx_page_state variants can be used if the field is only
|
||||
* modified from process context, or only modified from interrupt context.
|
||||
* In this case, the field should be commented here.
|
||||
*/
|
||||
struct page_state {
|
||||
unsigned long nr_dirty; /* Dirty writeable pages */
|
||||
unsigned long nr_writeback; /* Pages under writeback */
|
||||
unsigned long nr_unstable; /* NFS unstable pages */
|
||||
unsigned long nr_page_table_pages;/* Pages used for pagetables */
|
||||
unsigned long nr_mapped; /* mapped into pagetables */
|
||||
unsigned long nr_mapped; /* mapped into pagetables.
|
||||
* only modified from process context */
|
||||
unsigned long nr_slab; /* In slab */
|
||||
#define GET_PAGE_STATE_LAST nr_slab
|
||||
|
||||
@@ -97,32 +107,40 @@ struct page_state {
|
||||
unsigned long pgpgout; /* Disk writes */
|
||||
unsigned long pswpin; /* swap reads */
|
||||
unsigned long pswpout; /* swap writes */
|
||||
unsigned long pgalloc_high; /* page allocations */
|
||||
|
||||
unsigned long pgalloc_high; /* page allocations */
|
||||
unsigned long pgalloc_normal;
|
||||
unsigned long pgalloc_dma32;
|
||||
unsigned long pgalloc_dma;
|
||||
|
||||
unsigned long pgfree; /* page freeings */
|
||||
unsigned long pgactivate; /* pages moved inactive->active */
|
||||
unsigned long pgdeactivate; /* pages moved active->inactive */
|
||||
|
||||
unsigned long pgfault; /* faults (major+minor) */
|
||||
unsigned long pgmajfault; /* faults (major only) */
|
||||
|
||||
unsigned long pgrefill_high; /* inspected in refill_inactive_zone */
|
||||
unsigned long pgrefill_normal;
|
||||
unsigned long pgrefill_dma32;
|
||||
unsigned long pgrefill_dma;
|
||||
|
||||
unsigned long pgsteal_high; /* total highmem pages reclaimed */
|
||||
unsigned long pgsteal_normal;
|
||||
unsigned long pgsteal_dma32;
|
||||
unsigned long pgsteal_dma;
|
||||
|
||||
unsigned long pgscan_kswapd_high;/* total highmem pages scanned */
|
||||
unsigned long pgscan_kswapd_normal;
|
||||
|
||||
unsigned long pgscan_kswapd_dma32;
|
||||
unsigned long pgscan_kswapd_dma;
|
||||
|
||||
unsigned long pgscan_direct_high;/* total highmem pages scanned */
|
||||
unsigned long pgscan_direct_normal;
|
||||
unsigned long pgscan_direct_dma32;
|
||||
unsigned long pgscan_direct_dma;
|
||||
unsigned long pginodesteal; /* pages reclaimed via inode freeing */
|
||||
|
||||
unsigned long pginodesteal; /* pages reclaimed via inode freeing */
|
||||
unsigned long slabs_scanned; /* slab objects scanned */
|
||||
unsigned long kswapd_steal; /* pages reclaimed by kswapd */
|
||||
unsigned long kswapd_inodesteal;/* reclaimed via kswapd inode freeing */
|
||||
@@ -136,31 +154,54 @@ struct page_state {
|
||||
extern void get_page_state(struct page_state *ret);
|
||||
extern void get_page_state_node(struct page_state *ret, int node);
|
||||
extern void get_full_page_state(struct page_state *ret);
|
||||
extern unsigned long __read_page_state(unsigned long offset);
|
||||
extern void __mod_page_state(unsigned long offset, unsigned long delta);
|
||||
extern unsigned long read_page_state_offset(unsigned long offset);
|
||||
extern void mod_page_state_offset(unsigned long offset, unsigned long delta);
|
||||
extern void __mod_page_state_offset(unsigned long offset, unsigned long delta);
|
||||
|
||||
#define read_page_state(member) \
|
||||
__read_page_state(offsetof(struct page_state, member))
|
||||
read_page_state_offset(offsetof(struct page_state, member))
|
||||
|
||||
#define mod_page_state(member, delta) \
|
||||
__mod_page_state(offsetof(struct page_state, member), (delta))
|
||||
mod_page_state_offset(offsetof(struct page_state, member), (delta))
|
||||
|
||||
#define inc_page_state(member) mod_page_state(member, 1UL)
|
||||
#define dec_page_state(member) mod_page_state(member, 0UL - 1)
|
||||
#define add_page_state(member,delta) mod_page_state(member, (delta))
|
||||
#define sub_page_state(member,delta) mod_page_state(member, 0UL - (delta))
|
||||
#define __mod_page_state(member, delta) \
|
||||
__mod_page_state_offset(offsetof(struct page_state, member), (delta))
|
||||
|
||||
#define mod_page_state_zone(zone, member, delta) \
|
||||
do { \
|
||||
unsigned offset; \
|
||||
if (is_highmem(zone)) \
|
||||
offset = offsetof(struct page_state, member##_high); \
|
||||
else if (is_normal(zone)) \
|
||||
offset = offsetof(struct page_state, member##_normal); \
|
||||
else \
|
||||
offset = offsetof(struct page_state, member##_dma); \
|
||||
__mod_page_state(offset, (delta)); \
|
||||
} while (0)
|
||||
#define inc_page_state(member) mod_page_state(member, 1UL)
|
||||
#define dec_page_state(member) mod_page_state(member, 0UL - 1)
|
||||
#define add_page_state(member,delta) mod_page_state(member, (delta))
|
||||
#define sub_page_state(member,delta) mod_page_state(member, 0UL - (delta))
|
||||
|
||||
#define __inc_page_state(member) __mod_page_state(member, 1UL)
|
||||
#define __dec_page_state(member) __mod_page_state(member, 0UL - 1)
|
||||
#define __add_page_state(member,delta) __mod_page_state(member, (delta))
|
||||
#define __sub_page_state(member,delta) __mod_page_state(member, 0UL - (delta))
|
||||
|
||||
#define page_state(member) (*__page_state(offsetof(struct page_state, member)))
|
||||
|
||||
#define state_zone_offset(zone, member) \
|
||||
({ \
|
||||
unsigned offset; \
|
||||
if (is_highmem(zone)) \
|
||||
offset = offsetof(struct page_state, member##_high); \
|
||||
else if (is_normal(zone)) \
|
||||
offset = offsetof(struct page_state, member##_normal); \
|
||||
else if (is_dma32(zone)) \
|
||||
offset = offsetof(struct page_state, member##_dma32); \
|
||||
else \
|
||||
offset = offsetof(struct page_state, member##_dma); \
|
||||
offset; \
|
||||
})
|
||||
|
||||
#define __mod_page_state_zone(zone, member, delta) \
|
||||
do { \
|
||||
__mod_page_state_offset(state_zone_offset(zone, member), (delta)); \
|
||||
} while (0)
|
||||
|
||||
#define mod_page_state_zone(zone, member, delta) \
|
||||
do { \
|
||||
mod_page_state_offset(state_zone_offset(zone, member), (delta)); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Manipulation of page state flags
|
||||
|
||||
@@ -242,7 +242,6 @@ enum ieee1284_phase {
|
||||
IEEE1284_PH_FWD_IDLE,
|
||||
IEEE1284_PH_TERMINATE,
|
||||
IEEE1284_PH_NEGOTIATION,
|
||||
IEEE1284_PH_HBUSY_DNA,
|
||||
IEEE1284_PH_REV_IDLE,
|
||||
IEEE1284_PH_HBUSY_DAVAIL,
|
||||
IEEE1284_PH_REV_DATA,
|
||||
|
||||
@@ -79,14 +79,14 @@ static __inline__ unsigned char parport_pc_read_data(struct parport *p)
|
||||
}
|
||||
|
||||
#ifdef DEBUG_PARPORT
|
||||
extern __inline__ void dump_parport_state (char *str, struct parport *p)
|
||||
static inline void dump_parport_state (char *str, struct parport *p)
|
||||
{
|
||||
/* here's hoping that reading these ports won't side-effect anything underneath */
|
||||
unsigned char ecr = inb (ECONTROL (p));
|
||||
unsigned char dcr = inb (CONTROL (p));
|
||||
unsigned char dsr = inb (STATUS (p));
|
||||
static char *ecr_modes[] = {"SPP", "PS2", "PPFIFO", "ECP", "xXx", "yYy", "TST", "CFG"};
|
||||
const struct parport_pc_private *priv = (parport_pc_private *)p->physport->private_data;
|
||||
static const char *const ecr_modes[] = {"SPP", "PS2", "PPFIFO", "ECP", "xXx", "yYy", "TST", "CFG"};
|
||||
const struct parport_pc_private *priv = p->physport->private_data;
|
||||
int i;
|
||||
|
||||
printk (KERN_DEBUG "*** parport state (%s): ecr=[%s", str, ecr_modes[(ecr & 0xe0) >> 5]);
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#define PCI_CLASS_STORAGE_FLOPPY 0x0102
|
||||
#define PCI_CLASS_STORAGE_IPI 0x0103
|
||||
#define PCI_CLASS_STORAGE_RAID 0x0104
|
||||
#define PCI_CLASS_STORAGE_SAS 0x0107
|
||||
#define PCI_CLASS_STORAGE_OTHER 0x0180
|
||||
|
||||
#define PCI_BASE_CLASS_NETWORK 0x02
|
||||
@@ -376,6 +377,10 @@
|
||||
#define PCI_DEVICE_ID_NS_87560_USB 0x0012
|
||||
#define PCI_DEVICE_ID_NS_83815 0x0020
|
||||
#define PCI_DEVICE_ID_NS_83820 0x0022
|
||||
#define PCI_DEVICE_ID_NS_CS5535_IDE 0x002d
|
||||
#define PCI_DEVICE_ID_NS_CS5535_AUDIO 0x002e
|
||||
#define PCI_DEVICE_ID_NS_CS5535_USB 0x002f
|
||||
#define PCI_DEVICE_ID_NS_CS5535_VIDEO 0x0030
|
||||
#define PCI_DEVICE_ID_NS_SATURN 0x0035
|
||||
#define PCI_DEVICE_ID_NS_SCx200_BRIDGE 0x0500
|
||||
#define PCI_DEVICE_ID_NS_SCx200_SMI 0x0501
|
||||
@@ -389,6 +394,13 @@
|
||||
#define PCI_DEVICE_ID_NS_87410 0xd001
|
||||
#define PCI_DEVICE_ID_NS_CS5535_IDE 0x002d
|
||||
|
||||
#define PCI_DEVICE_ID_NS_CS5535_HOST_BRIDGE 0x0028
|
||||
#define PCI_DEVICE_ID_NS_CS5535_ISA_BRIDGE 0x002b
|
||||
#define PCI_DEVICE_ID_NS_CS5535_IDE 0x002d
|
||||
#define PCI_DEVICE_ID_NS_CS5535_AUDIO 0x002e
|
||||
#define PCI_DEVICE_ID_NS_CS5535_USB 0x002f
|
||||
#define PCI_DEVICE_ID_NS_CS5535_VIDEO 0x0030
|
||||
|
||||
#define PCI_VENDOR_ID_TSENG 0x100c
|
||||
#define PCI_DEVICE_ID_TSENG_W32P_2 0x3202
|
||||
#define PCI_DEVICE_ID_TSENG_W32P_b 0x3205
|
||||
@@ -491,6 +503,9 @@
|
||||
|
||||
#define PCI_DEVICE_ID_AMD_CS5536_IDE 0x209A
|
||||
|
||||
#define PCI_DEVICE_ID_AMD_LX_VIDEO 0x2081
|
||||
#define PCI_DEVICE_ID_AMD_LX_AES 0x2082
|
||||
|
||||
#define PCI_VENDOR_ID_TRIDENT 0x1023
|
||||
#define PCI_DEVICE_ID_TRIDENT_4DWAVE_DX 0x2000
|
||||
#define PCI_DEVICE_ID_TRIDENT_4DWAVE_NX 0x2001
|
||||
@@ -971,6 +986,7 @@
|
||||
#define PCI_DEVICE_ID_NVIDIA_TNT_UNKNOWN 0x002a
|
||||
#define PCI_DEVICE_ID_NVIDIA_VTNT2 0x002C
|
||||
#define PCI_DEVICE_ID_NVIDIA_UVTNT2 0x002D
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SMBUS 0x0034
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_IDE 0x0035
|
||||
#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA 0x0036
|
||||
#define PCI_DEVICE_ID_NVIDIA_NVENET_10 0x0037
|
||||
@@ -1244,6 +1260,7 @@
|
||||
#define PCI_DEVICE_ID_VIA_8378_0 0x3205
|
||||
#define PCI_DEVICE_ID_VIA_8783_0 0x3208
|
||||
#define PCI_DEVICE_ID_VIA_8237 0x3227
|
||||
#define PCI_DEVICE_ID_VIA_8251 0x3287
|
||||
#define PCI_DEVICE_ID_VIA_3296_0 0x0296
|
||||
#define PCI_DEVICE_ID_VIA_8231 0x8231
|
||||
#define PCI_DEVICE_ID_VIA_8231_4 0x8235
|
||||
|
||||
+12
-1
@@ -216,6 +216,16 @@ struct sadb_x_nat_t_port {
|
||||
} __attribute__((packed));
|
||||
/* sizeof(struct sadb_x_nat_t_port) == 8 */
|
||||
|
||||
/* Generic LSM security context */
|
||||
struct sadb_x_sec_ctx {
|
||||
uint16_t sadb_x_sec_len;
|
||||
uint16_t sadb_x_sec_exttype;
|
||||
uint8_t sadb_x_ctx_alg; /* LSMs: e.g., selinux == 1 */
|
||||
uint8_t sadb_x_ctx_doi;
|
||||
uint16_t sadb_x_ctx_len;
|
||||
} __attribute__((packed));
|
||||
/* sizeof(struct sadb_sec_ctx) = 8 */
|
||||
|
||||
/* Message types */
|
||||
#define SADB_RESERVED 0
|
||||
#define SADB_GETSPI 1
|
||||
@@ -325,7 +335,8 @@ struct sadb_x_nat_t_port {
|
||||
#define SADB_X_EXT_NAT_T_SPORT 21
|
||||
#define SADB_X_EXT_NAT_T_DPORT 22
|
||||
#define SADB_X_EXT_NAT_T_OA 23
|
||||
#define SADB_EXT_MAX 23
|
||||
#define SADB_X_EXT_SEC_CTX 24
|
||||
#define SADB_EXT_MAX 24
|
||||
|
||||
/* Identity Extension values */
|
||||
#define SADB_IDENTTYPE_RESERVED 0
|
||||
|
||||
@@ -429,6 +429,7 @@ enum
|
||||
TCA_NETEM_CORR,
|
||||
TCA_NETEM_DELAY_DIST,
|
||||
TCA_NETEM_REORDER,
|
||||
TCA_NETEM_CORRUPT,
|
||||
__TCA_NETEM_MAX,
|
||||
};
|
||||
|
||||
@@ -457,6 +458,12 @@ struct tc_netem_reorder
|
||||
__u32 correlation;
|
||||
};
|
||||
|
||||
struct tc_netem_corrupt
|
||||
{
|
||||
__u32 probability;
|
||||
__u32 correlation;
|
||||
};
|
||||
|
||||
#define NETEM_DIST_SCALE 8192
|
||||
|
||||
#endif
|
||||
|
||||
@@ -41,6 +41,7 @@ extern struct platform_device *platform_device_alloc(const char *name, unsigned
|
||||
extern int platform_device_add_resources(struct platform_device *pdev, struct resource *res, unsigned int num);
|
||||
extern int platform_device_add_data(struct platform_device *pdev, void *data, size_t size);
|
||||
extern int platform_device_add(struct platform_device *pdev);
|
||||
extern void platform_device_del(struct platform_device *pdev);
|
||||
extern void platform_device_put(struct platform_device *pdev);
|
||||
|
||||
struct platform_driver {
|
||||
|
||||
@@ -162,6 +162,7 @@ struct pnp_card_link {
|
||||
struct pnp_card * card;
|
||||
struct pnp_card_driver * driver;
|
||||
void * driver_data;
|
||||
pm_message_t pm_state;
|
||||
};
|
||||
|
||||
static inline void *pnp_get_card_drvdata (struct pnp_card_link *pcard)
|
||||
@@ -294,6 +295,8 @@ struct pnp_driver {
|
||||
unsigned int flags;
|
||||
int (*probe) (struct pnp_dev *dev, const struct pnp_device_id *dev_id);
|
||||
void (*remove) (struct pnp_dev *dev);
|
||||
int (*suspend) (struct pnp_dev *dev, pm_message_t state);
|
||||
int (*resume) (struct pnp_dev *dev);
|
||||
struct device_driver driver;
|
||||
};
|
||||
|
||||
@@ -306,6 +309,8 @@ struct pnp_card_driver {
|
||||
unsigned int flags;
|
||||
int (*probe) (struct pnp_card_link *card, const struct pnp_card_device_id *card_id);
|
||||
void (*remove) (struct pnp_card_link *card);
|
||||
int (*suspend) (struct pnp_card_link *card, pm_message_t state);
|
||||
int (*resume) (struct pnp_card_link *card);
|
||||
struct pnp_driver link;
|
||||
};
|
||||
|
||||
@@ -380,6 +385,8 @@ void pnp_init_resource_table(struct pnp_resource_table *table);
|
||||
int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res, int mode);
|
||||
int pnp_auto_config_dev(struct pnp_dev *dev);
|
||||
int pnp_validate_config(struct pnp_dev *dev);
|
||||
int pnp_start_dev(struct pnp_dev *dev);
|
||||
int pnp_stop_dev(struct pnp_dev *dev);
|
||||
int pnp_activate_dev(struct pnp_dev *dev);
|
||||
int pnp_disable_dev(struct pnp_dev *dev);
|
||||
void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size);
|
||||
@@ -423,6 +430,8 @@ static inline void pnp_init_resource_table(struct pnp_resource_table *table) { }
|
||||
static inline int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res, int mode) { return -ENODEV; }
|
||||
static inline int pnp_auto_config_dev(struct pnp_dev *dev) { return -ENODEV; }
|
||||
static inline int pnp_validate_config(struct pnp_dev *dev) { return -ENODEV; }
|
||||
static inline int pnp_start_dev(struct pnp_dev *dev) { return -ENODEV; }
|
||||
static inline int pnp_stop_dev(struct pnp_dev *dev) { return -ENODEV; }
|
||||
static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; }
|
||||
static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; }
|
||||
static inline void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size) { }
|
||||
|
||||
@@ -48,6 +48,7 @@ do { \
|
||||
#define preempt_enable() \
|
||||
do { \
|
||||
preempt_enable_no_resched(); \
|
||||
barrier(); \
|
||||
preempt_check_resched(); \
|
||||
} while (0)
|
||||
|
||||
|
||||
@@ -71,8 +71,8 @@
|
||||
*/
|
||||
#define MD_PATCHLEVEL_VERSION 3
|
||||
|
||||
extern int register_md_personality (int p_num, mdk_personality_t *p);
|
||||
extern int unregister_md_personality (int p_num);
|
||||
extern int register_md_personality (struct mdk_personality *p);
|
||||
extern int unregister_md_personality (struct mdk_personality *p);
|
||||
extern mdk_thread_t * md_register_thread (void (*run) (mddev_t *mddev),
|
||||
mddev_t *mddev, const char *name);
|
||||
extern void md_unregister_thread (mdk_thread_t *thread);
|
||||
|
||||
+25
-55
@@ -18,62 +18,19 @@
|
||||
/* and dm-bio-list.h is not under include/linux because.... ??? */
|
||||
#include "../../../drivers/md/dm-bio-list.h"
|
||||
|
||||
#define MD_RESERVED 0UL
|
||||
#define LINEAR 1UL
|
||||
#define RAID0 2UL
|
||||
#define RAID1 3UL
|
||||
#define RAID5 4UL
|
||||
#define TRANSLUCENT 5UL
|
||||
#define HSM 6UL
|
||||
#define MULTIPATH 7UL
|
||||
#define RAID6 8UL
|
||||
#define RAID10 9UL
|
||||
#define FAULTY 10UL
|
||||
#define MAX_PERSONALITY 11UL
|
||||
|
||||
#define LEVEL_MULTIPATH (-4)
|
||||
#define LEVEL_LINEAR (-1)
|
||||
#define LEVEL_FAULTY (-5)
|
||||
|
||||
/* we need a value for 'no level specified' and 0
|
||||
* means 'raid0', so we need something else. This is
|
||||
* for internal use only
|
||||
*/
|
||||
#define LEVEL_NONE (-1000000)
|
||||
|
||||
#define MaxSector (~(sector_t)0)
|
||||
#define MD_THREAD_NAME_MAX 14
|
||||
|
||||
static inline int pers_to_level (int pers)
|
||||
{
|
||||
switch (pers) {
|
||||
case FAULTY: return LEVEL_FAULTY;
|
||||
case MULTIPATH: return LEVEL_MULTIPATH;
|
||||
case HSM: return -3;
|
||||
case TRANSLUCENT: return -2;
|
||||
case LINEAR: return LEVEL_LINEAR;
|
||||
case RAID0: return 0;
|
||||
case RAID1: return 1;
|
||||
case RAID5: return 5;
|
||||
case RAID6: return 6;
|
||||
case RAID10: return 10;
|
||||
}
|
||||
BUG();
|
||||
return MD_RESERVED;
|
||||
}
|
||||
|
||||
static inline int level_to_pers (int level)
|
||||
{
|
||||
switch (level) {
|
||||
case LEVEL_FAULTY: return FAULTY;
|
||||
case LEVEL_MULTIPATH: return MULTIPATH;
|
||||
case -3: return HSM;
|
||||
case -2: return TRANSLUCENT;
|
||||
case LEVEL_LINEAR: return LINEAR;
|
||||
case 0: return RAID0;
|
||||
case 1: return RAID1;
|
||||
case 4:
|
||||
case 5: return RAID5;
|
||||
case 6: return RAID6;
|
||||
case 10: return RAID10;
|
||||
}
|
||||
return MD_RESERVED;
|
||||
}
|
||||
|
||||
typedef struct mddev_s mddev_t;
|
||||
typedef struct mdk_rdev_s mdk_rdev_t;
|
||||
|
||||
@@ -138,14 +95,16 @@ struct mdk_rdev_s
|
||||
atomic_t read_errors; /* number of consecutive read errors that
|
||||
* we have tried to ignore.
|
||||
*/
|
||||
atomic_t corrected_errors; /* number of corrected read errors,
|
||||
* for reporting to userspace and storing
|
||||
* in superblock.
|
||||
*/
|
||||
};
|
||||
|
||||
typedef struct mdk_personality_s mdk_personality_t;
|
||||
|
||||
struct mddev_s
|
||||
{
|
||||
void *private;
|
||||
mdk_personality_t *pers;
|
||||
struct mdk_personality *pers;
|
||||
dev_t unit;
|
||||
int md_minor;
|
||||
struct list_head disks;
|
||||
@@ -164,6 +123,7 @@ struct mddev_s
|
||||
int chunk_size;
|
||||
time_t ctime, utime;
|
||||
int level, layout;
|
||||
char clevel[16];
|
||||
int raid_disks;
|
||||
int max_disks;
|
||||
sector_t size; /* used size of component devices */
|
||||
@@ -183,6 +143,11 @@ struct mddev_s
|
||||
sector_t resync_mismatches; /* count of sectors where
|
||||
* parity/replica mismatch found
|
||||
*/
|
||||
/* if zero, use the system-wide default */
|
||||
int sync_speed_min;
|
||||
int sync_speed_max;
|
||||
|
||||
int ok_start_degraded;
|
||||
/* recovery/resync flags
|
||||
* NEEDED: we might need to start a resync/recover
|
||||
* RUNNING: a thread is running, or about to be started
|
||||
@@ -265,9 +230,11 @@ static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sect
|
||||
atomic_add(nr_sectors, &bdev->bd_contains->bd_disk->sync_io);
|
||||
}
|
||||
|
||||
struct mdk_personality_s
|
||||
struct mdk_personality
|
||||
{
|
||||
char *name;
|
||||
int level;
|
||||
struct list_head list;
|
||||
struct module *owner;
|
||||
int (*make_request)(request_queue_t *q, struct bio *bio);
|
||||
int (*run)(mddev_t *mddev);
|
||||
@@ -305,8 +272,6 @@ static inline char * mdname (mddev_t * mddev)
|
||||
return mddev->gendisk ? mddev->gendisk->disk_name : "mdX";
|
||||
}
|
||||
|
||||
extern mdk_rdev_t * find_rdev_nr(mddev_t *mddev, int nr);
|
||||
|
||||
/*
|
||||
* iterates through some rdev ringlist. It's safe to remove the
|
||||
* current 'rdev'. Dont touch 'tmp' though.
|
||||
@@ -366,5 +331,10 @@ do { \
|
||||
__wait_event_lock_irq(wq, condition, lock, cmd); \
|
||||
} while (0)
|
||||
|
||||
static inline void safe_put_page(struct page *p)
|
||||
{
|
||||
if (p) put_page(p);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -45,6 +45,8 @@ struct r1_private_data_s {
|
||||
|
||||
spinlock_t resync_lock;
|
||||
int nr_pending;
|
||||
int nr_waiting;
|
||||
int nr_queued;
|
||||
int barrier;
|
||||
sector_t next_resync;
|
||||
int fullsync; /* set to 1 if a full sync is needed,
|
||||
@@ -52,11 +54,12 @@ struct r1_private_data_s {
|
||||
* Cleared when a sync completes.
|
||||
*/
|
||||
|
||||
wait_queue_head_t wait_idle;
|
||||
wait_queue_head_t wait_resume;
|
||||
wait_queue_head_t wait_barrier;
|
||||
|
||||
struct pool_info *poolinfo;
|
||||
|
||||
struct page *tmppage;
|
||||
|
||||
mempool_t *r1bio_pool;
|
||||
mempool_t *r1buf_pool;
|
||||
};
|
||||
@@ -106,6 +109,13 @@ struct r1bio_s {
|
||||
/* DO NOT PUT ANY NEW FIELDS HERE - bios array is contiguously alloced*/
|
||||
};
|
||||
|
||||
/* when we get a read error on a read-only array, we redirect to another
|
||||
* device without failing the first device, or trying to over-write to
|
||||
* correct the read error. To keep track of bad blocks on a per-bio
|
||||
* level, we store IO_BLOCKED in the appropriate 'bios' pointer
|
||||
*/
|
||||
#define IO_BLOCKED ((struct bio*)1)
|
||||
|
||||
/* bits for r1bio.state */
|
||||
#define R1BIO_Uptodate 0
|
||||
#define R1BIO_IsSync 1
|
||||
|
||||
@@ -35,18 +35,26 @@ struct r10_private_data_s {
|
||||
sector_t chunk_mask;
|
||||
|
||||
struct list_head retry_list;
|
||||
/* for use when syncing mirrors: */
|
||||
/* queue pending writes and submit them on unplug */
|
||||
struct bio_list pending_bio_list;
|
||||
|
||||
|
||||
spinlock_t resync_lock;
|
||||
int nr_pending;
|
||||
int nr_waiting;
|
||||
int nr_queued;
|
||||
int barrier;
|
||||
sector_t next_resync;
|
||||
int fullsync; /* set to 1 if a full sync is needed,
|
||||
* (fresh device added).
|
||||
* Cleared when a sync completes.
|
||||
*/
|
||||
|
||||
wait_queue_head_t wait_idle;
|
||||
wait_queue_head_t wait_resume;
|
||||
wait_queue_head_t wait_barrier;
|
||||
|
||||
mempool_t *r10bio_pool;
|
||||
mempool_t *r10buf_pool;
|
||||
struct page *tmppage;
|
||||
};
|
||||
|
||||
typedef struct r10_private_data_s conf_t;
|
||||
@@ -96,8 +104,16 @@ struct r10bio_s {
|
||||
} devs[0];
|
||||
};
|
||||
|
||||
/* when we get a read error on a read-only array, we redirect to another
|
||||
* device without failing the first device, or trying to over-write to
|
||||
* correct the read error. To keep track of bad blocks on a per-bio
|
||||
* level, we store IO_BLOCKED in the appropriate 'bios' pointer
|
||||
*/
|
||||
#define IO_BLOCKED ((struct bio*)1)
|
||||
|
||||
/* bits for r10bio.state */
|
||||
#define R10BIO_Uptodate 0
|
||||
#define R10BIO_IsSync 1
|
||||
#define R10BIO_IsRecover 2
|
||||
#define R10BIO_Degraded 3
|
||||
#endif
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
*/
|
||||
|
||||
struct stripe_head {
|
||||
struct stripe_head *hash_next, **hash_pprev; /* hash pointers */
|
||||
struct hlist_node hash;
|
||||
struct list_head lru; /* inactive_list or handle_list */
|
||||
struct raid5_private_data *raid_conf;
|
||||
sector_t sector; /* sector of this row */
|
||||
@@ -152,7 +152,6 @@ struct stripe_head {
|
||||
#define R5_Insync 3 /* rdev && rdev->in_sync at start */
|
||||
#define R5_Wantread 4 /* want to schedule a read */
|
||||
#define R5_Wantwrite 5
|
||||
#define R5_Syncio 6 /* this io need to be accounted as resync io */
|
||||
#define R5_Overlap 7 /* There is a pending overlapping request on this block */
|
||||
#define R5_ReadError 8 /* seen a read error here recently */
|
||||
#define R5_ReWrite 9 /* have tried to over-write the readerror */
|
||||
@@ -205,7 +204,7 @@ struct disk_info {
|
||||
};
|
||||
|
||||
struct raid5_private_data {
|
||||
struct stripe_head **stripe_hashtbl;
|
||||
struct hlist_head *stripe_hashtbl;
|
||||
mddev_t *mddev;
|
||||
struct disk_info *spare;
|
||||
int chunk_size, level, algorithm;
|
||||
@@ -228,6 +227,8 @@ struct raid5_private_data {
|
||||
* Cleared when a sync completes.
|
||||
*/
|
||||
|
||||
struct page *spare_page; /* Used when checking P/Q in raid6 */
|
||||
|
||||
/*
|
||||
* Free stripes pool
|
||||
*/
|
||||
|
||||
@@ -5,6 +5,16 @@ struct inode *ramfs_get_inode(struct super_block *sb, int mode, dev_t dev);
|
||||
struct super_block *ramfs_get_sb(struct file_system_type *fs_type,
|
||||
int flags, const char *dev_name, void *data);
|
||||
|
||||
#ifndef CONFIG_MMU
|
||||
extern unsigned long ramfs_nommu_get_unmapped_area(struct file *file,
|
||||
unsigned long addr,
|
||||
unsigned long len,
|
||||
unsigned long pgoff,
|
||||
unsigned long flags);
|
||||
|
||||
extern int ramfs_nommu_mmap(struct file *file, struct vm_area_struct *vma);
|
||||
#endif
|
||||
|
||||
extern struct file_operations ramfs_file_operations;
|
||||
extern struct vm_operations_struct generic_file_vm_ops;
|
||||
|
||||
|
||||
@@ -52,9 +52,9 @@ extern void get_random_bytes(void *buf, int nbytes);
|
||||
void generate_random_uuid(unsigned char uuid_out[16]);
|
||||
|
||||
extern __u32 secure_ip_id(__u32 daddr);
|
||||
extern u32 secure_tcp_port_ephemeral(__u32 saddr, __u32 daddr, __u16 dport);
|
||||
extern u32 secure_tcpv6_port_ephemeral(const __u32 *saddr, const __u32 *daddr,
|
||||
__u16 dport);
|
||||
extern u32 secure_ipv4_port_ephemeral(__u32 saddr, __u32 daddr, __u16 dport);
|
||||
extern u32 secure_ipv6_port_ephemeral(const __u32 *saddr, const __u32 *daddr,
|
||||
__u16 dport);
|
||||
extern __u32 secure_tcp_sequence_number(__u32 saddr, __u32 daddr,
|
||||
__u16 sport, __u16 dport);
|
||||
extern __u32 secure_tcpv6_sequence_number(__u32 *saddr, __u32 *daddr,
|
||||
|
||||
@@ -100,6 +100,7 @@ struct rcu_data {
|
||||
struct rcu_head *donelist;
|
||||
struct rcu_head **donetail;
|
||||
int cpu;
|
||||
struct rcu_head barrier;
|
||||
};
|
||||
|
||||
DECLARE_PER_CPU(struct rcu_data, rcu_data);
|
||||
@@ -285,6 +286,7 @@ extern void FASTCALL(call_rcu_bh(struct rcu_head *head,
|
||||
extern __deprecated_for_modules void synchronize_kernel(void);
|
||||
extern void synchronize_rcu(void);
|
||||
void synchronize_idle(void);
|
||||
extern void rcu_barrier(void);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* __LINUX_RCUPDATE_H */
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
#include <linux/kref.h>
|
||||
|
||||
/*
|
||||
* Tracks changes to rchan_buf struct
|
||||
* Tracks changes to rchan/rchan_buf structs
|
||||
*/
|
||||
#define RELAYFS_CHANNEL_VERSION 5
|
||||
#define RELAYFS_CHANNEL_VERSION 6
|
||||
|
||||
/*
|
||||
* Per-cpu relay channel buffer
|
||||
@@ -60,6 +60,7 @@ struct rchan
|
||||
struct rchan_callbacks *cb; /* client callbacks */
|
||||
struct kref kref; /* channel refcount */
|
||||
void *private_data; /* for user-defined data */
|
||||
size_t last_toobig; /* tried to log event > subbuf size */
|
||||
struct rchan_buf *buf[NR_CPUS]; /* per-cpu channel buffers */
|
||||
};
|
||||
|
||||
|
||||
@@ -71,6 +71,7 @@ void __anon_vma_link(struct vm_area_struct *);
|
||||
* rmap interfaces called when adding or removing pte of page
|
||||
*/
|
||||
void page_add_anon_rmap(struct page *, struct vm_area_struct *, unsigned long);
|
||||
void page_add_new_anon_rmap(struct page *, struct vm_area_struct *, unsigned long);
|
||||
void page_add_file_rmap(struct page *);
|
||||
void page_remove_rmap(struct page *);
|
||||
|
||||
|
||||
@@ -866,6 +866,7 @@ enum rtnetlink_groups {
|
||||
#define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
|
||||
RTNLGRP_IPV4_ROUTE,
|
||||
#define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
|
||||
RTNLGRP_NOP1,
|
||||
RTNLGRP_IPV6_IFADDR,
|
||||
#define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
|
||||
RTNLGRP_IPV6_MROUTE,
|
||||
@@ -876,8 +877,11 @@ enum rtnetlink_groups {
|
||||
#define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
|
||||
RTNLGRP_DECnet_IFADDR,
|
||||
#define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
|
||||
RTNLGRP_NOP2,
|
||||
RTNLGRP_DECnet_ROUTE,
|
||||
#define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
|
||||
RTNLGRP_NOP3,
|
||||
RTNLGRP_NOP4,
|
||||
RTNLGRP_IPV6_PREFIX,
|
||||
#define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
|
||||
__RTNLGRP_MAX
|
||||
|
||||
+6
-19
@@ -254,25 +254,12 @@ extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long);
|
||||
* The mm counters are not protected by its page_table_lock,
|
||||
* so must be incremented atomically.
|
||||
*/
|
||||
#ifdef ATOMIC64_INIT
|
||||
#define set_mm_counter(mm, member, value) atomic64_set(&(mm)->_##member, value)
|
||||
#define get_mm_counter(mm, member) ((unsigned long)atomic64_read(&(mm)->_##member))
|
||||
#define add_mm_counter(mm, member, value) atomic64_add(value, &(mm)->_##member)
|
||||
#define inc_mm_counter(mm, member) atomic64_inc(&(mm)->_##member)
|
||||
#define dec_mm_counter(mm, member) atomic64_dec(&(mm)->_##member)
|
||||
typedef atomic64_t mm_counter_t;
|
||||
#else /* !ATOMIC64_INIT */
|
||||
/*
|
||||
* The counters wrap back to 0 at 2^32 * PAGE_SIZE,
|
||||
* that is, at 16TB if using 4kB page size.
|
||||
*/
|
||||
#define set_mm_counter(mm, member, value) atomic_set(&(mm)->_##member, value)
|
||||
#define get_mm_counter(mm, member) ((unsigned long)atomic_read(&(mm)->_##member))
|
||||
#define add_mm_counter(mm, member, value) atomic_add(value, &(mm)->_##member)
|
||||
#define inc_mm_counter(mm, member) atomic_inc(&(mm)->_##member)
|
||||
#define dec_mm_counter(mm, member) atomic_dec(&(mm)->_##member)
|
||||
typedef atomic_t mm_counter_t;
|
||||
#endif /* !ATOMIC64_INIT */
|
||||
#define set_mm_counter(mm, member, value) atomic_long_set(&(mm)->_##member, value)
|
||||
#define get_mm_counter(mm, member) ((unsigned long)atomic_long_read(&(mm)->_##member))
|
||||
#define add_mm_counter(mm, member, value) atomic_long_add(value, &(mm)->_##member)
|
||||
#define inc_mm_counter(mm, member) atomic_long_inc(&(mm)->_##member)
|
||||
#define dec_mm_counter(mm, member) atomic_long_dec(&(mm)->_##member)
|
||||
typedef atomic_long_t mm_counter_t;
|
||||
|
||||
#else /* NR_CPUS < CONFIG_SPLIT_PTLOCK_CPUS */
|
||||
/*
|
||||
|
||||
@@ -59,6 +59,12 @@ struct sk_buff;
|
||||
struct sock;
|
||||
struct sockaddr;
|
||||
struct socket;
|
||||
struct flowi;
|
||||
struct dst_entry;
|
||||
struct xfrm_selector;
|
||||
struct xfrm_policy;
|
||||
struct xfrm_state;
|
||||
struct xfrm_user_sec_ctx;
|
||||
|
||||
extern int cap_netlink_send(struct sock *sk, struct sk_buff *skb);
|
||||
extern int cap_netlink_recv(struct sk_buff *skb);
|
||||
@@ -788,6 +794,52 @@ struct swap_info_struct;
|
||||
* which is used to copy security attributes between local stream sockets.
|
||||
* @sk_free_security:
|
||||
* Deallocate security structure.
|
||||
* @sk_getsid:
|
||||
* Retrieve the LSM-specific sid for the sock to enable caching of network
|
||||
* authorizations.
|
||||
*
|
||||
* Security hooks for XFRM operations.
|
||||
*
|
||||
* @xfrm_policy_alloc_security:
|
||||
* @xp contains the xfrm_policy being added to Security Policy Database
|
||||
* used by the XFRM system.
|
||||
* @sec_ctx contains the security context information being provided by
|
||||
* the user-level policy update program (e.g., setkey).
|
||||
* Allocate a security structure to the xp->selector.security field.
|
||||
* The security field is initialized to NULL when the xfrm_policy is
|
||||
* allocated.
|
||||
* Return 0 if operation was successful (memory to allocate, legal context)
|
||||
* @xfrm_policy_clone_security:
|
||||
* @old contains an existing xfrm_policy in the SPD.
|
||||
* @new contains a new xfrm_policy being cloned from old.
|
||||
* Allocate a security structure to the new->selector.security field
|
||||
* that contains the information from the old->selector.security field.
|
||||
* Return 0 if operation was successful (memory to allocate).
|
||||
* @xfrm_policy_free_security:
|
||||
* @xp contains the xfrm_policy
|
||||
* Deallocate xp->selector.security.
|
||||
* @xfrm_state_alloc_security:
|
||||
* @x contains the xfrm_state being added to the Security Association
|
||||
* Database by the XFRM system.
|
||||
* @sec_ctx contains the security context information being provided by
|
||||
* the user-level SA generation program (e.g., setkey or racoon).
|
||||
* Allocate a security structure to the x->sel.security field. The
|
||||
* security field is initialized to NULL when the xfrm_state is
|
||||
* allocated.
|
||||
* Return 0 if operation was successful (memory to allocate, legal context).
|
||||
* @xfrm_state_free_security:
|
||||
* @x contains the xfrm_state.
|
||||
* Deallocate x>sel.security.
|
||||
* @xfrm_policy_lookup:
|
||||
* @xp contains the xfrm_policy for which the access control is being
|
||||
* checked.
|
||||
* @sk_sid contains the sock security label that is used to authorize
|
||||
* access to the policy xp.
|
||||
* @dir contains the direction of the flow (input or output).
|
||||
* Check permission when a sock selects a xfrm_policy for processing
|
||||
* XFRMs on a packet. The hook is called when selecting either a
|
||||
* per-socket policy or a generic xfrm policy.
|
||||
* Return 0 if permission is granted.
|
||||
*
|
||||
* Security hooks affecting all Key Management operations
|
||||
*
|
||||
@@ -1237,8 +1289,18 @@ struct security_operations {
|
||||
int (*socket_getpeersec) (struct socket *sock, char __user *optval, int __user *optlen, unsigned len);
|
||||
int (*sk_alloc_security) (struct sock *sk, int family, gfp_t priority);
|
||||
void (*sk_free_security) (struct sock *sk);
|
||||
unsigned int (*sk_getsid) (struct sock *sk, struct flowi *fl, u8 dir);
|
||||
#endif /* CONFIG_SECURITY_NETWORK */
|
||||
|
||||
#ifdef CONFIG_SECURITY_NETWORK_XFRM
|
||||
int (*xfrm_policy_alloc_security) (struct xfrm_policy *xp, struct xfrm_user_sec_ctx *sec_ctx);
|
||||
int (*xfrm_policy_clone_security) (struct xfrm_policy *old, struct xfrm_policy *new);
|
||||
void (*xfrm_policy_free_security) (struct xfrm_policy *xp);
|
||||
int (*xfrm_state_alloc_security) (struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx);
|
||||
void (*xfrm_state_free_security) (struct xfrm_state *x);
|
||||
int (*xfrm_policy_lookup)(struct xfrm_policy *xp, u32 sk_sid, u8 dir);
|
||||
#endif /* CONFIG_SECURITY_NETWORK_XFRM */
|
||||
|
||||
/* key management security hooks */
|
||||
#ifdef CONFIG_KEYS
|
||||
int (*key_alloc)(struct key *key);
|
||||
@@ -2679,6 +2741,11 @@ static inline void security_sk_free(struct sock *sk)
|
||||
{
|
||||
return security_ops->sk_free_security(sk);
|
||||
}
|
||||
|
||||
static inline unsigned int security_sk_sid(struct sock *sk, struct flowi *fl, u8 dir)
|
||||
{
|
||||
return security_ops->sk_getsid(sk, fl, dir);
|
||||
}
|
||||
#else /* CONFIG_SECURITY_NETWORK */
|
||||
static inline int security_unix_stream_connect(struct socket * sock,
|
||||
struct socket * other,
|
||||
@@ -2795,8 +2862,73 @@ static inline int security_sk_alloc(struct sock *sk, int family, gfp_t priority)
|
||||
static inline void security_sk_free(struct sock *sk)
|
||||
{
|
||||
}
|
||||
|
||||
static inline unsigned int security_sk_sid(struct sock *sk, struct flowi *fl, u8 dir)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_SECURITY_NETWORK */
|
||||
|
||||
#ifdef CONFIG_SECURITY_NETWORK_XFRM
|
||||
static inline int security_xfrm_policy_alloc(struct xfrm_policy *xp, struct xfrm_user_sec_ctx *sec_ctx)
|
||||
{
|
||||
return security_ops->xfrm_policy_alloc_security(xp, sec_ctx);
|
||||
}
|
||||
|
||||
static inline int security_xfrm_policy_clone(struct xfrm_policy *old, struct xfrm_policy *new)
|
||||
{
|
||||
return security_ops->xfrm_policy_clone_security(old, new);
|
||||
}
|
||||
|
||||
static inline void security_xfrm_policy_free(struct xfrm_policy *xp)
|
||||
{
|
||||
security_ops->xfrm_policy_free_security(xp);
|
||||
}
|
||||
|
||||
static inline int security_xfrm_state_alloc(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx)
|
||||
{
|
||||
return security_ops->xfrm_state_alloc_security(x, sec_ctx);
|
||||
}
|
||||
|
||||
static inline void security_xfrm_state_free(struct xfrm_state *x)
|
||||
{
|
||||
security_ops->xfrm_state_free_security(x);
|
||||
}
|
||||
|
||||
static inline int security_xfrm_policy_lookup(struct xfrm_policy *xp, u32 sk_sid, u8 dir)
|
||||
{
|
||||
return security_ops->xfrm_policy_lookup(xp, sk_sid, dir);
|
||||
}
|
||||
#else /* CONFIG_SECURITY_NETWORK_XFRM */
|
||||
static inline int security_xfrm_policy_alloc(struct xfrm_policy *xp, struct xfrm_user_sec_ctx *sec_ctx)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int security_xfrm_policy_clone(struct xfrm_policy *old, struct xfrm_policy *new)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void security_xfrm_policy_free(struct xfrm_policy *xp)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int security_xfrm_state_alloc(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void security_xfrm_state_free(struct xfrm_state *x)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int security_xfrm_policy_lookup(struct xfrm_policy *xp, u32 sk_sid, u8 dir)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_SECURITY_NETWORK_XFRM */
|
||||
|
||||
#ifdef CONFIG_KEYS
|
||||
#ifdef CONFIG_SECURITY
|
||||
static inline int security_key_alloc(struct key *key)
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
|
||||
#define HAVE_ALLOC_SKB /* For the drivers to know */
|
||||
#define HAVE_ALIGNABLE_SKB /* Ditto 8) */
|
||||
#define SLAB_SKB /* Slabified skbuffs */
|
||||
|
||||
#define CHECKSUM_NONE 0
|
||||
#define CHECKSUM_HW 1
|
||||
@@ -134,7 +133,7 @@ struct skb_frag_struct {
|
||||
*/
|
||||
struct skb_shared_info {
|
||||
atomic_t dataref;
|
||||
unsigned int nr_frags;
|
||||
unsigned short nr_frags;
|
||||
unsigned short tso_size;
|
||||
unsigned short tso_segs;
|
||||
unsigned short ufo_size;
|
||||
@@ -1239,6 +1238,8 @@ extern int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb,
|
||||
int hlen,
|
||||
struct iovec *iov);
|
||||
extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb);
|
||||
extern void skb_kill_datagram(struct sock *sk, struct sk_buff *skb,
|
||||
unsigned int flags);
|
||||
extern unsigned int skb_checksum(const struct sk_buff *skb, int offset,
|
||||
int len, unsigned int csum);
|
||||
extern int skb_copy_bits(const struct sk_buff *skb, int offset,
|
||||
|
||||
@@ -27,7 +27,6 @@ struct __kernel_sockaddr_storage {
|
||||
#include <linux/compiler.h> /* __user */
|
||||
|
||||
extern int sysctl_somaxconn;
|
||||
extern void sock_init(void);
|
||||
#ifdef CONFIG_PROC_FS
|
||||
struct seq_file;
|
||||
extern void socket_seq_show(struct seq_file *seq);
|
||||
|
||||
@@ -59,8 +59,7 @@
|
||||
/*
|
||||
* Must define these before including other files, inline functions need them
|
||||
*/
|
||||
#define LOCK_SECTION_NAME \
|
||||
".text.lock." __stringify(KBUILD_BASENAME)
|
||||
#define LOCK_SECTION_NAME ".text.lock."KBUILD_BASENAME
|
||||
|
||||
#define LOCK_SECTION_START(extra) \
|
||||
".subsection 1\n\t" \
|
||||
|
||||
@@ -49,7 +49,6 @@ struct rpc_clnt {
|
||||
|
||||
unsigned int cl_softrtry : 1,/* soft timeouts */
|
||||
cl_intr : 1,/* interruptible */
|
||||
cl_chatty : 1,/* be verbose */
|
||||
cl_autobind : 1,/* use getport() */
|
||||
cl_oneshot : 1,/* dispose after use */
|
||||
cl_dead : 1;/* abandoned */
|
||||
@@ -126,7 +125,8 @@ int rpc_register(u32, u32, int, unsigned short, int *);
|
||||
void rpc_call_setup(struct rpc_task *, struct rpc_message *, int);
|
||||
|
||||
int rpc_call_async(struct rpc_clnt *clnt, struct rpc_message *msg,
|
||||
int flags, rpc_action callback, void *clntdata);
|
||||
int flags, const struct rpc_call_ops *tk_ops,
|
||||
void *calldata);
|
||||
int rpc_call_sync(struct rpc_clnt *clnt, struct rpc_message *msg,
|
||||
int flags);
|
||||
void rpc_restart_call(struct rpc_task *);
|
||||
@@ -134,6 +134,7 @@ void rpc_clnt_sigmask(struct rpc_clnt *clnt, sigset_t *oldset);
|
||||
void rpc_clnt_sigunmask(struct rpc_clnt *clnt, sigset_t *oldset);
|
||||
void rpc_setbufsize(struct rpc_clnt *, unsigned int, unsigned int);
|
||||
size_t rpc_max_payload(struct rpc_clnt *);
|
||||
void rpc_force_rebind(struct rpc_clnt *);
|
||||
int rpc_ping(struct rpc_clnt *clnt, int flags);
|
||||
|
||||
static __inline__
|
||||
|
||||
@@ -48,7 +48,7 @@ u32 spkm3_read_token(struct spkm3_ctx *ctx, struct xdr_netobj *read_token, struc
|
||||
#define CKSUMTYPE_RSA_MD5 0x0007
|
||||
|
||||
s32 make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body,
|
||||
struct xdr_netobj *cksum);
|
||||
int body_offset, struct xdr_netobj *cksum);
|
||||
void asn1_bitstring_len(struct xdr_netobj *in, int *enclen, int *zerobits);
|
||||
int decode_asn1_bitstring(struct xdr_netobj *out, char *in, int enclen,
|
||||
int explen);
|
||||
|
||||
@@ -27,6 +27,7 @@ struct rpc_message {
|
||||
struct rpc_cred * rpc_cred; /* Credentials */
|
||||
};
|
||||
|
||||
struct rpc_call_ops;
|
||||
struct rpc_wait_queue;
|
||||
struct rpc_wait {
|
||||
struct list_head list; /* wait queue links */
|
||||
@@ -41,6 +42,7 @@ struct rpc_task {
|
||||
#ifdef RPC_DEBUG
|
||||
unsigned long tk_magic; /* 0xf00baa */
|
||||
#endif
|
||||
atomic_t tk_count; /* Reference count */
|
||||
struct list_head tk_task; /* global list of tasks */
|
||||
struct rpc_clnt * tk_client; /* RPC client */
|
||||
struct rpc_rqst * tk_rqstp; /* RPC request */
|
||||
@@ -50,8 +52,6 @@ struct rpc_task {
|
||||
* RPC call state
|
||||
*/
|
||||
struct rpc_message tk_msg; /* RPC call info */
|
||||
__u32 * tk_buffer; /* XDR buffer */
|
||||
size_t tk_bufsize;
|
||||
__u8 tk_garb_retry;
|
||||
__u8 tk_cred_retry;
|
||||
|
||||
@@ -61,13 +61,12 @@ struct rpc_task {
|
||||
* timeout_fn to be executed by timer bottom half
|
||||
* callback to be executed after waking up
|
||||
* action next procedure for async tasks
|
||||
* exit exit async task and report to caller
|
||||
* tk_ops caller callbacks
|
||||
*/
|
||||
void (*tk_timeout_fn)(struct rpc_task *);
|
||||
void (*tk_callback)(struct rpc_task *);
|
||||
void (*tk_action)(struct rpc_task *);
|
||||
void (*tk_exit)(struct rpc_task *);
|
||||
void (*tk_release)(struct rpc_task *);
|
||||
const struct rpc_call_ops *tk_ops;
|
||||
void * tk_calldata;
|
||||
|
||||
/*
|
||||
@@ -78,7 +77,6 @@ struct rpc_task {
|
||||
struct timer_list tk_timer; /* kernel timer */
|
||||
unsigned long tk_timeout; /* timeout for rpc_sleep() */
|
||||
unsigned short tk_flags; /* misc flags */
|
||||
unsigned char tk_active : 1;/* Task has been activated */
|
||||
unsigned char tk_priority : 2;/* Task priority */
|
||||
unsigned long tk_runstate; /* Task run status */
|
||||
struct workqueue_struct *tk_workqueue; /* Normally rpciod, but could
|
||||
@@ -111,6 +109,13 @@ struct rpc_task {
|
||||
|
||||
typedef void (*rpc_action)(struct rpc_task *);
|
||||
|
||||
struct rpc_call_ops {
|
||||
void (*rpc_call_prepare)(struct rpc_task *, void *);
|
||||
void (*rpc_call_done)(struct rpc_task *, void *);
|
||||
void (*rpc_release)(void *);
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* RPC task flags
|
||||
*/
|
||||
@@ -129,7 +134,6 @@ typedef void (*rpc_action)(struct rpc_task *);
|
||||
#define RPC_IS_SWAPPER(t) ((t)->tk_flags & RPC_TASK_SWAPPER)
|
||||
#define RPC_DO_ROOTOVERRIDE(t) ((t)->tk_flags & RPC_TASK_ROOTCREDS)
|
||||
#define RPC_ASSASSINATED(t) ((t)->tk_flags & RPC_TASK_KILLED)
|
||||
#define RPC_IS_ACTIVATED(t) ((t)->tk_active)
|
||||
#define RPC_DO_CALLBACK(t) ((t)->tk_callback != NULL)
|
||||
#define RPC_IS_SOFT(t) ((t)->tk_flags & RPC_TASK_SOFT)
|
||||
#define RPC_TASK_UNINTERRUPTIBLE(t) ((t)->tk_flags & RPC_TASK_NOINTR)
|
||||
@@ -138,6 +142,7 @@ typedef void (*rpc_action)(struct rpc_task *);
|
||||
#define RPC_TASK_QUEUED 1
|
||||
#define RPC_TASK_WAKEUP 2
|
||||
#define RPC_TASK_HAS_TIMER 3
|
||||
#define RPC_TASK_ACTIVE 4
|
||||
|
||||
#define RPC_IS_RUNNING(t) (test_bit(RPC_TASK_RUNNING, &(t)->tk_runstate))
|
||||
#define rpc_set_running(t) (set_bit(RPC_TASK_RUNNING, &(t)->tk_runstate))
|
||||
@@ -168,6 +173,15 @@ typedef void (*rpc_action)(struct rpc_task *);
|
||||
smp_mb__after_clear_bit(); \
|
||||
} while (0)
|
||||
|
||||
#define RPC_IS_ACTIVATED(t) (test_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate))
|
||||
#define rpc_set_active(t) (set_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate))
|
||||
#define rpc_clear_active(t) \
|
||||
do { \
|
||||
smp_mb__before_clear_bit(); \
|
||||
clear_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate); \
|
||||
smp_mb__after_clear_bit(); \
|
||||
} while(0)
|
||||
|
||||
/*
|
||||
* Task priorities.
|
||||
* Note: if you change these, you must also change
|
||||
@@ -228,11 +242,16 @@ struct rpc_wait_queue {
|
||||
/*
|
||||
* Function prototypes
|
||||
*/
|
||||
struct rpc_task *rpc_new_task(struct rpc_clnt *, rpc_action, int flags);
|
||||
struct rpc_task *rpc_new_task(struct rpc_clnt *, int flags,
|
||||
const struct rpc_call_ops *ops, void *data);
|
||||
struct rpc_task *rpc_run_task(struct rpc_clnt *clnt, int flags,
|
||||
const struct rpc_call_ops *ops, void *data);
|
||||
struct rpc_task *rpc_new_child(struct rpc_clnt *, struct rpc_task *parent);
|
||||
void rpc_init_task(struct rpc_task *, struct rpc_clnt *,
|
||||
rpc_action exitfunc, int flags);
|
||||
void rpc_init_task(struct rpc_task *task, struct rpc_clnt *clnt,
|
||||
int flags, const struct rpc_call_ops *ops,
|
||||
void *data);
|
||||
void rpc_release_task(struct rpc_task *);
|
||||
void rpc_exit_task(struct rpc_task *);
|
||||
void rpc_killall_tasks(struct rpc_clnt *);
|
||||
int rpc_execute(struct rpc_task *);
|
||||
void rpc_run_child(struct rpc_task *parent, struct rpc_task *child,
|
||||
@@ -247,9 +266,11 @@ struct rpc_task *rpc_wake_up_next(struct rpc_wait_queue *);
|
||||
void rpc_wake_up_status(struct rpc_wait_queue *, int);
|
||||
void rpc_delay(struct rpc_task *, unsigned long);
|
||||
void * rpc_malloc(struct rpc_task *, size_t);
|
||||
void rpc_free(struct rpc_task *);
|
||||
int rpciod_up(void);
|
||||
void rpciod_down(void);
|
||||
void rpciod_wake_up(void);
|
||||
int __rpc_wait_for_completion_task(struct rpc_task *task, int (*)(void *));
|
||||
#ifdef RPC_DEBUG
|
||||
void rpc_show_tasks(void);
|
||||
#endif
|
||||
@@ -259,7 +280,12 @@ void rpc_destroy_mempool(void);
|
||||
static inline void rpc_exit(struct rpc_task *task, int status)
|
||||
{
|
||||
task->tk_status = status;
|
||||
task->tk_action = NULL;
|
||||
task->tk_action = rpc_exit_task;
|
||||
}
|
||||
|
||||
static inline int rpc_wait_for_completion_task(struct rpc_task *task)
|
||||
{
|
||||
return __rpc_wait_for_completion_task(task, NULL);
|
||||
}
|
||||
|
||||
#ifdef RPC_DEBUG
|
||||
|
||||
@@ -91,7 +91,6 @@ struct xdr_buf {
|
||||
u32 * xdr_encode_opaque_fixed(u32 *p, const void *ptr, unsigned int len);
|
||||
u32 * xdr_encode_opaque(u32 *p, const void *ptr, unsigned int len);
|
||||
u32 * xdr_encode_string(u32 *p, const char *s);
|
||||
u32 * xdr_decode_string(u32 *p, char **sp, int *lenp, int maxlen);
|
||||
u32 * xdr_decode_string_inplace(u32 *p, char **sp, int *lenp, int maxlen);
|
||||
u32 * xdr_encode_netobj(u32 *p, const struct xdr_netobj *);
|
||||
u32 * xdr_decode_netobj(u32 *p, struct xdr_netobj *);
|
||||
@@ -134,11 +133,6 @@ xdr_adjust_iovec(struct kvec *iov, u32 *p)
|
||||
return iov->iov_len = ((u8 *) p - (u8 *) iov->iov_base);
|
||||
}
|
||||
|
||||
/*
|
||||
* Maximum number of iov's we use.
|
||||
*/
|
||||
#define MAX_IOVEC (12)
|
||||
|
||||
/*
|
||||
* XDR buffer helper functions
|
||||
*/
|
||||
|
||||
@@ -79,21 +79,19 @@ struct rpc_rqst {
|
||||
void (*rq_release_snd_buf)(struct rpc_rqst *); /* release rq_enc_pages */
|
||||
struct list_head rq_list;
|
||||
|
||||
__u32 * rq_buffer; /* XDR encode buffer */
|
||||
size_t rq_bufsize;
|
||||
|
||||
struct xdr_buf rq_private_buf; /* The receive buffer
|
||||
* used in the softirq.
|
||||
*/
|
||||
unsigned long rq_majortimeo; /* major timeout alarm */
|
||||
unsigned long rq_timeout; /* Current timeout value */
|
||||
unsigned int rq_retries; /* # of retries */
|
||||
/*
|
||||
* For authentication (e.g. auth_des)
|
||||
*/
|
||||
u32 rq_creddata[2];
|
||||
|
||||
/*
|
||||
* Partial send handling
|
||||
*/
|
||||
|
||||
u32 rq_bytes_sent; /* Bytes we have sent */
|
||||
|
||||
unsigned long rq_xtime; /* when transmitted */
|
||||
@@ -106,7 +104,10 @@ struct rpc_xprt_ops {
|
||||
void (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize);
|
||||
int (*reserve_xprt)(struct rpc_task *task);
|
||||
void (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task);
|
||||
void (*set_port)(struct rpc_xprt *xprt, unsigned short port);
|
||||
void (*connect)(struct rpc_task *task);
|
||||
void * (*buf_alloc)(struct rpc_task *task, size_t size);
|
||||
void (*buf_free)(struct rpc_task *task);
|
||||
int (*send_request)(struct rpc_task *task);
|
||||
void (*set_retrans_timeout)(struct rpc_task *task);
|
||||
void (*timer)(struct rpc_task *task);
|
||||
@@ -253,6 +254,7 @@ int xs_setup_tcp(struct rpc_xprt *xprt, struct rpc_timeout *to);
|
||||
#define XPRT_LOCKED (0)
|
||||
#define XPRT_CONNECTED (1)
|
||||
#define XPRT_CONNECTING (2)
|
||||
#define XPRT_CLOSE_WAIT (3)
|
||||
|
||||
static inline void xprt_set_connected(struct rpc_xprt *xprt)
|
||||
{
|
||||
|
||||
@@ -14,11 +14,7 @@
|
||||
typedef struct pbe {
|
||||
unsigned long address; /* address of the copy */
|
||||
unsigned long orig_address; /* original address of page */
|
||||
swp_entry_t swap_address;
|
||||
|
||||
struct pbe *next; /* also used as scratch space at
|
||||
* end of page (see link, diskpage)
|
||||
*/
|
||||
struct pbe *next;
|
||||
} suspend_pagedir_t;
|
||||
|
||||
#define for_each_pbe(pbe, pblist) \
|
||||
@@ -77,6 +73,6 @@ unsigned long get_safe_page(gfp_t gfp_mask);
|
||||
* XXX: We try to keep some more pages free so that I/O operations succeed
|
||||
* without paging. Might this be more?
|
||||
*/
|
||||
#define PAGES_FOR_IO 512
|
||||
#define PAGES_FOR_IO 1024
|
||||
|
||||
#endif /* _LINUX_SWSUSP_H */
|
||||
|
||||
@@ -172,7 +172,6 @@ extern void swap_setup(void);
|
||||
|
||||
/* linux/mm/vmscan.c */
|
||||
extern int try_to_free_pages(struct zone **, gfp_t);
|
||||
extern int zone_reclaim(struct zone *, gfp_t, unsigned int);
|
||||
extern int shrink_all_memory(int);
|
||||
extern int vm_swappiness;
|
||||
|
||||
@@ -210,6 +209,7 @@ extern unsigned int nr_swapfiles;
|
||||
extern struct swap_info_struct swap_info[];
|
||||
extern void si_swapinfo(struct sysinfo *);
|
||||
extern swp_entry_t get_swap_page(void);
|
||||
extern swp_entry_t get_swap_page_of_type(int type);
|
||||
extern int swap_duplicate(swp_entry_t);
|
||||
extern int valid_swaphandles(swp_entry_t, unsigned long *);
|
||||
extern void swap_free(swp_entry_t);
|
||||
|
||||
@@ -124,7 +124,7 @@ enum
|
||||
KERN_OVERFLOWUID=46, /* int: overflow UID */
|
||||
KERN_OVERFLOWGID=47, /* int: overflow GID */
|
||||
KERN_SHMPATH=48, /* string: path to shm fs */
|
||||
KERN_HOTPLUG=49, /* string: path to hotplug policy agent */
|
||||
KERN_HOTPLUG=49, /* string: path to uevent helper (deprecated) */
|
||||
KERN_IEEE_EMULATION_WARNINGS=50, /* int: unimplemented ieee instructions */
|
||||
KERN_S390_USER_DEBUG_LOGGING=51, /* int: dumps of user faults */
|
||||
KERN_CORE_USES_PID=52, /* int: use core or core.%pid */
|
||||
@@ -390,6 +390,7 @@ enum
|
||||
NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=109,
|
||||
NET_TCP_CONG_CONTROL=110,
|
||||
NET_TCP_ABC=111,
|
||||
NET_IPV4_IPFRAG_MAX_DIST=112,
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -670,6 +671,9 @@ enum {
|
||||
NET_DECNET_DST_GC_INTERVAL = 9,
|
||||
NET_DECNET_CONF = 10,
|
||||
NET_DECNET_NO_FC_MAX_CWND = 11,
|
||||
NET_DECNET_MEM = 12,
|
||||
NET_DECNET_RMEM = 13,
|
||||
NET_DECNET_WMEM = 14,
|
||||
NET_DECNET_DEBUG_LEVEL = 255
|
||||
};
|
||||
|
||||
|
||||
+1
-20
@@ -55,22 +55,6 @@ struct tcphdr {
|
||||
__u16 urg_ptr;
|
||||
};
|
||||
|
||||
#define TCP_ACTION_FIN (1 << 7)
|
||||
|
||||
enum {
|
||||
TCPF_ESTABLISHED = (1 << 1),
|
||||
TCPF_SYN_SENT = (1 << 2),
|
||||
TCPF_SYN_RECV = (1 << 3),
|
||||
TCPF_FIN_WAIT1 = (1 << 4),
|
||||
TCPF_FIN_WAIT2 = (1 << 5),
|
||||
TCPF_TIME_WAIT = (1 << 6),
|
||||
TCPF_CLOSE = (1 << 7),
|
||||
TCPF_CLOSE_WAIT = (1 << 8),
|
||||
TCPF_LAST_ACK = (1 << 9),
|
||||
TCPF_LISTEN = (1 << 10),
|
||||
TCPF_CLOSING = (1 << 11)
|
||||
};
|
||||
|
||||
/*
|
||||
* The union cast uses a gcc extension to avoid aliasing problems
|
||||
* (union is compatible to any of its members)
|
||||
@@ -254,10 +238,9 @@ struct tcp_sock {
|
||||
__u32 snd_wl1; /* Sequence for window update */
|
||||
__u32 snd_wnd; /* The window we expect to receive */
|
||||
__u32 max_window; /* Maximal window ever seen from peer */
|
||||
__u32 pmtu_cookie; /* Last pmtu seen by socket */
|
||||
__u32 mss_cache; /* Cached effective mss, not including SACKS */
|
||||
__u16 xmit_size_goal; /* Goal for segmenting output packets */
|
||||
__u16 ext_header_len; /* Network protocol overhead (IP/IPv6 options) */
|
||||
/* XXX Two bytes hole, try to pack */
|
||||
|
||||
__u32 window_clamp; /* Maximal window to advertise */
|
||||
__u32 rcv_ssthresh; /* Current window clamp */
|
||||
@@ -295,8 +278,6 @@ struct tcp_sock {
|
||||
|
||||
struct sk_buff_head out_of_order_queue; /* Out of order segments go here */
|
||||
|
||||
struct tcp_func *af_specific; /* Operations which are AF_INET{4,6} specific */
|
||||
|
||||
__u32 rcv_wnd; /* Current receiver window */
|
||||
__u32 rcv_wup; /* rcv_nxt on last window update sent */
|
||||
__u32 write_seq; /* Tail(+1) of data held in tcp send buffer */
|
||||
|
||||
@@ -95,6 +95,7 @@ struct itimerval;
|
||||
extern int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue);
|
||||
extern int do_getitimer(int which, struct itimerval *value);
|
||||
extern void getnstimeofday (struct timespec *tv);
|
||||
extern void getnstimestamp(struct timespec *ts);
|
||||
|
||||
extern struct timespec timespec_trunc(struct timespec t, unsigned gran);
|
||||
|
||||
|
||||
@@ -13,11 +13,6 @@
|
||||
* http://www.osta.org/ * http://www.ecma.ch/
|
||||
* http://www.iso.org/
|
||||
*
|
||||
* CONTACTS
|
||||
* E-mail regarding any portion of the Linux UDF file system should be
|
||||
* directed to the development team mailing list (run by majordomo):
|
||||
* linux_udf@hpesjro.fc.hp.com
|
||||
*
|
||||
* COPYRIGHT
|
||||
* This file is distributed under the terms of the GNU General Public
|
||||
* License (GPL). Copies of the GPL can be obtained from:
|
||||
|
||||
@@ -3,11 +3,6 @@
|
||||
*
|
||||
* This file is intended for the Linux kernel/module.
|
||||
*
|
||||
* CONTACTS
|
||||
* E-mail regarding any portion of the Linux UDF file system should be
|
||||
* directed to the development team mailing list (run by majordomo):
|
||||
* linux_udf@hpesjro.fc.hp.com
|
||||
*
|
||||
* COPYRIGHT
|
||||
* This file is distributed under the terms of the GNU General Public
|
||||
* License (GPL). Copies of the GPL can be obtained from:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user