mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 06:03:36 -04:00
Merge branch 'linus' into core/iommu
Conflicts: arch/x86/Kconfig
This commit is contained in:
commit
b0d44c0dbb
3749 changed files with 273788 additions and 162762 deletions
|
|
@ -115,6 +115,7 @@ header-y += mqueue.h
|
|||
header-y += mtio.h
|
||||
header-y += ncp_no.h
|
||||
header-y += neighbour.h
|
||||
header-y += net_dropmon.h
|
||||
header-y += netfilter_arp.h
|
||||
header-y += netrom.h
|
||||
header-y += nfs2.h
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ typedef int (*acpi_table_handler) (struct acpi_table_header *table);
|
|||
typedef int (*acpi_table_entry_handler) (struct acpi_subtable_header *header, const unsigned long end);
|
||||
|
||||
char * __acpi_map_table (unsigned long phys_addr, unsigned long size);
|
||||
void __acpi_unmap_table(char *map, unsigned long size);
|
||||
int early_acpi_boot_init(void);
|
||||
int acpi_boot_init (void);
|
||||
int acpi_boot_table_init (void);
|
||||
|
|
|
|||
|
|
@ -77,20 +77,20 @@ typedef struct _agp_setup {
|
|||
* The "prot" down below needs still a "sleep" flag somehow ...
|
||||
*/
|
||||
typedef struct _agp_segment {
|
||||
off_t pg_start; /* starting page to populate */
|
||||
size_t pg_count; /* number of pages */
|
||||
int prot; /* prot flags for mmap */
|
||||
__kernel_off_t pg_start; /* starting page to populate */
|
||||
__kernel_size_t pg_count; /* number of pages */
|
||||
int prot; /* prot flags for mmap */
|
||||
} agp_segment;
|
||||
|
||||
typedef struct _agp_region {
|
||||
pid_t pid; /* pid of process */
|
||||
size_t seg_count; /* number of segments */
|
||||
__kernel_pid_t pid; /* pid of process */
|
||||
__kernel_size_t seg_count; /* number of segments */
|
||||
struct _agp_segment *seg_list;
|
||||
} agp_region;
|
||||
|
||||
typedef struct _agp_allocate {
|
||||
int key; /* tag of allocation */
|
||||
size_t pg_count; /* number of pages */
|
||||
__kernel_size_t pg_count;/* number of pages */
|
||||
__u32 type; /* 0 == normal, other devspec */
|
||||
__u32 physical; /* device specific (some devices
|
||||
* need a phys address of the
|
||||
|
|
@ -100,7 +100,7 @@ typedef struct _agp_allocate {
|
|||
|
||||
typedef struct _agp_bind {
|
||||
int key; /* tag of allocation */
|
||||
off_t pg_start; /* starting page to populate */
|
||||
__kernel_off_t pg_start;/* starting page to populate */
|
||||
} agp_bind;
|
||||
|
||||
typedef struct _agp_unbind {
|
||||
|
|
|
|||
|
|
@ -235,8 +235,6 @@ struct Outgoing {
|
|||
|
||||
|
||||
struct arcnet_local {
|
||||
struct net_device_stats stats;
|
||||
|
||||
uint8_t config, /* current value of CONFIG register */
|
||||
timeout, /* Extended timeout for COM20020 */
|
||||
backplane, /* Backplane flag for COM20020 */
|
||||
|
|
@ -335,7 +333,12 @@ void arcnet_dump_skb(struct net_device *dev, struct sk_buff *skb, char *desc);
|
|||
|
||||
void arcnet_unregister_proto(struct ArcProto *proto);
|
||||
irqreturn_t arcnet_interrupt(int irq, void *dev_id);
|
||||
struct net_device *alloc_arcdev(char *name);
|
||||
struct net_device *alloc_arcdev(const char *name);
|
||||
|
||||
int arcnet_open(struct net_device *dev);
|
||||
int arcnet_close(struct net_device *dev);
|
||||
int arcnet_send_packet(struct sk_buff *skb, struct net_device *dev);
|
||||
void arcnet_timeout(struct net_device *dev);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* _LINUX_ARCDEVICE_H */
|
||||
|
|
|
|||
|
|
@ -108,6 +108,8 @@ enum {
|
|||
ATA_PIO5 = ATA_PIO4 | (1 << 5),
|
||||
ATA_PIO6 = ATA_PIO5 | (1 << 6),
|
||||
|
||||
ATA_PIO4_ONLY = (1 << 4),
|
||||
|
||||
ATA_SWDMA0 = (1 << 0),
|
||||
ATA_SWDMA1 = ATA_SWDMA0 | (1 << 1),
|
||||
ATA_SWDMA2 = ATA_SWDMA1 | (1 << 2),
|
||||
|
|
@ -117,6 +119,8 @@ enum {
|
|||
ATA_MWDMA0 = (1 << 0),
|
||||
ATA_MWDMA1 = ATA_MWDMA0 | (1 << 1),
|
||||
ATA_MWDMA2 = ATA_MWDMA1 | (1 << 2),
|
||||
ATA_MWDMA3 = ATA_MWDMA2 | (1 << 3),
|
||||
ATA_MWDMA4 = ATA_MWDMA3 | (1 << 4),
|
||||
|
||||
ATA_MWDMA12_ONLY = (1 << 1) | (1 << 2),
|
||||
ATA_MWDMA2_ONLY = (1 << 2),
|
||||
|
|
@ -131,6 +135,8 @@ enum {
|
|||
ATA_UDMA7 = ATA_UDMA6 | (1 << 7),
|
||||
/* ATA_UDMA7 is just for completeness... doesn't exist (yet?). */
|
||||
|
||||
ATA_UDMA24_ONLY = (1 << 2) | (1 << 4),
|
||||
|
||||
ATA_UDMA_MASK_40C = ATA_UDMA2, /* udma0-2 */
|
||||
|
||||
/* DMA-related */
|
||||
|
|
@ -244,8 +250,6 @@ enum {
|
|||
ATA_CMD_MEDIA_UNLOCK = 0xDF,
|
||||
/* marked obsolete in the ATA/ATAPI-7 spec */
|
||||
ATA_CMD_RESTORE = 0x10,
|
||||
/* EXABYTE specific */
|
||||
ATA_EXABYTE_ENABLE_NEST = 0xF0,
|
||||
|
||||
/* READ_LOG_EXT pages */
|
||||
ATA_LOG_SATA_NCQ = 0x10,
|
||||
|
|
|
|||
28
include/linux/ath9k_platform.h
Normal file
28
include/linux/ath9k_platform.h
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* Copyright (c) 2008 Atheros Communications Inc.
|
||||
* Copyright (c) 2009 Gabor Juhos <juhosg@openwrt.org>
|
||||
* Copyright (c) 2009 Imre Kaloz <kaloz@openwrt.org>
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_ATH9K_PLATFORM_H
|
||||
#define _LINUX_ATH9K_PLATFORM_H
|
||||
|
||||
#define ATH9K_PLAT_EEP_MAX_WORDS 2048
|
||||
|
||||
struct ath9k_platform_data {
|
||||
u16 eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS];
|
||||
};
|
||||
|
||||
#endif /* _LINUX_ATH9K_PLATFORM_H */
|
||||
|
|
@ -11,6 +11,7 @@
|
|||
#include <linux/atmioc.h>
|
||||
#include <linux/atm.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/* ATM lec daemon control socket */
|
||||
#define ATMLEC_CTRL _IO('a', ATMIOC_LANE)
|
||||
|
|
@ -78,8 +79,8 @@ struct atmlec_msg {
|
|||
} normal;
|
||||
struct atmlec_config_msg config;
|
||||
struct {
|
||||
uint16_t lec_id; /* requestor lec_id */
|
||||
uint32_t tran_id; /* transaction id */
|
||||
__u16 lec_id; /* requestor lec_id */
|
||||
__u32 tran_id; /* transaction id */
|
||||
unsigned char mac_addr[ETH_ALEN]; /* dst mac addr */
|
||||
unsigned char atm_addr[ATM_ESA_LEN]; /* reqestor ATM addr */
|
||||
} proxy; /*
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include <linux/atmapi.h>
|
||||
#include <linux/atmioc.h>
|
||||
#include <linux/atm.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define ATMMPC_CTRL _IO('a', ATMIOC_MPOA)
|
||||
#define ATMMPC_DATA _IO('a', ATMIOC_MPOA+1)
|
||||
|
|
@ -18,39 +19,39 @@ struct atmmpc_ioc {
|
|||
};
|
||||
|
||||
typedef struct in_ctrl_info {
|
||||
uint8_t Last_NHRP_CIE_code;
|
||||
uint8_t Last_Q2931_cause_value;
|
||||
uint8_t eg_MPC_ATM_addr[ATM_ESA_LEN];
|
||||
__u8 Last_NHRP_CIE_code;
|
||||
__u8 Last_Q2931_cause_value;
|
||||
__u8 eg_MPC_ATM_addr[ATM_ESA_LEN];
|
||||
__be32 tag;
|
||||
__be32 in_dst_ip; /* IP address this ingress MPC sends packets to */
|
||||
uint16_t holding_time;
|
||||
uint32_t request_id;
|
||||
__u16 holding_time;
|
||||
__u32 request_id;
|
||||
} in_ctrl_info;
|
||||
|
||||
typedef struct eg_ctrl_info {
|
||||
uint8_t DLL_header[256];
|
||||
uint8_t DH_length;
|
||||
__u8 DLL_header[256];
|
||||
__u8 DH_length;
|
||||
__be32 cache_id;
|
||||
__be32 tag;
|
||||
__be32 mps_ip;
|
||||
__be32 eg_dst_ip; /* IP address to which ingress MPC sends packets */
|
||||
uint8_t in_MPC_data_ATM_addr[ATM_ESA_LEN];
|
||||
uint16_t holding_time;
|
||||
__u8 in_MPC_data_ATM_addr[ATM_ESA_LEN];
|
||||
__u16 holding_time;
|
||||
} eg_ctrl_info;
|
||||
|
||||
struct mpc_parameters {
|
||||
uint16_t mpc_p1; /* Shortcut-Setup Frame Count */
|
||||
uint16_t mpc_p2; /* Shortcut-Setup Frame Time */
|
||||
uint8_t mpc_p3[8]; /* Flow-detection Protocols */
|
||||
uint16_t mpc_p4; /* MPC Initial Retry Time */
|
||||
uint16_t mpc_p5; /* MPC Retry Time Maximum */
|
||||
uint16_t mpc_p6; /* Hold Down Time */
|
||||
__u16 mpc_p1; /* Shortcut-Setup Frame Count */
|
||||
__u16 mpc_p2; /* Shortcut-Setup Frame Time */
|
||||
__u8 mpc_p3[8]; /* Flow-detection Protocols */
|
||||
__u16 mpc_p4; /* MPC Initial Retry Time */
|
||||
__u16 mpc_p5; /* MPC Retry Time Maximum */
|
||||
__u16 mpc_p6; /* Hold Down Time */
|
||||
} ;
|
||||
|
||||
struct k_message {
|
||||
uint16_t type;
|
||||
__u16 type;
|
||||
__be32 ip_mask;
|
||||
uint8_t MPS_ctrl[ATM_ESA_LEN];
|
||||
__u8 MPS_ctrl[ATM_ESA_LEN];
|
||||
union {
|
||||
in_ctrl_info in_info;
|
||||
eg_ctrl_info eg_info;
|
||||
|
|
@ -61,11 +62,11 @@ struct k_message {
|
|||
|
||||
struct llc_snap_hdr {
|
||||
/* RFC 1483 LLC/SNAP encapsulation for routed IP PDUs */
|
||||
uint8_t dsap; /* Destination Service Access Point (0xAA) */
|
||||
uint8_t ssap; /* Source Service Access Point (0xAA) */
|
||||
uint8_t ui; /* Unnumbered Information (0x03) */
|
||||
uint8_t org[3]; /* Organizational identification (0x000000) */
|
||||
uint8_t type[2]; /* Ether type (for IP) (0x0800) */
|
||||
__u8 dsap; /* Destination Service Access Point (0xAA) */
|
||||
__u8 ssap; /* Source Service Access Point (0xAA) */
|
||||
__u8 ui; /* Unnumbered Information (0x03) */
|
||||
__u8 org[3]; /* Organizational identification (0x000000) */
|
||||
__u8 type[2]; /* Ether type (for IP) (0x0800) */
|
||||
};
|
||||
|
||||
/* TLVs this MPC recognizes */
|
||||
|
|
|
|||
|
|
@ -36,7 +36,8 @@
|
|||
* 1500 - 1599 kernel LSPP events
|
||||
* 1600 - 1699 kernel crypto events
|
||||
* 1700 - 1799 kernel anomaly records
|
||||
* 1800 - 1999 future kernel use (maybe integrity labels and related events)
|
||||
* 1800 - 1899 kernel integrity events
|
||||
* 1900 - 1999 future kernel use
|
||||
* 2000 is for otherwise unclassified kernel audit messages (legacy)
|
||||
* 2001 - 2099 unused (kernel)
|
||||
* 2100 - 2199 user space anomaly records
|
||||
|
|
@ -125,6 +126,12 @@
|
|||
#define AUDIT_LAST_KERN_ANOM_MSG 1799
|
||||
#define AUDIT_ANOM_PROMISCUOUS 1700 /* Device changed promiscuous mode */
|
||||
#define AUDIT_ANOM_ABEND 1701 /* Process ended abnormally */
|
||||
#define AUDIT_INTEGRITY_DATA 1800 /* Data integrity verification */
|
||||
#define AUDIT_INTEGRITY_METADATA 1801 /* Metadata integrity verification */
|
||||
#define AUDIT_INTEGRITY_STATUS 1802 /* Integrity enable status */
|
||||
#define AUDIT_INTEGRITY_HASH 1803 /* Integrity HASH type */
|
||||
#define AUDIT_INTEGRITY_PCR 1804 /* PCR invalidation msgs */
|
||||
#define AUDIT_INTEGRITY_RULE 1805 /* policy rule */
|
||||
|
||||
#define AUDIT_KERNEL 2000 /* Asynchronous audit record. NOT A REQUEST. */
|
||||
|
||||
|
|
|
|||
|
|
@ -426,9 +426,6 @@ struct bio_set {
|
|||
unsigned int front_pad;
|
||||
|
||||
mempool_t *bio_pool;
|
||||
#if defined(CONFIG_BLK_DEV_INTEGRITY)
|
||||
mempool_t *bio_integrity_pool;
|
||||
#endif
|
||||
mempool_t *bvec_pool;
|
||||
};
|
||||
|
||||
|
|
@ -519,9 +516,8 @@ static inline int bio_has_data(struct bio *bio)
|
|||
|
||||
#define bio_integrity(bio) (bio->bi_integrity != NULL)
|
||||
|
||||
extern struct bio_integrity_payload *bio_integrity_alloc_bioset(struct bio *, gfp_t, unsigned int, struct bio_set *);
|
||||
extern struct bio_integrity_payload *bio_integrity_alloc(struct bio *, gfp_t, unsigned int);
|
||||
extern void bio_integrity_free(struct bio *, struct bio_set *);
|
||||
extern void bio_integrity_free(struct bio *);
|
||||
extern int bio_integrity_add_page(struct bio *, struct page *, unsigned int, unsigned int);
|
||||
extern int bio_integrity_enabled(struct bio *bio);
|
||||
extern int bio_integrity_set_tag(struct bio *, void *, unsigned int);
|
||||
|
|
@ -531,27 +527,21 @@ extern void bio_integrity_endio(struct bio *, int);
|
|||
extern void bio_integrity_advance(struct bio *, unsigned int);
|
||||
extern void bio_integrity_trim(struct bio *, unsigned int, unsigned int);
|
||||
extern void bio_integrity_split(struct bio *, struct bio_pair *, int);
|
||||
extern int bio_integrity_clone(struct bio *, struct bio *, gfp_t, struct bio_set *);
|
||||
extern int bioset_integrity_create(struct bio_set *, int);
|
||||
extern void bioset_integrity_free(struct bio_set *);
|
||||
extern void bio_integrity_init_slab(void);
|
||||
extern int bio_integrity_clone(struct bio *, struct bio *, gfp_t);
|
||||
|
||||
#else /* CONFIG_BLK_DEV_INTEGRITY */
|
||||
|
||||
#define bio_integrity(a) (0)
|
||||
#define bioset_integrity_create(a, b) (0)
|
||||
#define bio_integrity_prep(a) (0)
|
||||
#define bio_integrity_enabled(a) (0)
|
||||
#define bio_integrity_clone(a, b, c,d ) (0)
|
||||
#define bioset_integrity_free(a) do { } while (0)
|
||||
#define bio_integrity_free(a, b) do { } while (0)
|
||||
#define bio_integrity_clone(a, b, c) (0)
|
||||
#define bio_integrity_free(a) do { } while (0)
|
||||
#define bio_integrity_endio(a, b) do { } while (0)
|
||||
#define bio_integrity_advance(a, b) do { } while (0)
|
||||
#define bio_integrity_trim(a, b, c) do { } while (0)
|
||||
#define bio_integrity_split(a, b, c) do { } while (0)
|
||||
#define bio_integrity_set_tag(a, b, c) do { } while (0)
|
||||
#define bio_integrity_get_tag(a, b, c) do { } while (0)
|
||||
#define bio_integrity_init_slab(a) do { } while (0)
|
||||
|
||||
#endif /* CONFIG_BLK_DEV_INTEGRITY */
|
||||
|
||||
|
|
|
|||
|
|
@ -65,23 +65,20 @@ extern void free_bootmem(unsigned long addr, unsigned long size);
|
|||
#define BOOTMEM_DEFAULT 0
|
||||
#define BOOTMEM_EXCLUSIVE (1<<0)
|
||||
|
||||
extern int reserve_bootmem(unsigned long addr,
|
||||
unsigned long size,
|
||||
int flags);
|
||||
extern int reserve_bootmem_node(pg_data_t *pgdat,
|
||||
unsigned long physaddr,
|
||||
unsigned long size,
|
||||
int flags);
|
||||
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
|
||||
extern int reserve_bootmem(unsigned long addr, unsigned long size, int flags);
|
||||
#endif
|
||||
unsigned long physaddr,
|
||||
unsigned long size,
|
||||
int flags);
|
||||
|
||||
extern void *__alloc_bootmem_nopanic(unsigned long size,
|
||||
extern void *__alloc_bootmem(unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern void *__alloc_bootmem(unsigned long size,
|
||||
extern void *__alloc_bootmem_nopanic(unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern void *__alloc_bootmem_low(unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern void *__alloc_bootmem_node(pg_data_t *pgdat,
|
||||
unsigned long size,
|
||||
unsigned long align,
|
||||
|
|
@ -90,30 +87,35 @@ extern void *__alloc_bootmem_node_nopanic(pg_data_t *pgdat,
|
|||
unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern void *__alloc_bootmem_low(unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
extern void *__alloc_bootmem_low_node(pg_data_t *pgdat,
|
||||
unsigned long size,
|
||||
unsigned long align,
|
||||
unsigned long goal);
|
||||
#ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE
|
||||
|
||||
#define alloc_bootmem(x) \
|
||||
__alloc_bootmem(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
|
||||
#define alloc_bootmem_nopanic(x) \
|
||||
__alloc_bootmem_nopanic(x, SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
|
||||
#define alloc_bootmem_low(x) \
|
||||
__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_pages_nopanic(x) \
|
||||
__alloc_bootmem_nopanic(x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
|
||||
#define alloc_bootmem_low_pages(x) \
|
||||
__alloc_bootmem_low(x, PAGE_SIZE, 0)
|
||||
#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_pages_node_nopanic(pgdat, x) \
|
||||
__alloc_bootmem_node_nopanic(pgdat, x, PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
|
||||
|
||||
#define alloc_bootmem_low(x) \
|
||||
__alloc_bootmem_low(x, SMP_CACHE_BYTES, 0)
|
||||
#define alloc_bootmem_low_pages(x) \
|
||||
__alloc_bootmem_low(x, PAGE_SIZE, 0)
|
||||
#define alloc_bootmem_low_pages_node(pgdat, x) \
|
||||
__alloc_bootmem_low_node(pgdat, x, PAGE_SIZE, 0)
|
||||
#endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */
|
||||
|
||||
extern int reserve_bootmem_generic(unsigned long addr, unsigned long size,
|
||||
int flags);
|
||||
|
|
|
|||
|
|
@ -1,12 +1,22 @@
|
|||
#ifndef BSG_H
|
||||
#define BSG_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define BSG_PROTOCOL_SCSI 0
|
||||
|
||||
#define BSG_SUB_PROTOCOL_SCSI_CMD 0
|
||||
#define BSG_SUB_PROTOCOL_SCSI_TMF 1
|
||||
#define BSG_SUB_PROTOCOL_SCSI_TRANSPORT 2
|
||||
|
||||
/*
|
||||
* For flags member below
|
||||
* sg.h sg_io_hdr also has bits defined for it's flags member. However
|
||||
* none of these bits are implemented/used by bsg. The bits below are
|
||||
* allocated to not conflict with sg.h ones anyway.
|
||||
*/
|
||||
#define BSG_FLAG_Q_AT_TAIL 0x10 /* default, == 0 at this bit, is Q_AT_HEAD */
|
||||
|
||||
struct sg_io_v4 {
|
||||
__s32 guard; /* [i] 'Q' to differentiate from v3 */
|
||||
__u32 protocol; /* [i] 0 -> SCSI , .... */
|
||||
|
|
|
|||
|
|
@ -165,15 +165,8 @@ int sync_mapping_buffers(struct address_space *mapping);
|
|||
void unmap_underlying_metadata(struct block_device *bdev, sector_t block);
|
||||
|
||||
void mark_buffer_async_write(struct buffer_head *bh);
|
||||
void invalidate_bdev(struct block_device *);
|
||||
int sync_blockdev(struct block_device *bdev);
|
||||
void __wait_on_buffer(struct buffer_head *);
|
||||
wait_queue_head_t *bh_waitq_head(struct buffer_head *bh);
|
||||
int fsync_bdev(struct block_device *);
|
||||
struct super_block *freeze_bdev(struct block_device *);
|
||||
int thaw_bdev(struct block_device *, struct super_block *);
|
||||
int fsync_super(struct super_block *);
|
||||
int fsync_no_super(struct block_device *);
|
||||
struct buffer_head *__find_get_block(struct block_device *bdev, sector_t block,
|
||||
unsigned size);
|
||||
struct buffer_head *__getblk(struct block_device *bdev, sector_t block,
|
||||
|
|
|
|||
|
|
@ -393,8 +393,10 @@ struct cpu_vfs_cap_data {
|
|||
# define CAP_FULL_SET ((kernel_cap_t){{ ~0, ~0 }})
|
||||
# define CAP_INIT_EFF_SET ((kernel_cap_t){{ ~CAP_TO_MASK(CAP_SETPCAP), ~0 }})
|
||||
# define CAP_FS_SET ((kernel_cap_t){{ CAP_FS_MASK_B0, CAP_FS_MASK_B1 } })
|
||||
# define CAP_NFSD_SET ((kernel_cap_t){{ CAP_FS_MASK_B0|CAP_TO_MASK(CAP_SYS_RESOURCE), \
|
||||
CAP_FS_MASK_B1 } })
|
||||
# define CAP_NFSD_SET ((kernel_cap_t){{ CAP_FS_MASK_B0 \
|
||||
| CAP_TO_MASK(CAP_SYS_RESOURCE) \
|
||||
| CAP_TO_MASK(CAP_MKNOD), \
|
||||
CAP_FS_MASK_B1 } })
|
||||
|
||||
#endif /* _KERNEL_CAPABILITY_U32S != 2 */
|
||||
|
||||
|
|
|
|||
|
|
@ -21,9 +21,110 @@
|
|||
typedef u64 cycle_t;
|
||||
struct clocksource;
|
||||
|
||||
/**
|
||||
* struct cyclecounter - hardware abstraction for a free running counter
|
||||
* Provides completely state-free accessors to the underlying hardware.
|
||||
* Depending on which hardware it reads, the cycle counter may wrap
|
||||
* around quickly. Locking rules (if necessary) have to be defined
|
||||
* by the implementor and user of specific instances of this API.
|
||||
*
|
||||
* @read: returns the current cycle value
|
||||
* @mask: bitmask for two's complement
|
||||
* subtraction of non 64 bit counters,
|
||||
* see CLOCKSOURCE_MASK() helper macro
|
||||
* @mult: cycle to nanosecond multiplier
|
||||
* @shift: cycle to nanosecond divisor (power of two)
|
||||
*/
|
||||
struct cyclecounter {
|
||||
cycle_t (*read)(const struct cyclecounter *cc);
|
||||
cycle_t mask;
|
||||
u32 mult;
|
||||
u32 shift;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct timecounter - layer above a %struct cyclecounter which counts nanoseconds
|
||||
* Contains the state needed by timecounter_read() to detect
|
||||
* cycle counter wrap around. Initialize with
|
||||
* timecounter_init(). Also used to convert cycle counts into the
|
||||
* corresponding nanosecond counts with timecounter_cyc2time(). Users
|
||||
* of this code are responsible for initializing the underlying
|
||||
* cycle counter hardware, locking issues and reading the time
|
||||
* more often than the cycle counter wraps around. The nanosecond
|
||||
* counter will only wrap around after ~585 years.
|
||||
*
|
||||
* @cc: the cycle counter used by this instance
|
||||
* @cycle_last: most recent cycle counter value seen by
|
||||
* timecounter_read()
|
||||
* @nsec: continuously increasing count
|
||||
*/
|
||||
struct timecounter {
|
||||
const struct cyclecounter *cc;
|
||||
cycle_t cycle_last;
|
||||
u64 nsec;
|
||||
};
|
||||
|
||||
/**
|
||||
* cyclecounter_cyc2ns - converts cycle counter cycles to nanoseconds
|
||||
* @tc: Pointer to cycle counter.
|
||||
* @cycles: Cycles
|
||||
*
|
||||
* XXX - This could use some mult_lxl_ll() asm optimization. Same code
|
||||
* as in cyc2ns, but with unsigned result.
|
||||
*/
|
||||
static inline u64 cyclecounter_cyc2ns(const struct cyclecounter *cc,
|
||||
cycle_t cycles)
|
||||
{
|
||||
u64 ret = (u64)cycles;
|
||||
ret = (ret * cc->mult) >> cc->shift;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* timecounter_init - initialize a time counter
|
||||
* @tc: Pointer to time counter which is to be initialized/reset
|
||||
* @cc: A cycle counter, ready to be used.
|
||||
* @start_tstamp: Arbitrary initial time stamp.
|
||||
*
|
||||
* After this call the current cycle register (roughly) corresponds to
|
||||
* the initial time stamp. Every call to timecounter_read() increments
|
||||
* the time stamp counter by the number of elapsed nanoseconds.
|
||||
*/
|
||||
extern void timecounter_init(struct timecounter *tc,
|
||||
const struct cyclecounter *cc,
|
||||
u64 start_tstamp);
|
||||
|
||||
/**
|
||||
* timecounter_read - return nanoseconds elapsed since timecounter_init()
|
||||
* plus the initial time stamp
|
||||
* @tc: Pointer to time counter.
|
||||
*
|
||||
* In other words, keeps track of time since the same epoch as
|
||||
* the function which generated the initial time stamp.
|
||||
*/
|
||||
extern u64 timecounter_read(struct timecounter *tc);
|
||||
|
||||
/**
|
||||
* timecounter_cyc2time - convert a cycle counter to same
|
||||
* time base as values returned by
|
||||
* timecounter_read()
|
||||
* @tc: Pointer to time counter.
|
||||
* @cycle: a value returned by tc->cc->read()
|
||||
*
|
||||
* Cycle counts that are converted correctly as long as they
|
||||
* fall into the interval [-1/2 max cycle count, +1/2 max cycle count],
|
||||
* with "max cycle count" == cs->mask+1.
|
||||
*
|
||||
* This allows conversion of cycle counter values which were generated
|
||||
* in the past.
|
||||
*/
|
||||
extern u64 timecounter_cyc2time(struct timecounter *tc,
|
||||
cycle_t cycle_tstamp);
|
||||
|
||||
/**
|
||||
* struct clocksource - hardware abstraction for a free running counter
|
||||
* Provides mostly state-free accessors to the underlying hardware.
|
||||
* This is the structure used for system time.
|
||||
*
|
||||
* @name: ptr to clocksource name
|
||||
* @list: list head for registration
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _CM4000_H_
|
||||
#define _CM4000_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define MAX_ATR 33
|
||||
|
||||
#define CM4000_MAX_DEV 4
|
||||
|
|
@ -10,9 +12,9 @@
|
|||
* not to break compilation of userspace apps. -HW */
|
||||
|
||||
typedef struct atreq {
|
||||
int32_t atr_len;
|
||||
__s32 atr_len;
|
||||
unsigned char atr[64];
|
||||
int32_t power_act;
|
||||
__s32 power_act;
|
||||
unsigned char bIFSD;
|
||||
unsigned char bIFSC;
|
||||
} atreq_t;
|
||||
|
|
@ -22,13 +24,13 @@ typedef struct atreq {
|
|||
* member sizes. This leads to CONFIG_COMPAT breakage, since 32bit userspace
|
||||
* will lay out the structure members differently than the 64bit kernel.
|
||||
*
|
||||
* I've changed "ptsreq.protocol" from "unsigned long" to "u_int32_t".
|
||||
* I've changed "ptsreq.protocol" from "unsigned long" to "__u32".
|
||||
* On 32bit this will make no difference. With 64bit kernels, it will make
|
||||
* 32bit apps work, too.
|
||||
*/
|
||||
|
||||
typedef struct ptsreq {
|
||||
u_int32_t protocol; /*T=0: 2^0, T=1: 2^1*/
|
||||
__u32 protocol; /*T=0: 2^0, T=1: 2^1*/
|
||||
unsigned char flags;
|
||||
unsigned char pts1;
|
||||
unsigned char pts2;
|
||||
|
|
|
|||
|
|
@ -65,20 +65,20 @@ struct proc_event {
|
|||
} ack;
|
||||
|
||||
struct fork_proc_event {
|
||||
pid_t parent_pid;
|
||||
pid_t parent_tgid;
|
||||
pid_t child_pid;
|
||||
pid_t child_tgid;
|
||||
__kernel_pid_t parent_pid;
|
||||
__kernel_pid_t parent_tgid;
|
||||
__kernel_pid_t child_pid;
|
||||
__kernel_pid_t child_tgid;
|
||||
} fork;
|
||||
|
||||
struct exec_proc_event {
|
||||
pid_t process_pid;
|
||||
pid_t process_tgid;
|
||||
__kernel_pid_t process_pid;
|
||||
__kernel_pid_t process_tgid;
|
||||
} exec;
|
||||
|
||||
struct id_proc_event {
|
||||
pid_t process_pid;
|
||||
pid_t process_tgid;
|
||||
__kernel_pid_t process_pid;
|
||||
__kernel_pid_t process_tgid;
|
||||
union {
|
||||
__u32 ruid; /* task uid */
|
||||
__u32 rgid; /* task gid */
|
||||
|
|
@ -90,8 +90,8 @@ struct proc_event {
|
|||
} id;
|
||||
|
||||
struct exit_proc_event {
|
||||
pid_t process_pid;
|
||||
pid_t process_tgid;
|
||||
__kernel_pid_t process_pid;
|
||||
__kernel_pid_t process_tgid;
|
||||
__u32 exit_code, exit_signal;
|
||||
} exit;
|
||||
} event_data;
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
#define CODA_PSDEV_MAJOR 67
|
||||
#define MAX_CODADEVS 5 /* how many do we allow */
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct kstatfs;
|
||||
|
||||
/* communication pending/processing queues */
|
||||
|
|
@ -24,7 +25,6 @@ static inline struct venus_comm *coda_vcp(struct super_block *sb)
|
|||
return (struct venus_comm *)((sb)->s_fs_info);
|
||||
}
|
||||
|
||||
|
||||
/* upcalls */
|
||||
int venus_rootfid(struct super_block *sb, struct CodaFid *fidp);
|
||||
int venus_getattr(struct super_block *sb, struct CodaFid *fid,
|
||||
|
|
@ -64,6 +64,12 @@ int coda_downcall(int opcode, union outputArgs *out, struct super_block *sb);
|
|||
int venus_fsync(struct super_block *sb, struct CodaFid *fid);
|
||||
int venus_statfs(struct dentry *dentry, struct kstatfs *sfs);
|
||||
|
||||
/*
|
||||
* Statistics
|
||||
*/
|
||||
|
||||
extern struct venus_comm coda_comms[];
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
/* messages between coda filesystem in kernel and Venus */
|
||||
struct upc_req {
|
||||
|
|
@ -82,11 +88,4 @@ struct upc_req {
|
|||
#define REQ_WRITE 0x4
|
||||
#define REQ_ABORT 0x8
|
||||
|
||||
|
||||
/*
|
||||
* Statistics
|
||||
*/
|
||||
|
||||
extern struct venus_comm coda_comms[];
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
int com20020_check(struct net_device *dev);
|
||||
int com20020_found(struct net_device *dev, int shared);
|
||||
extern const struct net_device_ops com20020_netdev_ops;
|
||||
|
||||
/* The number of low I/O ports used by the card. */
|
||||
#define ARCNET_TOTAL_SIZE 8
|
||||
|
|
|
|||
|
|
@ -125,6 +125,13 @@ struct compat_dirent {
|
|||
char d_name[256];
|
||||
};
|
||||
|
||||
struct compat_ustat {
|
||||
compat_daddr_t f_tfree;
|
||||
compat_ino_t f_tinode;
|
||||
char f_fname[6];
|
||||
char f_fpack[6];
|
||||
};
|
||||
|
||||
typedef union compat_sigval {
|
||||
compat_int_t sival_int;
|
||||
compat_uptr_t sival_ptr;
|
||||
|
|
@ -178,6 +185,7 @@ long compat_sys_semtimedop(int semid, struct sembuf __user *tsems,
|
|||
unsigned nsems, const struct compat_timespec __user *timeout);
|
||||
asmlinkage long compat_sys_keyctl(u32 option,
|
||||
u32 arg2, u32 arg3, u32 arg4, u32 arg5);
|
||||
asmlinkage long compat_sys_ustat(unsigned dev, struct compat_ustat __user *u32);
|
||||
|
||||
asmlinkage ssize_t compat_sys_readv(unsigned long fd,
|
||||
const struct compat_iovec __user *vec, unsigned long vlen);
|
||||
|
|
|
|||
|
|
@ -3,8 +3,10 @@
|
|||
#endif
|
||||
|
||||
/* GCC 4.1.[01] miscompiles __weak */
|
||||
#if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1
|
||||
# error Your version of gcc miscompiles the __weak directive
|
||||
#ifdef __KERNEL__
|
||||
# if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1
|
||||
# error Your version of gcc miscompiles the __weak directive
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define __used __attribute__((__used__))
|
||||
|
|
|
|||
|
|
@ -109,6 +109,12 @@ struct cn_queue_dev {
|
|||
unsigned char name[CN_CBQ_NAMELEN];
|
||||
|
||||
struct workqueue_struct *cn_queue;
|
||||
/* Sent to kevent to create cn_queue only when needed */
|
||||
struct work_struct wq_creation;
|
||||
/* Tell if the wq_creation job is pending/completed */
|
||||
atomic_t wq_requested;
|
||||
/* Wait for cn_queue to be created */
|
||||
wait_queue_head_t wq_created;
|
||||
|
||||
struct list_head queue_list;
|
||||
spinlock_t queue_lock;
|
||||
|
|
@ -164,6 +170,8 @@ int cn_netlink_send(struct cn_msg *, u32, gfp_t);
|
|||
int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(void *));
|
||||
void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id);
|
||||
|
||||
int queue_cn_work(struct cn_callback_entry *cbq, struct work_struct *work);
|
||||
|
||||
struct cn_queue_dev *cn_queue_alloc_dev(char *name, struct sock *);
|
||||
void cn_queue_free_dev(struct cn_queue_dev *dev);
|
||||
|
||||
|
|
|
|||
|
|
@ -137,8 +137,8 @@ extern void resume_console(void);
|
|||
int mda_console_init(void);
|
||||
void prom_con_init(void);
|
||||
|
||||
void vcs_make_sysfs(struct tty_struct *tty);
|
||||
void vcs_remove_sysfs(struct tty_struct *tty);
|
||||
void vcs_make_sysfs(int index);
|
||||
void vcs_remove_sysfs(int index);
|
||||
|
||||
/* Some debug stub to catch some of the obvious races in the VT code */
|
||||
#if 1
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@
|
|||
#define CRYPTO_ALG_TYPE_SHASH 0x00000009
|
||||
#define CRYPTO_ALG_TYPE_AHASH 0x0000000a
|
||||
#define CRYPTO_ALG_TYPE_RNG 0x0000000c
|
||||
#define CRYPTO_ALG_TYPE_PCOMPRESS 0x0000000f
|
||||
|
||||
#define CRYPTO_ALG_TYPE_HASH_MASK 0x0000000e
|
||||
#define CRYPTO_ALG_TYPE_AHASH_MASK 0x0000000c
|
||||
|
|
@ -548,9 +549,6 @@ struct crypto_attr_u32 {
|
|||
* Transform user interface.
|
||||
*/
|
||||
|
||||
struct crypto_tfm *crypto_alloc_tfm(const char *alg_name,
|
||||
const struct crypto_type *frontend,
|
||||
u32 type, u32 mask);
|
||||
struct crypto_tfm *crypto_alloc_base(const char *alg_name, u32 type, u32 mask);
|
||||
void crypto_destroy_tfm(void *mem, struct crypto_tfm *tfm);
|
||||
|
||||
|
|
|
|||
|
|
@ -82,9 +82,9 @@ struct cyclades_monitor {
|
|||
* open)
|
||||
*/
|
||||
struct cyclades_idle_stats {
|
||||
time_t in_use; /* Time device has been in use (secs) */
|
||||
time_t recv_idle; /* Time since last char received (secs) */
|
||||
time_t xmit_idle; /* Time since last char transmitted (secs) */
|
||||
__kernel_time_t in_use; /* Time device has been in use (secs) */
|
||||
__kernel_time_t recv_idle; /* Time since last char received (secs) */
|
||||
__kernel_time_t xmit_idle; /* Time since last char transmitted (secs) */
|
||||
unsigned long recv_bytes; /* Bytes received */
|
||||
unsigned long xmit_bytes; /* Bytes transmitted */
|
||||
unsigned long overruns; /* Input overruns */
|
||||
|
|
|
|||
|
|
@ -1,3 +1,23 @@
|
|||
/*
|
||||
* Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved.
|
||||
*
|
||||
* 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 02111-1307, USA.
|
||||
*
|
||||
* The full GNU General Public License is included in this distribution in the
|
||||
* file called COPYING.
|
||||
*/
|
||||
#ifndef DCA_H
|
||||
#define DCA_H
|
||||
/* DCA Provider API */
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ struct dentry {
|
|||
struct list_head d_subdirs; /* our children */
|
||||
struct list_head d_alias; /* inode alias list */
|
||||
unsigned long d_time; /* used by d_revalidate */
|
||||
struct dentry_operations *d_op;
|
||||
const struct dentry_operations *d_op;
|
||||
struct super_block *d_sb; /* The root of the dentry tree */
|
||||
void *d_fsdata; /* fs-specific data */
|
||||
|
||||
|
|
|
|||
|
|
@ -355,46 +355,6 @@ static inline unsigned int dccp_hdr_len(const struct sk_buff *skb)
|
|||
return __dccp_hdr_len(dccp_hdr(skb));
|
||||
}
|
||||
|
||||
|
||||
/* initial values for each feature */
|
||||
#define DCCPF_INITIAL_SEQUENCE_WINDOW 100
|
||||
#define DCCPF_INITIAL_ACK_RATIO 2
|
||||
#define DCCPF_INITIAL_CCID DCCPC_CCID2
|
||||
/* FIXME: for now we're default to 1 but it should really be 0 */
|
||||
#define DCCPF_INITIAL_SEND_NDP_COUNT 1
|
||||
|
||||
/**
|
||||
* struct dccp_minisock - Minimal DCCP connection representation
|
||||
*
|
||||
* Will be used to pass the state from dccp_request_sock to dccp_sock.
|
||||
*
|
||||
* @dccpms_sequence_window - Sequence Window Feature (section 7.5.2)
|
||||
* @dccpms_pending - List of features being negotiated
|
||||
* @dccpms_conf -
|
||||
*/
|
||||
struct dccp_minisock {
|
||||
__u64 dccpms_sequence_window;
|
||||
struct list_head dccpms_pending;
|
||||
struct list_head dccpms_conf;
|
||||
};
|
||||
|
||||
struct dccp_opt_conf {
|
||||
__u8 *dccpoc_val;
|
||||
__u8 dccpoc_len;
|
||||
};
|
||||
|
||||
struct dccp_opt_pend {
|
||||
struct list_head dccpop_node;
|
||||
__u8 dccpop_type;
|
||||
__u8 dccpop_feat;
|
||||
__u8 *dccpop_val;
|
||||
__u8 dccpop_len;
|
||||
int dccpop_conf;
|
||||
struct dccp_opt_conf *dccpop_sc;
|
||||
};
|
||||
|
||||
extern void dccp_minisock_init(struct dccp_minisock *dmsk);
|
||||
|
||||
/**
|
||||
* struct dccp_request_sock - represent DCCP-specific connection request
|
||||
* @dreq_inet_rsk: structure inherited from
|
||||
|
|
@ -483,13 +443,14 @@ struct dccp_ackvec;
|
|||
* @dccps_timestamp_time - time of receiving latest @dccps_timestamp_echo
|
||||
* @dccps_l_ack_ratio - feature-local Ack Ratio
|
||||
* @dccps_r_ack_ratio - feature-remote Ack Ratio
|
||||
* @dccps_l_seq_win - local Sequence Window (influences ack number validity)
|
||||
* @dccps_r_seq_win - remote Sequence Window (influences seq number validity)
|
||||
* @dccps_pcslen - sender partial checksum coverage (via sockopt)
|
||||
* @dccps_pcrlen - receiver partial checksum coverage (via sockopt)
|
||||
* @dccps_send_ndp_count - local Send NDP Count feature (7.7.2)
|
||||
* @dccps_ndp_count - number of Non Data Packets since last data packet
|
||||
* @dccps_mss_cache - current value of MSS (path MTU minus header sizes)
|
||||
* @dccps_rate_last - timestamp for rate-limiting DCCP-Sync (RFC 4340, 7.5.4)
|
||||
* @dccps_minisock - associated minisock (accessed via dccp_msk)
|
||||
* @dccps_featneg - tracks feature-negotiation state (mostly during handshake)
|
||||
* @dccps_hc_rx_ackvec - rx half connection ack vector
|
||||
* @dccps_hc_rx_ccid - CCID used for the receiver (or receiving half-connection)
|
||||
|
|
@ -523,12 +484,13 @@ struct dccp_sock {
|
|||
__u32 dccps_timestamp_time;
|
||||
__u16 dccps_l_ack_ratio;
|
||||
__u16 dccps_r_ack_ratio;
|
||||
__u64 dccps_l_seq_win:48;
|
||||
__u64 dccps_r_seq_win:48;
|
||||
__u8 dccps_pcslen:4;
|
||||
__u8 dccps_pcrlen:4;
|
||||
__u8 dccps_send_ndp_count:1;
|
||||
__u64 dccps_ndp_count:48;
|
||||
unsigned long dccps_rate_last;
|
||||
struct dccp_minisock dccps_minisock;
|
||||
struct list_head dccps_featneg;
|
||||
struct dccp_ackvec *dccps_hc_rx_ackvec;
|
||||
struct ccid *dccps_hc_rx_ccid;
|
||||
|
|
@ -546,11 +508,6 @@ static inline struct dccp_sock *dccp_sk(const struct sock *sk)
|
|||
return (struct dccp_sock *)sk;
|
||||
}
|
||||
|
||||
static inline struct dccp_minisock *dccp_msk(const struct sock *sk)
|
||||
{
|
||||
return (struct dccp_minisock *)&dccp_sk(sk)->dccps_minisock;
|
||||
}
|
||||
|
||||
static inline const char *dccp_role(const struct sock *sk)
|
||||
{
|
||||
switch (dccp_sk(sk)->dccps_role) {
|
||||
|
|
|
|||
10
include/linux/decompress/bunzip2.h
Normal file
10
include/linux/decompress/bunzip2.h
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
#ifndef DECOMPRESS_BUNZIP2_H
|
||||
#define DECOMPRESS_BUNZIP2_H
|
||||
|
||||
int bunzip2(unsigned char *inbuf, int len,
|
||||
int(*fill)(void*, unsigned int),
|
||||
int(*flush)(void*, unsigned int),
|
||||
unsigned char *output,
|
||||
int *pos,
|
||||
void(*error)(char *x));
|
||||
#endif
|
||||
33
include/linux/decompress/generic.h
Normal file
33
include/linux/decompress/generic.h
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
#ifndef DECOMPRESS_GENERIC_H
|
||||
#define DECOMPRESS_GENERIC_H
|
||||
|
||||
/* Minimal chunksize to be read.
|
||||
*Bzip2 prefers at least 4096
|
||||
*Lzma prefers 0x10000 */
|
||||
#define COMPR_IOBUF_SIZE 4096
|
||||
|
||||
typedef int (*decompress_fn) (unsigned char *inbuf, int len,
|
||||
int(*fill)(void*, unsigned int),
|
||||
int(*writebb)(void*, unsigned int),
|
||||
unsigned char *output,
|
||||
int *posp,
|
||||
void(*error)(char *x));
|
||||
|
||||
/* inbuf - input buffer
|
||||
*len - len of pre-read data in inbuf
|
||||
*fill - function to fill inbuf if empty
|
||||
*writebb - function to write out outbug
|
||||
*posp - if non-null, input position (number of bytes read) will be
|
||||
* returned here
|
||||
*
|
||||
*If len != 0, the inbuf is initialized (with as much data), and fill
|
||||
*should not be called
|
||||
*If len = 0, the inbuf is allocated, but empty. Its size is IOBUF_SIZE
|
||||
*fill should be called (repeatedly...) to read data, at most IOBUF_SIZE
|
||||
*/
|
||||
|
||||
/* Utility routine to detect the decompression method */
|
||||
decompress_fn decompress_method(const unsigned char *inbuf, int len,
|
||||
const char **name);
|
||||
|
||||
#endif
|
||||
13
include/linux/decompress/inflate.h
Normal file
13
include/linux/decompress/inflate.h
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef INFLATE_H
|
||||
#define INFLATE_H
|
||||
|
||||
/* Other housekeeping constants */
|
||||
#define INBUFSIZ 4096
|
||||
|
||||
int gunzip(unsigned char *inbuf, int len,
|
||||
int(*fill)(void*, unsigned int),
|
||||
int(*flush)(void*, unsigned int),
|
||||
unsigned char *output,
|
||||
int *pos,
|
||||
void(*error_fn)(char *x));
|
||||
#endif
|
||||
87
include/linux/decompress/mm.h
Normal file
87
include/linux/decompress/mm.h
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
/*
|
||||
* linux/compr_mm.h
|
||||
*
|
||||
* Memory management for pre-boot and ramdisk uncompressors
|
||||
*
|
||||
* Authors: Alain Knaff <alain@knaff.lu>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DECOMPR_MM_H
|
||||
#define DECOMPR_MM_H
|
||||
|
||||
#ifdef STATIC
|
||||
|
||||
/* Code active when included from pre-boot environment: */
|
||||
|
||||
/* A trivial malloc implementation, adapted from
|
||||
* malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
|
||||
*/
|
||||
static unsigned long malloc_ptr;
|
||||
static int malloc_count;
|
||||
|
||||
static void *malloc(int size)
|
||||
{
|
||||
void *p;
|
||||
|
||||
if (size < 0)
|
||||
error("Malloc error");
|
||||
if (!malloc_ptr)
|
||||
malloc_ptr = free_mem_ptr;
|
||||
|
||||
malloc_ptr = (malloc_ptr + 3) & ~3; /* Align */
|
||||
|
||||
p = (void *)malloc_ptr;
|
||||
malloc_ptr += size;
|
||||
|
||||
if (free_mem_end_ptr && malloc_ptr >= free_mem_end_ptr)
|
||||
error("Out of memory");
|
||||
|
||||
malloc_count++;
|
||||
return p;
|
||||
}
|
||||
|
||||
static void free(void *where)
|
||||
{
|
||||
malloc_count--;
|
||||
if (!malloc_count)
|
||||
malloc_ptr = free_mem_ptr;
|
||||
}
|
||||
|
||||
#define large_malloc(a) malloc(a)
|
||||
#define large_free(a) free(a)
|
||||
|
||||
#define set_error_fn(x)
|
||||
|
||||
#define INIT
|
||||
|
||||
#else /* STATIC */
|
||||
|
||||
/* Code active when compiled standalone for use when loading ramdisk: */
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/vmalloc.h>
|
||||
|
||||
/* Use defines rather than static inline in order to avoid spurious
|
||||
* warnings when not needed (indeed large_malloc / large_free are not
|
||||
* needed by inflate */
|
||||
|
||||
#define malloc(a) kmalloc(a, GFP_KERNEL)
|
||||
#define free(a) kfree(a)
|
||||
|
||||
#define large_malloc(a) vmalloc(a)
|
||||
#define large_free(a) vfree(a)
|
||||
|
||||
static void(*error)(char *m);
|
||||
#define set_error_fn(x) error = x;
|
||||
|
||||
#define INIT __init
|
||||
#define STATIC
|
||||
|
||||
#include <linux/init.h>
|
||||
|
||||
#endif /* STATIC */
|
||||
|
||||
#endif /* DECOMPR_MM_H */
|
||||
12
include/linux/decompress/unlzma.h
Normal file
12
include/linux/decompress/unlzma.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#ifndef DECOMPRESS_UNLZMA_H
|
||||
#define DECOMPRESS_UNLZMA_H
|
||||
|
||||
int unlzma(unsigned char *, int,
|
||||
int(*fill)(void*, unsigned int),
|
||||
int(*flush)(void*, unsigned int),
|
||||
unsigned char *output,
|
||||
int *posp,
|
||||
void(*error)(char *x)
|
||||
);
|
||||
|
||||
#endif
|
||||
|
|
@ -28,6 +28,7 @@
|
|||
#define BUS_ID_SIZE 20
|
||||
|
||||
struct device;
|
||||
struct device_private;
|
||||
struct device_driver;
|
||||
struct driver_private;
|
||||
struct class;
|
||||
|
|
@ -147,7 +148,7 @@ extern void put_driver(struct device_driver *drv);
|
|||
extern struct device_driver *driver_find(const char *name,
|
||||
struct bus_type *bus);
|
||||
extern int driver_probe_done(void);
|
||||
extern int wait_for_device_probe(void);
|
||||
extern void wait_for_device_probe(void);
|
||||
|
||||
|
||||
/* sysfs interface for exporting driver attributes */
|
||||
|
|
@ -367,15 +368,11 @@ struct device_dma_parameters {
|
|||
};
|
||||
|
||||
struct device {
|
||||
struct klist klist_children;
|
||||
struct klist_node knode_parent; /* node in sibling list */
|
||||
struct klist_node knode_driver;
|
||||
struct klist_node knode_bus;
|
||||
struct device *parent;
|
||||
|
||||
struct device_private *p;
|
||||
|
||||
struct kobject kobj;
|
||||
char bus_id[BUS_ID_SIZE]; /* position on parent bus */
|
||||
unsigned uevent_suppress:1;
|
||||
const char *init_name; /* initial name of the device */
|
||||
struct device_type *type;
|
||||
|
||||
|
|
@ -387,8 +384,13 @@ struct device {
|
|||
struct device_driver *driver; /* which driver has allocated this
|
||||
device */
|
||||
void *driver_data; /* data private to the driver */
|
||||
void *platform_data; /* Platform specific data, device
|
||||
core doesn't touch it */
|
||||
|
||||
void *platform_data; /* We will remove platform_data
|
||||
field if all platform devices
|
||||
pass its platform specific data
|
||||
from platform_device->platform_data,
|
||||
other kind of devices should not
|
||||
use platform_data. */
|
||||
struct dev_pm_info power;
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
|
|
@ -427,8 +429,7 @@ struct device {
|
|||
|
||||
static inline const char *dev_name(const struct device *dev)
|
||||
{
|
||||
/* will be changed into kobject_name(&dev->kobj) in the near future */
|
||||
return dev->bus_id;
|
||||
return kobject_name(&dev->kobj);
|
||||
}
|
||||
|
||||
extern int dev_set_name(struct device *dev, const char *name, ...)
|
||||
|
|
@ -463,6 +464,16 @@ static inline void dev_set_drvdata(struct device *dev, void *data)
|
|||
dev->driver_data = data;
|
||||
}
|
||||
|
||||
static inline unsigned int dev_get_uevent_suppress(const struct device *dev)
|
||||
{
|
||||
return dev->kobj.uevent_suppress;
|
||||
}
|
||||
|
||||
static inline void dev_set_uevent_suppress(struct device *dev, int val)
|
||||
{
|
||||
dev->kobj.uevent_suppress = val;
|
||||
}
|
||||
|
||||
static inline int device_is_registered(struct device *dev)
|
||||
{
|
||||
return dev->kobj.state_in_sysfs;
|
||||
|
|
@ -483,7 +494,8 @@ extern int device_for_each_child(struct device *dev, void *data,
|
|||
extern struct device *device_find_child(struct device *dev, void *data,
|
||||
int (*match)(struct device *dev, void *data));
|
||||
extern int device_rename(struct device *dev, char *new_name);
|
||||
extern int device_move(struct device *dev, struct device *new_parent);
|
||||
extern int device_move(struct device *dev, struct device *new_parent,
|
||||
enum dpm_order dpm_order);
|
||||
|
||||
/*
|
||||
* Root device objects for grouping under /sys/devices
|
||||
|
|
@ -570,7 +582,7 @@ extern const char *dev_driver_string(const struct device *dev);
|
|||
#if defined(DEBUG)
|
||||
#define dev_dbg(dev, format, arg...) \
|
||||
dev_printk(KERN_DEBUG , dev , format , ## arg)
|
||||
#elif defined(CONFIG_DYNAMIC_PRINTK_DEBUG)
|
||||
#elif defined(CONFIG_DYNAMIC_DEBUG)
|
||||
#define dev_dbg(dev, format, ...) do { \
|
||||
dynamic_dev_dbg(dev, format, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,8 @@
|
|||
#ifndef _DLM_NETLINK_H
|
||||
#define _DLM_NETLINK_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
enum {
|
||||
DLM_STATUS_WAITING = 1,
|
||||
DLM_STATUS_GRANTED = 2,
|
||||
|
|
@ -18,16 +20,16 @@ enum {
|
|||
#define DLM_LOCK_DATA_VERSION 1
|
||||
|
||||
struct dlm_lock_data {
|
||||
uint16_t version;
|
||||
uint32_t lockspace_id;
|
||||
__u16 version;
|
||||
__u32 lockspace_id;
|
||||
int nodeid;
|
||||
int ownpid;
|
||||
uint32_t id;
|
||||
uint32_t remid;
|
||||
uint64_t xid;
|
||||
int8_t status;
|
||||
int8_t grmode;
|
||||
int8_t rqmode;
|
||||
__u32 id;
|
||||
__u32 remid;
|
||||
__u64 xid;
|
||||
__s8 status;
|
||||
__s8 grmode;
|
||||
__s8 rqmode;
|
||||
unsigned long timestamp;
|
||||
int resource_namelen;
|
||||
char resource_name[DLM_RESNAME_MAXLEN];
|
||||
|
|
|
|||
|
|
@ -113,20 +113,20 @@ struct dm_ioctl {
|
|||
* return -ENOTTY) fill out this field, even if the
|
||||
* command failed.
|
||||
*/
|
||||
uint32_t version[3]; /* in/out */
|
||||
uint32_t data_size; /* total size of data passed in
|
||||
__u32 version[3]; /* in/out */
|
||||
__u32 data_size; /* total size of data passed in
|
||||
* including this struct */
|
||||
|
||||
uint32_t data_start; /* offset to start of data
|
||||
__u32 data_start; /* offset to start of data
|
||||
* relative to start of this struct */
|
||||
|
||||
uint32_t target_count; /* in/out */
|
||||
int32_t open_count; /* out */
|
||||
uint32_t flags; /* in/out */
|
||||
uint32_t event_nr; /* in/out */
|
||||
uint32_t padding;
|
||||
__u32 target_count; /* in/out */
|
||||
__s32 open_count; /* out */
|
||||
__u32 flags; /* in/out */
|
||||
__u32 event_nr; /* in/out */
|
||||
__u32 padding;
|
||||
|
||||
uint64_t dev; /* in/out */
|
||||
__u64 dev; /* in/out */
|
||||
|
||||
char name[DM_NAME_LEN]; /* device name */
|
||||
char uuid[DM_UUID_LEN]; /* unique identifier for
|
||||
|
|
@ -139,9 +139,9 @@ struct dm_ioctl {
|
|||
* dm_ioctl.
|
||||
*/
|
||||
struct dm_target_spec {
|
||||
uint64_t sector_start;
|
||||
uint64_t length;
|
||||
int32_t status; /* used when reading from kernel only */
|
||||
__u64 sector_start;
|
||||
__u64 length;
|
||||
__s32 status; /* used when reading from kernel only */
|
||||
|
||||
/*
|
||||
* Location of the next dm_target_spec.
|
||||
|
|
@ -153,7 +153,7 @@ struct dm_target_spec {
|
|||
* (that follows the dm_ioctl struct) to the start of the "next"
|
||||
* dm_target_spec.
|
||||
*/
|
||||
uint32_t next;
|
||||
__u32 next;
|
||||
|
||||
char target_type[DM_MAX_TYPE_NAME];
|
||||
|
||||
|
|
@ -168,17 +168,17 @@ struct dm_target_spec {
|
|||
* Used to retrieve the target dependencies.
|
||||
*/
|
||||
struct dm_target_deps {
|
||||
uint32_t count; /* Array size */
|
||||
uint32_t padding; /* unused */
|
||||
uint64_t dev[0]; /* out */
|
||||
__u32 count; /* Array size */
|
||||
__u32 padding; /* unused */
|
||||
__u64 dev[0]; /* out */
|
||||
};
|
||||
|
||||
/*
|
||||
* Used to get a list of all dm devices.
|
||||
*/
|
||||
struct dm_name_list {
|
||||
uint64_t dev;
|
||||
uint32_t next; /* offset to the next record from
|
||||
__u64 dev;
|
||||
__u32 next; /* offset to the next record from
|
||||
the _start_ of this */
|
||||
char name[0];
|
||||
};
|
||||
|
|
@ -187,8 +187,8 @@ struct dm_name_list {
|
|||
* Used to retrieve the target versions
|
||||
*/
|
||||
struct dm_target_versions {
|
||||
uint32_t next;
|
||||
uint32_t version[3];
|
||||
__u32 next;
|
||||
__u32 version[3];
|
||||
|
||||
char name[0];
|
||||
};
|
||||
|
|
@ -197,7 +197,7 @@ struct dm_target_versions {
|
|||
* Used to pass message to a target
|
||||
*/
|
||||
struct dm_target_msg {
|
||||
uint64_t sector; /* Device sector */
|
||||
__u64 sector; /* Device sector */
|
||||
|
||||
char message[0];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ struct audio_karaoke{ /* if Vocal1 or Vocal2 are non-zero, they get mixed */
|
|||
} audio_karaoke_t; /* into left and right */
|
||||
|
||||
|
||||
typedef uint16_t audio_attributes_t;
|
||||
typedef __u16 audio_attributes_t;
|
||||
/* bits: descr. */
|
||||
/* 15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, */
|
||||
/* 12 multichannel extension */
|
||||
|
|
|
|||
|
|
@ -132,12 +132,12 @@ struct video_command {
|
|||
#define VIDEO_VSYNC_FIELD_PROGRESSIVE (3)
|
||||
|
||||
struct video_event {
|
||||
int32_t type;
|
||||
__s32 type;
|
||||
#define VIDEO_EVENT_SIZE_CHANGED 1
|
||||
#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
|
||||
#define VIDEO_EVENT_DECODER_STOPPED 3
|
||||
#define VIDEO_EVENT_VSYNC 4
|
||||
time_t timestamp;
|
||||
__kernel_time_t timestamp;
|
||||
union {
|
||||
video_size_t size;
|
||||
unsigned int frame_rate; /* in frames per 1000sec */
|
||||
|
|
@ -157,25 +157,25 @@ struct video_status {
|
|||
|
||||
struct video_still_picture {
|
||||
char __user *iFrame; /* pointer to a single iframe in memory */
|
||||
int32_t size;
|
||||
__s32 size;
|
||||
};
|
||||
|
||||
|
||||
typedef
|
||||
struct video_highlight {
|
||||
int active; /* 1=show highlight, 0=hide highlight */
|
||||
uint8_t contrast1; /* 7- 4 Pattern pixel contrast */
|
||||
__u8 contrast1; /* 7- 4 Pattern pixel contrast */
|
||||
/* 3- 0 Background pixel contrast */
|
||||
uint8_t contrast2; /* 7- 4 Emphasis pixel-2 contrast */
|
||||
__u8 contrast2; /* 7- 4 Emphasis pixel-2 contrast */
|
||||
/* 3- 0 Emphasis pixel-1 contrast */
|
||||
uint8_t color1; /* 7- 4 Pattern pixel color */
|
||||
__u8 color1; /* 7- 4 Pattern pixel color */
|
||||
/* 3- 0 Background pixel color */
|
||||
uint8_t color2; /* 7- 4 Emphasis pixel-2 color */
|
||||
__u8 color2; /* 7- 4 Emphasis pixel-2 color */
|
||||
/* 3- 0 Emphasis pixel-1 color */
|
||||
uint32_t ypos; /* 23-22 auto action mode */
|
||||
__u32 ypos; /* 23-22 auto action mode */
|
||||
/* 21-12 start y */
|
||||
/* 9- 0 end y */
|
||||
uint32_t xpos; /* 23-22 button color number */
|
||||
__u32 xpos; /* 23-22 button color number */
|
||||
/* 21-12 start x */
|
||||
/* 9- 0 end x */
|
||||
} video_highlight_t;
|
||||
|
|
@ -189,17 +189,17 @@ typedef struct video_spu {
|
|||
|
||||
typedef struct video_spu_palette { /* SPU Palette information */
|
||||
int length;
|
||||
uint8_t __user *palette;
|
||||
__u8 __user *palette;
|
||||
} video_spu_palette_t;
|
||||
|
||||
|
||||
typedef struct video_navi_pack {
|
||||
int length; /* 0 ... 1024 */
|
||||
uint8_t data[1024];
|
||||
__u8 data[1024];
|
||||
} video_navi_pack_t;
|
||||
|
||||
|
||||
typedef uint16_t video_attributes_t;
|
||||
typedef __u16 video_attributes_t;
|
||||
/* bits: descr. */
|
||||
/* 15-14 Video compression mode (0=MPEG-1, 1=MPEG-2) */
|
||||
/* 13-12 TV system (0=525/60, 1=625/50) */
|
||||
|
|
|
|||
88
include/linux/dynamic_debug.h
Normal file
88
include/linux/dynamic_debug.h
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
#ifndef _DYNAMIC_DEBUG_H
|
||||
#define _DYNAMIC_DEBUG_H
|
||||
|
||||
/* dynamic_printk_enabled, and dynamic_printk_enabled2 are bitmasks in which
|
||||
* bit n is set to 1 if any modname hashes into the bucket n, 0 otherwise. They
|
||||
* use independent hash functions, to reduce the chance of false positives.
|
||||
*/
|
||||
extern long long dynamic_debug_enabled;
|
||||
extern long long dynamic_debug_enabled2;
|
||||
|
||||
/*
|
||||
* An instance of this structure is created in a special
|
||||
* ELF section at every dynamic debug callsite. At runtime,
|
||||
* the special section is treated as an array of these.
|
||||
*/
|
||||
struct _ddebug {
|
||||
/*
|
||||
* These fields are used to drive the user interface
|
||||
* for selecting and displaying debug callsites.
|
||||
*/
|
||||
const char *modname;
|
||||
const char *function;
|
||||
const char *filename;
|
||||
const char *format;
|
||||
char primary_hash;
|
||||
char secondary_hash;
|
||||
unsigned int lineno:24;
|
||||
/*
|
||||
* The flags field controls the behaviour at the callsite.
|
||||
* The bits here are changed dynamically when the user
|
||||
* writes commands to <debugfs>/dynamic_debug/ddebug
|
||||
*/
|
||||
#define _DPRINTK_FLAGS_PRINT (1<<0) /* printk() a message using the format */
|
||||
#define _DPRINTK_FLAGS_DEFAULT 0
|
||||
unsigned int flags:8;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
|
||||
int ddebug_add_module(struct _ddebug *tab, unsigned int n,
|
||||
const char *modname);
|
||||
|
||||
#if defined(CONFIG_DYNAMIC_DEBUG)
|
||||
extern int ddebug_remove_module(char *mod_name);
|
||||
|
||||
#define __dynamic_dbg_enabled(dd) ({ \
|
||||
int __ret = 0; \
|
||||
if (unlikely((dynamic_debug_enabled & (1LL << DEBUG_HASH)) && \
|
||||
(dynamic_debug_enabled2 & (1LL << DEBUG_HASH2)))) \
|
||||
if (unlikely(dd.flags)) \
|
||||
__ret = 1; \
|
||||
__ret; })
|
||||
|
||||
#define dynamic_pr_debug(fmt, ...) do { \
|
||||
static struct _ddebug descriptor \
|
||||
__used \
|
||||
__attribute__((section("__verbose"), aligned(8))) = \
|
||||
{ KBUILD_MODNAME, __func__, __FILE__, fmt, DEBUG_HASH, \
|
||||
DEBUG_HASH2, __LINE__, _DPRINTK_FLAGS_DEFAULT }; \
|
||||
if (__dynamic_dbg_enabled(descriptor)) \
|
||||
printk(KERN_DEBUG KBUILD_MODNAME ":" pr_fmt(fmt), \
|
||||
##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
|
||||
#define dynamic_dev_dbg(dev, fmt, ...) do { \
|
||||
static struct _ddebug descriptor \
|
||||
__used \
|
||||
__attribute__((section("__verbose"), aligned(8))) = \
|
||||
{ KBUILD_MODNAME, __func__, __FILE__, fmt, DEBUG_HASH, \
|
||||
DEBUG_HASH2, __LINE__, _DPRINTK_FLAGS_DEFAULT }; \
|
||||
if (__dynamic_dbg_enabled(descriptor)) \
|
||||
dev_printk(KERN_DEBUG, dev, \
|
||||
KBUILD_MODNAME ": " pr_fmt(fmt),\
|
||||
##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#else
|
||||
|
||||
static inline int ddebug_remove_module(char *mod)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define dynamic_pr_debug(fmt, ...) do { } while (0)
|
||||
#define dynamic_dev_dbg(dev, format, ...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
#ifndef _DYNAMIC_PRINTK_H
|
||||
#define _DYNAMIC_PRINTK_H
|
||||
|
||||
#define DYNAMIC_DEBUG_HASH_BITS 6
|
||||
#define DEBUG_HASH_TABLE_SIZE (1 << DYNAMIC_DEBUG_HASH_BITS)
|
||||
|
||||
#define TYPE_BOOLEAN 1
|
||||
|
||||
#define DYNAMIC_ENABLED_ALL 0
|
||||
#define DYNAMIC_ENABLED_NONE 1
|
||||
#define DYNAMIC_ENABLED_SOME 2
|
||||
|
||||
extern int dynamic_enabled;
|
||||
|
||||
/* dynamic_printk_enabled, and dynamic_printk_enabled2 are bitmasks in which
|
||||
* bit n is set to 1 if any modname hashes into the bucket n, 0 otherwise. They
|
||||
* use independent hash functions, to reduce the chance of false positives.
|
||||
*/
|
||||
extern long long dynamic_printk_enabled;
|
||||
extern long long dynamic_printk_enabled2;
|
||||
|
||||
struct mod_debug {
|
||||
char *modname;
|
||||
char *logical_modname;
|
||||
char *flag_names;
|
||||
int type;
|
||||
int hash;
|
||||
int hash2;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
int register_dynamic_debug_module(char *mod_name, int type, char *share_name,
|
||||
char *flags, int hash, int hash2);
|
||||
|
||||
#if defined(CONFIG_DYNAMIC_PRINTK_DEBUG)
|
||||
extern int unregister_dynamic_debug_module(char *mod_name);
|
||||
extern int __dynamic_dbg_enabled_helper(char *modname, int type,
|
||||
int value, int hash);
|
||||
|
||||
#define __dynamic_dbg_enabled(module, type, value, level, hash) ({ \
|
||||
int __ret = 0; \
|
||||
if (unlikely((dynamic_printk_enabled & (1LL << DEBUG_HASH)) && \
|
||||
(dynamic_printk_enabled2 & (1LL << DEBUG_HASH2)))) \
|
||||
__ret = __dynamic_dbg_enabled_helper(module, type, \
|
||||
value, hash);\
|
||||
__ret; })
|
||||
|
||||
#define dynamic_pr_debug(fmt, ...) do { \
|
||||
static char mod_name[] \
|
||||
__attribute__((section("__verbose_strings"))) \
|
||||
= KBUILD_MODNAME; \
|
||||
static struct mod_debug descriptor \
|
||||
__used \
|
||||
__attribute__((section("__verbose"), aligned(8))) = \
|
||||
{ mod_name, mod_name, NULL, TYPE_BOOLEAN, DEBUG_HASH, DEBUG_HASH2 };\
|
||||
if (__dynamic_dbg_enabled(KBUILD_MODNAME, TYPE_BOOLEAN, \
|
||||
0, 0, DEBUG_HASH)) \
|
||||
printk(KERN_DEBUG KBUILD_MODNAME ":" fmt, \
|
||||
##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#define dynamic_dev_dbg(dev, format, ...) do { \
|
||||
static char mod_name[] \
|
||||
__attribute__((section("__verbose_strings"))) \
|
||||
= KBUILD_MODNAME; \
|
||||
static struct mod_debug descriptor \
|
||||
__used \
|
||||
__attribute__((section("__verbose"), aligned(8))) = \
|
||||
{ mod_name, mod_name, NULL, TYPE_BOOLEAN, DEBUG_HASH, DEBUG_HASH2 };\
|
||||
if (__dynamic_dbg_enabled(KBUILD_MODNAME, TYPE_BOOLEAN, \
|
||||
0, 0, DEBUG_HASH)) \
|
||||
dev_printk(KERN_DEBUG, dev, \
|
||||
KBUILD_MODNAME ": " format, \
|
||||
##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
#else
|
||||
|
||||
static inline int unregister_dynamic_debug_module(const char *mod_name)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline int __dynamic_dbg_enabled_helper(char *modname, int type,
|
||||
int value, int hash)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define __dynamic_dbg_enabled(module, type, value, level, hash) ({ 0; })
|
||||
#define dynamic_pr_debug(fmt, ...) do { } while (0)
|
||||
#define dynamic_dev_dbg(dev, format, ...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -111,6 +111,15 @@ static inline void elf_core_copy_regs(elf_gregset_t *elfregs, struct pt_regs *re
|
|||
#endif
|
||||
}
|
||||
|
||||
static inline void elf_core_copy_kernel_regs(elf_gregset_t *elfregs, struct pt_regs *regs)
|
||||
{
|
||||
#ifdef ELF_CORE_COPY_KERNEL_REGS
|
||||
ELF_CORE_COPY_KERNEL_REGS((*elfregs), regs);
|
||||
#else
|
||||
elf_core_copy_regs(elfregs, regs);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline int elf_core_copy_task_regs(struct task_struct *t, elf_gregset_t* elfregs)
|
||||
{
|
||||
#ifdef ELF_CORE_COPY_TASK_REGS
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ struct sock_extended_err
|
|||
#define SO_EE_ORIGIN_LOCAL 1
|
||||
#define SO_EE_ORIGIN_ICMP 2
|
||||
#define SO_EE_ORIGIN_ICMP6 3
|
||||
#define SO_EE_ORIGIN_TIMESTAMPING 4
|
||||
|
||||
#define SO_EE_OFFENDER(ee) ((struct sockaddr*)((ee)+1))
|
||||
|
||||
|
|
|
|||
|
|
@ -184,4 +184,25 @@ static inline unsigned compare_ether_addr_64bits(const u8 addr1[6+2],
|
|||
}
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
/**
|
||||
* compare_ether_header - Compare two Ethernet headers
|
||||
* @a: Pointer to Ethernet header
|
||||
* @b: Pointer to Ethernet header
|
||||
*
|
||||
* Compare two ethernet headers, returns 0 if equal.
|
||||
* This assumes that the network header (i.e., IP header) is 4-byte
|
||||
* aligned OR the platform can handle unaligned access. This is the
|
||||
* case for all packets coming into netif_receive_skb or similar
|
||||
* entry points.
|
||||
*/
|
||||
|
||||
static inline int compare_ether_header(const void *a, const void *b)
|
||||
{
|
||||
u32 *a32 = (u32 *)((u8 *)a + 2);
|
||||
u32 *b32 = (u32 *)((u8 *)b + 2);
|
||||
|
||||
return (*(u16 *)a ^ *(u16 *)b) | (a32[0] ^ b32[0]) |
|
||||
(a32[1] ^ b32[1]) | (a32[2] ^ b32[2]);
|
||||
}
|
||||
|
||||
#endif /* _LINUX_ETHERDEVICE_H */
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
* Portions Copyright 2002 Intel (eli.kupermann@intel.com,
|
||||
* christopher.leech@intel.com,
|
||||
* scott.feldman@intel.com)
|
||||
* Portions Copyright (C) Sun Microsystems 2008
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_ETHTOOL_H
|
||||
|
|
@ -287,10 +288,75 @@ enum ethtool_flags {
|
|||
ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */
|
||||
};
|
||||
|
||||
struct ethtool_rxnfc {
|
||||
__u32 cmd;
|
||||
/* The following structures are for supporting RX network flow
|
||||
* classification configuration. Note, all multibyte fields, e.g.,
|
||||
* ip4src, ip4dst, psrc, pdst, spi, etc. are expected to be in network
|
||||
* byte order.
|
||||
*/
|
||||
struct ethtool_tcpip4_spec {
|
||||
__be32 ip4src;
|
||||
__be32 ip4dst;
|
||||
__be16 psrc;
|
||||
__be16 pdst;
|
||||
__u8 tos;
|
||||
};
|
||||
|
||||
struct ethtool_ah_espip4_spec {
|
||||
__be32 ip4src;
|
||||
__be32 ip4dst;
|
||||
__be32 spi;
|
||||
__u8 tos;
|
||||
};
|
||||
|
||||
struct ethtool_rawip4_spec {
|
||||
__be32 ip4src;
|
||||
__be32 ip4dst;
|
||||
__u8 hdata[64];
|
||||
};
|
||||
|
||||
struct ethtool_ether_spec {
|
||||
__be16 ether_type;
|
||||
__u8 frame_size;
|
||||
__u8 eframe[16];
|
||||
};
|
||||
|
||||
#define ETH_RX_NFC_IP4 1
|
||||
#define ETH_RX_NFC_IP6 2
|
||||
|
||||
struct ethtool_usrip4_spec {
|
||||
__be32 ip4src;
|
||||
__be32 ip4dst;
|
||||
__be32 l4_4_bytes;
|
||||
__u8 tos;
|
||||
__u8 ip_ver;
|
||||
__u8 proto;
|
||||
};
|
||||
|
||||
struct ethtool_rx_flow_spec {
|
||||
__u32 flow_type;
|
||||
__u64 data;
|
||||
union {
|
||||
struct ethtool_tcpip4_spec tcp_ip4_spec;
|
||||
struct ethtool_tcpip4_spec udp_ip4_spec;
|
||||
struct ethtool_tcpip4_spec sctp_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec ah_ip4_spec;
|
||||
struct ethtool_ah_espip4_spec esp_ip4_spec;
|
||||
struct ethtool_rawip4_spec raw_ip4_spec;
|
||||
struct ethtool_ether_spec ether_spec;
|
||||
struct ethtool_usrip4_spec usr_ip4_spec;
|
||||
__u8 hdata[64];
|
||||
} h_u, m_u; /* entry, mask */
|
||||
__u64 ring_cookie;
|
||||
__u32 location;
|
||||
};
|
||||
|
||||
struct ethtool_rxnfc {
|
||||
__u32 cmd;
|
||||
__u32 flow_type;
|
||||
/* The rx flow hash value or the rule DB size */
|
||||
__u64 data;
|
||||
struct ethtool_rx_flow_spec fs;
|
||||
__u32 rule_cnt;
|
||||
__u32 rule_locs[0];
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
|
@ -417,8 +483,8 @@ struct ethtool_ops {
|
|||
/* the following hooks are obsolete */
|
||||
int (*self_test_count)(struct net_device *);/* use get_sset_count */
|
||||
int (*get_stats_count)(struct net_device *);/* use get_sset_count */
|
||||
int (*get_rxhash)(struct net_device *, struct ethtool_rxnfc *);
|
||||
int (*set_rxhash)(struct net_device *, struct ethtool_rxnfc *);
|
||||
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, void *);
|
||||
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
|
||||
};
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
|
@ -469,6 +535,12 @@ struct ethtool_ops {
|
|||
#define ETHTOOL_SRXFH 0x0000002a /* Set RX flow hash configuration */
|
||||
#define ETHTOOL_GGRO 0x0000002b /* Get GRO enable (ethtool_value) */
|
||||
#define ETHTOOL_SGRO 0x0000002c /* Set GRO enable (ethtool_value) */
|
||||
#define ETHTOOL_GRXRINGS 0x0000002d /* Get RX rings available for LB */
|
||||
#define ETHTOOL_GRXCLSRLCNT 0x0000002e /* Get RX class rule count */
|
||||
#define ETHTOOL_GRXCLSRULE 0x0000002f /* Get RX classification rule */
|
||||
#define ETHTOOL_GRXCLSRLALL 0x00000030 /* Get all RX classification rule */
|
||||
#define ETHTOOL_SRXCLSRLDEL 0x00000031 /* Delete RX classification rule */
|
||||
#define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */
|
||||
|
||||
/* compatibility with older code */
|
||||
#define SPARC_ETH_GSET ETHTOOL_GSET
|
||||
|
|
@ -565,9 +637,13 @@ struct ethtool_ops {
|
|||
#define UDP_V6_FLOW 0x06
|
||||
#define SCTP_V6_FLOW 0x07
|
||||
#define AH_ESP_V6_FLOW 0x08
|
||||
#define AH_V4_FLOW 0x09
|
||||
#define ESP_V4_FLOW 0x0a
|
||||
#define AH_V6_FLOW 0x0b
|
||||
#define ESP_V6_FLOW 0x0c
|
||||
#define IP_USER_FLOW 0x0d
|
||||
|
||||
/* L3-L4 network traffic flow hash options */
|
||||
#define RXH_DEV_PORT (1 << 0)
|
||||
#define RXH_L2DA (1 << 1)
|
||||
#define RXH_VLAN (1 << 2)
|
||||
#define RXH_L3_PROTO (1 << 3)
|
||||
|
|
@ -577,5 +653,6 @@ struct ethtool_ops {
|
|||
#define RXH_L4_B_2_3 (1 << 7) /* dst port in case of TCP/UDP/SCTP */
|
||||
#define RXH_DISCARD (1 << 31)
|
||||
|
||||
#define RX_CLS_FLOW_DISC 0xffffffffffffffffULL
|
||||
|
||||
#endif /* _LINUX_ETHTOOL_H */
|
||||
|
|
|
|||
|
|
@ -61,7 +61,6 @@ struct file;
|
|||
static inline void eventpoll_init_file(struct file *file)
|
||||
{
|
||||
INIT_LIST_HEAD(&file->f_ep_links);
|
||||
spin_lock_init(&file->f_ep_lock);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -25,10 +25,12 @@
|
|||
#include <linux/types.h>
|
||||
#include <linux/firewire-constants.h>
|
||||
|
||||
#define FW_CDEV_EVENT_BUS_RESET 0x00
|
||||
#define FW_CDEV_EVENT_RESPONSE 0x01
|
||||
#define FW_CDEV_EVENT_REQUEST 0x02
|
||||
#define FW_CDEV_EVENT_ISO_INTERRUPT 0x03
|
||||
#define FW_CDEV_EVENT_BUS_RESET 0x00
|
||||
#define FW_CDEV_EVENT_RESPONSE 0x01
|
||||
#define FW_CDEV_EVENT_REQUEST 0x02
|
||||
#define FW_CDEV_EVENT_ISO_INTERRUPT 0x03
|
||||
#define FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED 0x04
|
||||
#define FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED 0x05
|
||||
|
||||
/**
|
||||
* struct fw_cdev_event_common - Common part of all fw_cdev_event_ types
|
||||
|
|
@ -136,7 +138,24 @@ struct fw_cdev_event_request {
|
|||
* This event is sent when the controller has completed an &fw_cdev_iso_packet
|
||||
* with the %FW_CDEV_ISO_INTERRUPT bit set. In the receive case, the headers
|
||||
* stripped of all packets up until and including the interrupt packet are
|
||||
* returned in the @header field.
|
||||
* returned in the @header field. The amount of header data per packet is as
|
||||
* specified at iso context creation by &fw_cdev_create_iso_context.header_size.
|
||||
*
|
||||
* In version 1 of this ABI, header data consisted of the 1394 isochronous
|
||||
* packet header, followed by quadlets from the packet payload if
|
||||
* &fw_cdev_create_iso_context.header_size > 4.
|
||||
*
|
||||
* In version 2 of this ABI, header data consist of the 1394 isochronous
|
||||
* packet header, followed by a timestamp quadlet if
|
||||
* &fw_cdev_create_iso_context.header_size > 4, followed by quadlets from the
|
||||
* packet payload if &fw_cdev_create_iso_context.header_size > 8.
|
||||
*
|
||||
* Behaviour of ver. 1 of this ABI is no longer available since ABI ver. 2.
|
||||
*
|
||||
* Format of 1394 iso packet header: 16 bits len, 2 bits tag, 6 bits channel,
|
||||
* 4 bits tcode, 4 bits sy, in big endian byte order. Format of timestamp:
|
||||
* 16 bits invalid, 3 bits cycleSeconds, 13 bits cycleCount, in big endian byte
|
||||
* order.
|
||||
*/
|
||||
struct fw_cdev_event_iso_interrupt {
|
||||
__u64 closure;
|
||||
|
|
@ -146,6 +165,35 @@ struct fw_cdev_event_iso_interrupt {
|
|||
__u32 header[0];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct fw_cdev_event_iso_resource - Iso resources were allocated or freed
|
||||
* @closure: See &fw_cdev_event_common;
|
||||
* set by %FW_CDEV_IOC_(DE)ALLOCATE_ISO_RESOURCE(_ONCE) ioctl
|
||||
* @type: %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED or
|
||||
* %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED
|
||||
* @handle: Reference by which an allocated resource can be deallocated
|
||||
* @channel: Isochronous channel which was (de)allocated, if any
|
||||
* @bandwidth: Bandwidth allocation units which were (de)allocated, if any
|
||||
*
|
||||
* An %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED event is sent after an isochronous
|
||||
* resource was allocated at the IRM. The client has to check @channel and
|
||||
* @bandwidth for whether the allocation actually succeeded.
|
||||
*
|
||||
* An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event is sent after an isochronous
|
||||
* resource was deallocated at the IRM. It is also sent when automatic
|
||||
* reallocation after a bus reset failed.
|
||||
*
|
||||
* @channel is <0 if no channel was (de)allocated or if reallocation failed.
|
||||
* @bandwidth is 0 if no bandwidth was (de)allocated or if reallocation failed.
|
||||
*/
|
||||
struct fw_cdev_event_iso_resource {
|
||||
__u64 closure;
|
||||
__u32 type;
|
||||
__u32 handle;
|
||||
__s32 channel;
|
||||
__s32 bandwidth;
|
||||
};
|
||||
|
||||
/**
|
||||
* union fw_cdev_event - Convenience union of fw_cdev_event_ types
|
||||
* @common: Valid for all types
|
||||
|
|
@ -153,6 +201,9 @@ struct fw_cdev_event_iso_interrupt {
|
|||
* @response: Valid if @common.type == %FW_CDEV_EVENT_RESPONSE
|
||||
* @request: Valid if @common.type == %FW_CDEV_EVENT_REQUEST
|
||||
* @iso_interrupt: Valid if @common.type == %FW_CDEV_EVENT_ISO_INTERRUPT
|
||||
* @iso_resource: Valid if @common.type ==
|
||||
* %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED or
|
||||
* %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED
|
||||
*
|
||||
* Convenience union for userspace use. Events could be read(2) into an
|
||||
* appropriately aligned char buffer and then cast to this union for further
|
||||
|
|
@ -163,33 +214,47 @@ struct fw_cdev_event_iso_interrupt {
|
|||
* not fit will be discarded so that the next read(2) will return a new event.
|
||||
*/
|
||||
union fw_cdev_event {
|
||||
struct fw_cdev_event_common common;
|
||||
struct fw_cdev_event_bus_reset bus_reset;
|
||||
struct fw_cdev_event_response response;
|
||||
struct fw_cdev_event_request request;
|
||||
struct fw_cdev_event_iso_interrupt iso_interrupt;
|
||||
struct fw_cdev_event_common common;
|
||||
struct fw_cdev_event_bus_reset bus_reset;
|
||||
struct fw_cdev_event_response response;
|
||||
struct fw_cdev_event_request request;
|
||||
struct fw_cdev_event_iso_interrupt iso_interrupt;
|
||||
struct fw_cdev_event_iso_resource iso_resource;
|
||||
};
|
||||
|
||||
#define FW_CDEV_IOC_GET_INFO _IOWR('#', 0x00, struct fw_cdev_get_info)
|
||||
#define FW_CDEV_IOC_SEND_REQUEST _IOW('#', 0x01, struct fw_cdev_send_request)
|
||||
#define FW_CDEV_IOC_ALLOCATE _IOWR('#', 0x02, struct fw_cdev_allocate)
|
||||
#define FW_CDEV_IOC_DEALLOCATE _IOW('#', 0x03, struct fw_cdev_deallocate)
|
||||
#define FW_CDEV_IOC_SEND_RESPONSE _IOW('#', 0x04, struct fw_cdev_send_response)
|
||||
#define FW_CDEV_IOC_INITIATE_BUS_RESET _IOW('#', 0x05, struct fw_cdev_initiate_bus_reset)
|
||||
#define FW_CDEV_IOC_ADD_DESCRIPTOR _IOWR('#', 0x06, struct fw_cdev_add_descriptor)
|
||||
#define FW_CDEV_IOC_REMOVE_DESCRIPTOR _IOW('#', 0x07, struct fw_cdev_remove_descriptor)
|
||||
/* available since kernel version 2.6.22 */
|
||||
#define FW_CDEV_IOC_GET_INFO _IOWR('#', 0x00, struct fw_cdev_get_info)
|
||||
#define FW_CDEV_IOC_SEND_REQUEST _IOW('#', 0x01, struct fw_cdev_send_request)
|
||||
#define FW_CDEV_IOC_ALLOCATE _IOWR('#', 0x02, struct fw_cdev_allocate)
|
||||
#define FW_CDEV_IOC_DEALLOCATE _IOW('#', 0x03, struct fw_cdev_deallocate)
|
||||
#define FW_CDEV_IOC_SEND_RESPONSE _IOW('#', 0x04, struct fw_cdev_send_response)
|
||||
#define FW_CDEV_IOC_INITIATE_BUS_RESET _IOW('#', 0x05, struct fw_cdev_initiate_bus_reset)
|
||||
#define FW_CDEV_IOC_ADD_DESCRIPTOR _IOWR('#', 0x06, struct fw_cdev_add_descriptor)
|
||||
#define FW_CDEV_IOC_REMOVE_DESCRIPTOR _IOW('#', 0x07, struct fw_cdev_remove_descriptor)
|
||||
#define FW_CDEV_IOC_CREATE_ISO_CONTEXT _IOWR('#', 0x08, struct fw_cdev_create_iso_context)
|
||||
#define FW_CDEV_IOC_QUEUE_ISO _IOWR('#', 0x09, struct fw_cdev_queue_iso)
|
||||
#define FW_CDEV_IOC_START_ISO _IOW('#', 0x0a, struct fw_cdev_start_iso)
|
||||
#define FW_CDEV_IOC_STOP_ISO _IOW('#', 0x0b, struct fw_cdev_stop_iso)
|
||||
|
||||
#define FW_CDEV_IOC_CREATE_ISO_CONTEXT _IOWR('#', 0x08, struct fw_cdev_create_iso_context)
|
||||
#define FW_CDEV_IOC_QUEUE_ISO _IOWR('#', 0x09, struct fw_cdev_queue_iso)
|
||||
#define FW_CDEV_IOC_START_ISO _IOW('#', 0x0a, struct fw_cdev_start_iso)
|
||||
#define FW_CDEV_IOC_STOP_ISO _IOW('#', 0x0b, struct fw_cdev_stop_iso)
|
||||
#define FW_CDEV_IOC_GET_CYCLE_TIMER _IOR('#', 0x0c, struct fw_cdev_get_cycle_timer)
|
||||
/* available since kernel version 2.6.24 */
|
||||
#define FW_CDEV_IOC_GET_CYCLE_TIMER _IOR('#', 0x0c, struct fw_cdev_get_cycle_timer)
|
||||
|
||||
/* FW_CDEV_VERSION History
|
||||
*
|
||||
* 1 Feb 18, 2007: Initial version.
|
||||
/* available since kernel version 2.6.30 */
|
||||
#define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE _IOWR('#', 0x0d, struct fw_cdev_allocate_iso_resource)
|
||||
#define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE _IOW('#', 0x0e, struct fw_cdev_deallocate)
|
||||
#define FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x0f, struct fw_cdev_allocate_iso_resource)
|
||||
#define FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE _IOW('#', 0x10, struct fw_cdev_allocate_iso_resource)
|
||||
#define FW_CDEV_IOC_GET_SPEED _IO('#', 0x11) /* returns speed code */
|
||||
#define FW_CDEV_IOC_SEND_BROADCAST_REQUEST _IOW('#', 0x12, struct fw_cdev_send_request)
|
||||
#define FW_CDEV_IOC_SEND_STREAM_PACKET _IOW('#', 0x13, struct fw_cdev_send_stream_packet)
|
||||
|
||||
/*
|
||||
* FW_CDEV_VERSION History
|
||||
* 1 (2.6.22) - initial version
|
||||
* 2 (2.6.30) - changed &fw_cdev_event_iso_interrupt.header if
|
||||
* &fw_cdev_create_iso_context.header_size is 8 or more
|
||||
*/
|
||||
#define FW_CDEV_VERSION 1
|
||||
#define FW_CDEV_VERSION 2
|
||||
|
||||
/**
|
||||
* struct fw_cdev_get_info - General purpose information ioctl
|
||||
|
|
@ -201,7 +266,7 @@ union fw_cdev_event {
|
|||
* case, @rom_length is updated with the actual length of the
|
||||
* configuration ROM.
|
||||
* @rom: If non-zero, address of a buffer to be filled by a copy of the
|
||||
* local node's configuration ROM
|
||||
* device's configuration ROM
|
||||
* @bus_reset: If non-zero, address of a buffer to be filled by a
|
||||
* &struct fw_cdev_event_bus_reset with the current state
|
||||
* of the bus. This does not cause a bus reset to happen.
|
||||
|
|
@ -229,7 +294,7 @@ struct fw_cdev_get_info {
|
|||
* Send a request to the device. This ioctl implements all outgoing requests.
|
||||
* Both quadlet and block request specify the payload as a pointer to the data
|
||||
* in the @data field. Once the transaction completes, the kernel writes an
|
||||
* &fw_cdev_event_request event back. The @closure field is passed back to
|
||||
* &fw_cdev_event_response event back. The @closure field is passed back to
|
||||
* user space in the response event.
|
||||
*/
|
||||
struct fw_cdev_send_request {
|
||||
|
|
@ -284,9 +349,9 @@ struct fw_cdev_allocate {
|
|||
};
|
||||
|
||||
/**
|
||||
* struct fw_cdev_deallocate - Free an address range allocation
|
||||
* @handle: Handle to the address range, as returned by the kernel when the
|
||||
* range was allocated
|
||||
* struct fw_cdev_deallocate - Free a CSR address range or isochronous resource
|
||||
* @handle: Handle to the address range or iso resource, as returned by the
|
||||
* kernel when the range or resource was allocated
|
||||
*/
|
||||
struct fw_cdev_deallocate {
|
||||
__u32 handle;
|
||||
|
|
@ -329,6 +394,9 @@ struct fw_cdev_initiate_bus_reset {
|
|||
* If successful, the kernel adds the descriptor and writes back a handle to the
|
||||
* kernel-side object to be used for later removal of the descriptor block and
|
||||
* immediate key.
|
||||
*
|
||||
* This ioctl affects the configuration ROMs of all local nodes.
|
||||
* The ioctl only succeeds on device files which represent a local node.
|
||||
*/
|
||||
struct fw_cdev_add_descriptor {
|
||||
__u32 immediate;
|
||||
|
|
@ -344,7 +412,7 @@ struct fw_cdev_add_descriptor {
|
|||
* descriptor was added
|
||||
*
|
||||
* Remove a descriptor block and accompanying immediate key from the local
|
||||
* node's configuration ROM.
|
||||
* nodes' configuration ROMs.
|
||||
*/
|
||||
struct fw_cdev_remove_descriptor {
|
||||
__u32 handle;
|
||||
|
|
@ -370,6 +438,9 @@ struct fw_cdev_remove_descriptor {
|
|||
*
|
||||
* If a context was successfully created, the kernel writes back a handle to the
|
||||
* context, which must be passed in for subsequent operations on that context.
|
||||
*
|
||||
* Note that the effect of a @header_size > 4 depends on
|
||||
* &fw_cdev_get_info.version, as documented at &fw_cdev_event_iso_interrupt.
|
||||
*/
|
||||
struct fw_cdev_create_iso_context {
|
||||
__u32 type;
|
||||
|
|
@ -473,10 +544,91 @@ struct fw_cdev_stop_iso {
|
|||
* The %FW_CDEV_IOC_GET_CYCLE_TIMER ioctl reads the isochronous cycle timer
|
||||
* and also the system clock. This allows to express the receive time of an
|
||||
* isochronous packet as a system time with microsecond accuracy.
|
||||
*
|
||||
* @cycle_timer consists of 7 bits cycleSeconds, 13 bits cycleCount, and
|
||||
* 12 bits cycleOffset, in host byte order.
|
||||
*/
|
||||
struct fw_cdev_get_cycle_timer {
|
||||
__u64 local_time;
|
||||
__u32 cycle_timer;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct fw_cdev_allocate_iso_resource - (De)allocate a channel or bandwidth
|
||||
* @closure: Passed back to userspace in correponding iso resource events
|
||||
* @channels: Isochronous channels of which one is to be (de)allocated
|
||||
* @bandwidth: Isochronous bandwidth units to be (de)allocated
|
||||
* @handle: Handle to the allocation, written by the kernel (only valid in
|
||||
* case of %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE ioctls)
|
||||
*
|
||||
* The %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE ioctl initiates allocation of an
|
||||
* isochronous channel and/or of isochronous bandwidth at the isochronous
|
||||
* resource manager (IRM). Only one of the channels specified in @channels is
|
||||
* allocated. An %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED is sent after
|
||||
* communication with the IRM, indicating success or failure in the event data.
|
||||
* The kernel will automatically reallocate the resources after bus resets.
|
||||
* Should a reallocation fail, an %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event
|
||||
* will be sent. The kernel will also automatically deallocate the resources
|
||||
* when the file descriptor is closed.
|
||||
*
|
||||
* The %FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE ioctl can be used to initiate
|
||||
* deallocation of resources which were allocated as described above.
|
||||
* An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event concludes this operation.
|
||||
*
|
||||
* The %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE ioctl is a variant of allocation
|
||||
* without automatic re- or deallocation.
|
||||
* An %FW_CDEV_EVENT_ISO_RESOURCE_ALLOCATED event concludes this operation,
|
||||
* indicating success or failure in its data.
|
||||
*
|
||||
* The %FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE ioctl works like
|
||||
* %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE except that resources are freed
|
||||
* instead of allocated.
|
||||
* An %FW_CDEV_EVENT_ISO_RESOURCE_DEALLOCATED event concludes this operation.
|
||||
*
|
||||
* To summarize, %FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE allocates iso resources
|
||||
* for the lifetime of the fd or handle.
|
||||
* In contrast, %FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE allocates iso resources
|
||||
* for the duration of a bus generation.
|
||||
*
|
||||
* @channels is a host-endian bitfield with the least significant bit
|
||||
* representing channel 0 and the most significant bit representing channel 63:
|
||||
* 1ULL << c for each channel c that is a candidate for (de)allocation.
|
||||
*
|
||||
* @bandwidth is expressed in bandwidth allocation units, i.e. the time to send
|
||||
* one quadlet of data (payload or header data) at speed S1600.
|
||||
*/
|
||||
struct fw_cdev_allocate_iso_resource {
|
||||
__u64 closure;
|
||||
__u64 channels;
|
||||
__u32 bandwidth;
|
||||
__u32 handle;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct fw_cdev_send_stream_packet - send an asynchronous stream packet
|
||||
* @length: Length of outgoing payload, in bytes
|
||||
* @tag: Data format tag
|
||||
* @channel: Isochronous channel to transmit to
|
||||
* @sy: Synchronization code
|
||||
* @closure: Passed back to userspace in the response event
|
||||
* @data: Userspace pointer to payload
|
||||
* @generation: The bus generation where packet is valid
|
||||
* @speed: Speed to transmit at
|
||||
*
|
||||
* The %FW_CDEV_IOC_SEND_STREAM_PACKET ioctl sends an asynchronous stream packet
|
||||
* to every device which is listening to the specified channel. The kernel
|
||||
* writes an &fw_cdev_event_response event which indicates success or failure of
|
||||
* the transmission.
|
||||
*/
|
||||
struct fw_cdev_send_stream_packet {
|
||||
__u32 length;
|
||||
__u32 tag;
|
||||
__u32 channel;
|
||||
__u32 sy;
|
||||
__u64 closure;
|
||||
__u64 data;
|
||||
__u32 generation;
|
||||
__u32 speed;
|
||||
};
|
||||
|
||||
#endif /* _LINUX_FIREWIRE_CDEV_H */
|
||||
|
|
|
|||
|
|
@ -141,6 +141,7 @@ struct inodes_stat_t {
|
|||
#define MS_RELATIME (1<<21) /* Update atime relative to mtime/ctime. */
|
||||
#define MS_KERNMOUNT (1<<22) /* this is a kern_mount call */
|
||||
#define MS_I_VERSION (1<<23) /* Update inode I_version field */
|
||||
#define MS_STRICTATIME (1<<24) /* Always perform atime updates */
|
||||
#define MS_ACTIVE (1<<30)
|
||||
#define MS_NOUSER (1<<31)
|
||||
|
||||
|
|
@ -848,6 +849,7 @@ struct file {
|
|||
#define f_dentry f_path.dentry
|
||||
#define f_vfsmnt f_path.mnt
|
||||
const struct file_operations *f_op;
|
||||
spinlock_t f_lock; /* f_ep_links, f_flags */
|
||||
atomic_long_t f_count;
|
||||
unsigned int f_flags;
|
||||
fmode_t f_mode;
|
||||
|
|
@ -866,7 +868,6 @@ struct file {
|
|||
#ifdef CONFIG_EPOLL
|
||||
/* Used by fs/eventpoll.c to link all the hooks to this file */
|
||||
struct list_head f_ep_links;
|
||||
spinlock_t f_ep_lock;
|
||||
#endif /* #ifdef CONFIG_EPOLL */
|
||||
struct address_space *f_mapping;
|
||||
#ifdef CONFIG_DEBUG_WRITECOUNT
|
||||
|
|
@ -1063,34 +1064,147 @@ extern int lease_modify(struct file_lock **, int);
|
|||
extern int lock_may_read(struct inode *, loff_t start, unsigned long count);
|
||||
extern int lock_may_write(struct inode *, loff_t start, unsigned long count);
|
||||
#else /* !CONFIG_FILE_LOCKING */
|
||||
#define fcntl_getlk(a, b) ({ -EINVAL; })
|
||||
#define fcntl_setlk(a, b, c, d) ({ -EACCES; })
|
||||
static inline int fcntl_getlk(struct file *file, struct flock __user *user)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int fcntl_setlk(unsigned int fd, struct file *file,
|
||||
unsigned int cmd, struct flock __user *user)
|
||||
{
|
||||
return -EACCES;
|
||||
}
|
||||
|
||||
#if BITS_PER_LONG == 32
|
||||
#define fcntl_getlk64(a, b) ({ -EINVAL; })
|
||||
#define fcntl_setlk64(a, b, c, d) ({ -EACCES; })
|
||||
static inline int fcntl_getlk64(struct file *file, struct flock64 __user *user)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int fcntl_setlk64(unsigned int fd, struct file *file,
|
||||
unsigned int cmd, struct flock64 __user *user)
|
||||
{
|
||||
return -EACCES;
|
||||
}
|
||||
#endif
|
||||
#define fcntl_setlease(a, b, c) ({ 0; })
|
||||
#define fcntl_getlease(a) ({ 0; })
|
||||
#define locks_init_lock(a) ({ })
|
||||
#define __locks_copy_lock(a, b) ({ })
|
||||
#define locks_copy_lock(a, b) ({ })
|
||||
#define locks_remove_posix(a, b) ({ })
|
||||
#define locks_remove_flock(a) ({ })
|
||||
#define posix_test_lock(a, b) ({ 0; })
|
||||
#define posix_lock_file(a, b, c) ({ -ENOLCK; })
|
||||
#define posix_lock_file_wait(a, b) ({ -ENOLCK; })
|
||||
#define posix_unblock_lock(a, b) (-ENOENT)
|
||||
#define vfs_test_lock(a, b) ({ 0; })
|
||||
#define vfs_lock_file(a, b, c, d) (-ENOLCK)
|
||||
#define vfs_cancel_lock(a, b) ({ 0; })
|
||||
#define flock_lock_file_wait(a, b) ({ -ENOLCK; })
|
||||
#define __break_lease(a, b) ({ 0; })
|
||||
#define lease_get_mtime(a, b) ({ })
|
||||
#define generic_setlease(a, b, c) ({ -EINVAL; })
|
||||
#define vfs_setlease(a, b, c) ({ -EINVAL; })
|
||||
#define lease_modify(a, b) ({ -EINVAL; })
|
||||
#define lock_may_read(a, b, c) ({ 1; })
|
||||
#define lock_may_write(a, b, c) ({ 1; })
|
||||
static inline int fcntl_setlease(unsigned int fd, struct file *filp, long arg)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int fcntl_getlease(struct file *filp)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void locks_init_lock(struct file_lock *fl)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline void __locks_copy_lock(struct file_lock *new, struct file_lock *fl)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline void locks_copy_lock(struct file_lock *new, struct file_lock *fl)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline void locks_remove_posix(struct file *filp, fl_owner_t owner)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline void locks_remove_flock(struct file *filp)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline void posix_test_lock(struct file *filp, struct file_lock *fl)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline int posix_lock_file(struct file *filp, struct file_lock *fl,
|
||||
struct file_lock *conflock)
|
||||
{
|
||||
return -ENOLCK;
|
||||
}
|
||||
|
||||
static inline int posix_lock_file_wait(struct file *filp, struct file_lock *fl)
|
||||
{
|
||||
return -ENOLCK;
|
||||
}
|
||||
|
||||
static inline int posix_unblock_lock(struct file *filp,
|
||||
struct file_lock *waiter)
|
||||
{
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
static inline int vfs_test_lock(struct file *filp, struct file_lock *fl)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int vfs_lock_file(struct file *filp, unsigned int cmd,
|
||||
struct file_lock *fl, struct file_lock *conf)
|
||||
{
|
||||
return -ENOLCK;
|
||||
}
|
||||
|
||||
static inline int vfs_cancel_lock(struct file *filp, struct file_lock *fl)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int flock_lock_file_wait(struct file *filp,
|
||||
struct file_lock *request)
|
||||
{
|
||||
return -ENOLCK;
|
||||
}
|
||||
|
||||
static inline int __break_lease(struct inode *inode, unsigned int mode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void lease_get_mtime(struct inode *inode, struct timespec *time)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline int generic_setlease(struct file *filp, long arg,
|
||||
struct file_lock **flp)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int vfs_setlease(struct file *filp, long arg,
|
||||
struct file_lock **lease)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int lease_modify(struct file_lock **before, int arg)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int lock_may_read(struct inode *inode, loff_t start,
|
||||
unsigned long len)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static inline int lock_may_write(struct inode *inode, loff_t start,
|
||||
unsigned long len)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif /* !CONFIG_FILE_LOCKING */
|
||||
|
||||
|
||||
|
|
@ -1606,7 +1720,7 @@ struct super_block *sget(struct file_system_type *type,
|
|||
extern int get_sb_pseudo(struct file_system_type *, char *,
|
||||
const struct super_operations *ops, unsigned long,
|
||||
struct vfsmount *mnt);
|
||||
extern int simple_set_mnt(struct vfsmount *mnt, struct super_block *sb);
|
||||
extern void simple_set_mnt(struct vfsmount *mnt, struct super_block *sb);
|
||||
int __put_super_and_need_restart(struct super_block *sb);
|
||||
|
||||
/* Alas, no aliases. Too much hassle with bringing module.h everywhere */
|
||||
|
|
@ -1687,13 +1801,44 @@ static inline int break_lease(struct inode *inode, unsigned int mode)
|
|||
return 0;
|
||||
}
|
||||
#else /* !CONFIG_FILE_LOCKING */
|
||||
#define locks_mandatory_locked(a) ({ 0; })
|
||||
#define locks_mandatory_area(a, b, c, d, e) ({ 0; })
|
||||
#define __mandatory_lock(a) ({ 0; })
|
||||
#define mandatory_lock(a) ({ 0; })
|
||||
#define locks_verify_locked(a) ({ 0; })
|
||||
#define locks_verify_truncate(a, b, c) ({ 0; })
|
||||
#define break_lease(a, b) ({ 0; })
|
||||
static inline int locks_mandatory_locked(struct inode *inode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int locks_mandatory_area(int rw, struct inode *inode,
|
||||
struct file *filp, loff_t offset,
|
||||
size_t count)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int __mandatory_lock(struct inode *inode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int mandatory_lock(struct inode *inode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int locks_verify_locked(struct inode *inode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int locks_verify_truncate(struct inode *inode, struct file *filp,
|
||||
size_t size)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int break_lease(struct inode *inode, unsigned int mode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_FILE_LOCKING */
|
||||
|
||||
/* fs/open.c */
|
||||
|
|
@ -1730,6 +1875,13 @@ extern void bd_set_size(struct block_device *, loff_t size);
|
|||
extern void bd_forget(struct inode *inode);
|
||||
extern void bdput(struct block_device *);
|
||||
extern struct block_device *open_by_devnum(dev_t, fmode_t);
|
||||
extern void invalidate_bdev(struct block_device *);
|
||||
extern int sync_blockdev(struct block_device *bdev);
|
||||
extern struct super_block *freeze_bdev(struct block_device *);
|
||||
extern int thaw_bdev(struct block_device *bdev, struct super_block *sb);
|
||||
extern int fsync_bdev(struct block_device *);
|
||||
extern int fsync_super(struct super_block *);
|
||||
extern int fsync_no_super(struct block_device *);
|
||||
#else
|
||||
static inline void bd_forget(struct inode *inode) {}
|
||||
#endif
|
||||
|
|
@ -1881,7 +2033,6 @@ static inline void allow_write_access(struct file *file)
|
|||
if (file)
|
||||
atomic_inc(&file->f_path.dentry->d_inode->i_writecount);
|
||||
}
|
||||
extern int do_pipe(int *);
|
||||
extern int do_pipe_flags(int *, int);
|
||||
extern struct file *create_read_pipe(struct file *f, int flags);
|
||||
extern struct file *create_write_pipe(int flags);
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ struct gnet_stats_basic
|
|||
{
|
||||
__u64 bytes;
|
||||
__u32 packets;
|
||||
};
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/**
|
||||
* struct gnet_stats_rate_est - rate estimator
|
||||
|
|
|
|||
|
|
@ -333,11 +333,10 @@ static inline void part_dec_in_flight(struct hd_struct *part)
|
|||
part_to_disk(part)->part0.in_flight--;
|
||||
}
|
||||
|
||||
/* drivers/block/ll_rw_blk.c */
|
||||
/* block/blk-core.c */
|
||||
extern void part_round_stats(int cpu, struct hd_struct *part);
|
||||
|
||||
/* drivers/block/genhd.c */
|
||||
extern int get_blkdev_list(char *, int);
|
||||
/* block/genhd.c */
|
||||
extern void add_disk(struct gendisk *disk);
|
||||
extern void del_gendisk(struct gendisk *gp);
|
||||
extern void unlink_gendisk(struct gendisk *gp);
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ struct hdlc_proto {
|
|||
int (*ioctl)(struct net_device *dev, struct ifreq *ifr);
|
||||
__be16 (*type_trans)(struct sk_buff *skb, struct net_device *dev);
|
||||
int (*netif_rx)(struct sk_buff *skb);
|
||||
int (*xmit)(struct sk_buff *skb, struct net_device *dev);
|
||||
struct module *module;
|
||||
struct hdlc_proto *next; /* next protocol in the list */
|
||||
};
|
||||
|
|
@ -102,6 +103,10 @@ static __inline__ void debug_frame(const struct sk_buff *skb)
|
|||
int hdlc_open(struct net_device *dev);
|
||||
/* Must be called by hardware driver when HDLC device is being closed */
|
||||
void hdlc_close(struct net_device *dev);
|
||||
/* May be used by hardware driver */
|
||||
int hdlc_change_mtu(struct net_device *dev, int new_mtu);
|
||||
/* Must be pointed to by hw driver's dev->netdev_ops->ndo_start_xmit */
|
||||
int hdlc_start_xmit(struct sk_buff *skb, struct net_device *dev);
|
||||
|
||||
int attach_hdlc_protocol(struct net_device *dev, struct hdlc_proto *proto,
|
||||
size_t size);
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ struct hdlcdrv_state {
|
|||
|
||||
struct hdlcdrv_hdlctx {
|
||||
struct hdlcdrv_hdlcbuffer hbuf;
|
||||
long in_hdlc_tx;
|
||||
unsigned long in_hdlc_tx;
|
||||
/*
|
||||
* 0 = send flags
|
||||
* 1 = send txtail (flags)
|
||||
|
|
@ -241,7 +241,6 @@ struct hdlcdrv_state {
|
|||
struct hdlcdrv_bitbuffer bitbuf_hdlc;
|
||||
#endif /* HDLCDRV_DEBUG */
|
||||
|
||||
struct net_device_stats stats;
|
||||
int ptt_keyed;
|
||||
|
||||
/* queued skb for transmission */
|
||||
|
|
|
|||
|
|
@ -207,7 +207,7 @@ struct tok_info {
|
|||
unsigned short exsap_station_id;
|
||||
unsigned short global_int_enable;
|
||||
struct sk_buff *current_skb;
|
||||
struct net_device_stats tr_stats;
|
||||
|
||||
unsigned char auto_speedsave;
|
||||
open_state open_status, sap_status;
|
||||
enum {MANUAL, AUTOMATIC} open_mode;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
#include <asm/io.h>
|
||||
#include <asm/mutex.h>
|
||||
|
||||
#if defined(CONFIG_CRIS) || defined(CONFIG_FRV)
|
||||
#if defined(CONFIG_CRIS) || defined(CONFIG_FRV) || defined(CONFIG_MN10300)
|
||||
# define SUPPORT_VLB_SYNC 0
|
||||
#else
|
||||
# define SUPPORT_VLB_SYNC 1
|
||||
|
|
@ -193,24 +193,8 @@ static inline void ide_std_init_ports(hw_regs_t *hw,
|
|||
hw->io_ports.ctl_addr = ctl_addr;
|
||||
}
|
||||
|
||||
/* for IDE PCI controllers in legacy mode, temporary */
|
||||
static inline int __ide_default_irq(unsigned long base)
|
||||
{
|
||||
switch (base) {
|
||||
#ifdef CONFIG_IA64
|
||||
case 0x1f0: return isa_irq_to_vector(14);
|
||||
case 0x170: return isa_irq_to_vector(15);
|
||||
#else
|
||||
case 0x1f0: return 14;
|
||||
case 0x170: return 15;
|
||||
#endif
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_ARM) || defined(CONFIG_FRV) || defined(CONFIG_M68K) || \
|
||||
defined(CONFIG_MIPS) || defined(CONFIG_MN10300) || defined(CONFIG_PARISC) \
|
||||
|| defined(CONFIG_PPC) || defined(CONFIG_SPARC) || defined(CONFIG_SPARC64)
|
||||
#if defined(CONFIG_ARM) || defined(CONFIG_M68K) || defined(CONFIG_MIPS) || \
|
||||
defined(CONFIG_PARISC) || defined(CONFIG_PPC) || defined(CONFIG_SPARC)
|
||||
#include <asm/ide.h>
|
||||
#else
|
||||
#include <asm-generic/ide_iops.h>
|
||||
|
|
@ -866,7 +850,7 @@ struct ide_host {
|
|||
ide_hwif_t *ports[MAX_HOST_PORTS + 1];
|
||||
unsigned int n_ports;
|
||||
struct device *dev[2];
|
||||
unsigned int (*init_chipset)(struct pci_dev *);
|
||||
int (*init_chipset)(struct pci_dev *);
|
||||
irq_handler_t irq_handler;
|
||||
unsigned long host_flags;
|
||||
void *host_priv;
|
||||
|
|
@ -1146,11 +1130,14 @@ int generic_ide_ioctl(ide_drive_t *, struct block_device *, unsigned, unsigned l
|
|||
extern int ide_vlb_clk;
|
||||
extern int ide_pci_clk;
|
||||
|
||||
extern int ide_end_request (ide_drive_t *drive, int uptodate, int nrsecs);
|
||||
int ide_end_dequeued_request(ide_drive_t *drive, struct request *rq,
|
||||
int uptodate, int nr_sectors);
|
||||
int ide_end_request(ide_drive_t *, int, int);
|
||||
int ide_end_dequeued_request(ide_drive_t *, struct request *, int, int);
|
||||
void ide_kill_rq(ide_drive_t *, struct request *);
|
||||
|
||||
extern void ide_set_handler (ide_drive_t *drive, ide_handler_t *handler, unsigned int timeout, ide_expiry_t *expiry);
|
||||
void __ide_set_handler(ide_drive_t *, ide_handler_t *, unsigned int,
|
||||
ide_expiry_t *);
|
||||
void ide_set_handler(ide_drive_t *, ide_handler_t *, unsigned int,
|
||||
ide_expiry_t *);
|
||||
|
||||
void ide_execute_command(ide_drive_t *, u8, ide_handler_t *, unsigned int,
|
||||
ide_expiry_t *);
|
||||
|
|
@ -1169,13 +1156,14 @@ int ide_busy_sleep(ide_hwif_t *, unsigned long, int);
|
|||
|
||||
int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long);
|
||||
|
||||
ide_startstop_t ide_do_park_unpark(ide_drive_t *, struct request *);
|
||||
ide_startstop_t ide_do_devset(ide_drive_t *, struct request *);
|
||||
|
||||
extern ide_startstop_t ide_do_reset (ide_drive_t *);
|
||||
|
||||
extern int ide_devset_execute(ide_drive_t *drive,
|
||||
const struct ide_devset *setting, int arg);
|
||||
|
||||
extern void ide_do_drive_cmd(ide_drive_t *, struct request *);
|
||||
|
||||
extern void ide_end_drive_cmd(ide_drive_t *, u8, u8);
|
||||
|
||||
void ide_tf_dump(const char *, struct ide_taskfile *);
|
||||
|
|
@ -1200,10 +1188,6 @@ void SELECT_MASK(ide_drive_t *, int);
|
|||
u8 ide_read_error(ide_drive_t *);
|
||||
void ide_read_bcount_and_ireason(ide_drive_t *, u16 *, u8 *);
|
||||
|
||||
extern int drive_is_ready(ide_drive_t *);
|
||||
|
||||
void ide_pktcmd_tf_load(ide_drive_t *, u32, u16, u8);
|
||||
|
||||
int ide_check_atapi_device(ide_drive_t *, const char *);
|
||||
|
||||
void ide_init_pc(struct ide_atapi_pc *);
|
||||
|
|
@ -1251,6 +1235,8 @@ int ide_no_data_taskfile(ide_drive_t *, ide_task_t *);
|
|||
|
||||
int ide_taskfile_ioctl(ide_drive_t *, unsigned int, unsigned long);
|
||||
|
||||
int ide_dev_read_id(ide_drive_t *, u8, u16 *);
|
||||
|
||||
extern int ide_driveid_update(ide_drive_t *);
|
||||
extern int ide_config_drive_speed(ide_drive_t *, u8);
|
||||
extern u8 eighty_ninty_three (ide_drive_t *);
|
||||
|
|
@ -1280,7 +1266,7 @@ static inline int ide_pci_is_in_compatibility_mode(struct pci_dev *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void ide_pci_setup_ports(struct pci_dev *, const struct ide_port_info *, int,
|
||||
void ide_pci_setup_ports(struct pci_dev *, const struct ide_port_info *,
|
||||
hw_regs_t *, hw_regs_t **);
|
||||
void ide_setup_pci_noise(struct pci_dev *, const struct ide_port_info *);
|
||||
|
||||
|
|
@ -1349,10 +1335,6 @@ enum {
|
|||
IDE_HFLAG_ERROR_STOPS_FIFO = (1 << 19),
|
||||
/* serialize ports */
|
||||
IDE_HFLAG_SERIALIZE = (1 << 20),
|
||||
/* use legacy IRQs */
|
||||
IDE_HFLAG_LEGACY_IRQS = (1 << 21),
|
||||
/* force use of legacy IRQs */
|
||||
IDE_HFLAG_FORCE_LEGACY_IRQS = (1 << 22),
|
||||
/* host is TRM290 */
|
||||
IDE_HFLAG_TRM290 = (1 << 23),
|
||||
/* use 32-bit I/O ops */
|
||||
|
|
@ -1380,7 +1362,7 @@ enum {
|
|||
|
||||
struct ide_port_info {
|
||||
char *name;
|
||||
unsigned int (*init_chipset)(struct pci_dev *);
|
||||
int (*init_chipset)(struct pci_dev *);
|
||||
void (*init_iops)(ide_hwif_t *);
|
||||
void (*init_hwif)(ide_hwif_t *);
|
||||
int (*init_dma)(ide_hwif_t *,
|
||||
|
|
@ -1471,6 +1453,7 @@ static inline int config_drive_for_dma(ide_drive_t *drive) { return 0; }
|
|||
|
||||
void ide_dma_lost_irq(ide_drive_t *);
|
||||
void ide_dma_timeout(ide_drive_t *);
|
||||
ide_startstop_t ide_dma_timeout_retry(ide_drive_t *, int);
|
||||
|
||||
#else
|
||||
static inline int ide_id_dma_bug(ide_drive_t *drive) { return 0; }
|
||||
|
|
@ -1482,21 +1465,24 @@ static inline void ide_dma_on(ide_drive_t *drive) { ; }
|
|||
static inline void ide_dma_verbose(ide_drive_t *drive) { ; }
|
||||
static inline int ide_set_dma(ide_drive_t *drive) { return 1; }
|
||||
static inline void ide_check_dma_crc(ide_drive_t *drive) { ; }
|
||||
static inline ide_startstop_t ide_dma_timeout_retry(ide_drive_t *drive, int error) { return ide_stopped; }
|
||||
static inline void ide_release_dma_engine(ide_hwif_t *hwif) { ; }
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA */
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_IDEACPI
|
||||
int ide_acpi_init(void);
|
||||
extern int ide_acpi_exec_tfs(ide_drive_t *drive);
|
||||
extern void ide_acpi_get_timing(ide_hwif_t *hwif);
|
||||
extern void ide_acpi_push_timing(ide_hwif_t *hwif);
|
||||
extern void ide_acpi_init(ide_hwif_t *hwif);
|
||||
void ide_acpi_init_port(ide_hwif_t *);
|
||||
void ide_acpi_port_init_devices(ide_hwif_t *);
|
||||
extern void ide_acpi_set_state(ide_hwif_t *hwif, int on);
|
||||
#else
|
||||
static inline int ide_acpi_init(void) { return 0; }
|
||||
static inline int ide_acpi_exec_tfs(ide_drive_t *drive) { return 0; }
|
||||
static inline void ide_acpi_get_timing(ide_hwif_t *hwif) { ; }
|
||||
static inline void ide_acpi_push_timing(ide_hwif_t *hwif) { ; }
|
||||
static inline void ide_acpi_init(ide_hwif_t *hwif) { ; }
|
||||
static inline void ide_acpi_init_port(ide_hwif_t *hwif) { ; }
|
||||
static inline void ide_acpi_port_init_devices(ide_hwif_t *hwif) { ; }
|
||||
static inline void ide_acpi_set_state(ide_hwif_t *hwif, int on) {}
|
||||
#endif
|
||||
|
|
@ -1530,9 +1516,7 @@ static inline void ide_set_hwifdata (ide_hwif_t * hwif, void *data)
|
|||
hwif->hwif_data = data;
|
||||
}
|
||||
|
||||
const char *ide_xfer_verbose(u8 mode);
|
||||
extern void ide_toggle_bounce(ide_drive_t *drive, int on);
|
||||
extern int ide_set_xfer_rate(ide_drive_t *drive, u8 rate);
|
||||
|
||||
u64 ide_get_lba_addr(struct ide_taskfile *, int);
|
||||
u8 ide_dump_status(ide_drive_t *, const char *, u8);
|
||||
|
|
@ -1571,14 +1555,18 @@ void ide_timing_merge(struct ide_timing *, struct ide_timing *,
|
|||
struct ide_timing *, unsigned int);
|
||||
int ide_timing_compute(ide_drive_t *, u8, struct ide_timing *, int, int);
|
||||
|
||||
#ifdef CONFIG_IDE_XFER_MODE
|
||||
int ide_scan_pio_blacklist(char *);
|
||||
|
||||
const char *ide_xfer_verbose(u8);
|
||||
u8 ide_get_best_pio_mode(ide_drive_t *, u8, u8);
|
||||
|
||||
int ide_set_pio_mode(ide_drive_t *, u8);
|
||||
int ide_set_dma_mode(ide_drive_t *, u8);
|
||||
|
||||
void ide_set_pio(ide_drive_t *, u8);
|
||||
int ide_set_xfer_rate(ide_drive_t *, u8);
|
||||
#else
|
||||
static inline void ide_set_pio(ide_drive_t *drive, u8 pio) { ; }
|
||||
static inline int ide_set_xfer_rate(ide_drive_t *drive, u8 rate) { return -1; }
|
||||
#endif
|
||||
|
||||
static inline void ide_set_max_pio(ide_drive_t *drive)
|
||||
{
|
||||
|
|
@ -1611,6 +1599,10 @@ static inline ide_drive_t *ide_get_pair_dev(ide_drive_t *drive)
|
|||
#define ide_port_for_each_dev(i, dev, port) \
|
||||
for ((i) = 0; ((dev) = (port)->devices[i]) || (i) < MAX_DRIVES; (i)++)
|
||||
|
||||
#define ide_port_for_each_present_dev(i, dev, port) \
|
||||
for ((i) = 0; ((dev) = (port)->devices[i]) || (i) < MAX_DRIVES; (i)++) \
|
||||
if ((dev)->dev_flags & IDE_DFLAG_PRESENT)
|
||||
|
||||
#define ide_host_for_each_port(i, port, host) \
|
||||
for ((i) = 0; ((port) = (host)->ports[i]) || (i) < MAX_HOST_PORTS; (i)++)
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,22 @@
|
|||
#include <linux/types.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
/*
|
||||
* DS bit usage
|
||||
*
|
||||
* TA = transmitter address
|
||||
* RA = receiver address
|
||||
* DA = destination address
|
||||
* SA = source address
|
||||
*
|
||||
* ToDS FromDS A1(RA) A2(TA) A3 A4 Use
|
||||
* -----------------------------------------------------------------
|
||||
* 0 0 DA SA BSSID - IBSS/DLS
|
||||
* 0 1 DA BSSID SA - AP -> STA
|
||||
* 1 0 BSSID SA DA - AP <- STA
|
||||
* 1 1 RA TA DA SA unspecified (WDS)
|
||||
*/
|
||||
|
||||
#define FCS_LEN 4
|
||||
|
||||
#define IEEE80211_FCTL_VERS 0x0003
|
||||
|
|
@ -527,6 +543,8 @@ struct ieee80211_tim_ie {
|
|||
u8 virtual_map[0];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#define WLAN_SA_QUERY_TR_ID_LEN 16
|
||||
|
||||
struct ieee80211_mgmt {
|
||||
__le16 frame_control;
|
||||
__le16 duration;
|
||||
|
|
@ -646,6 +664,10 @@ struct ieee80211_mgmt {
|
|||
u8 action_code;
|
||||
u8 variable[0];
|
||||
} __attribute__((packed)) mesh_action;
|
||||
struct {
|
||||
u8 action;
|
||||
u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN];
|
||||
} __attribute__ ((packed)) sa_query;
|
||||
} u;
|
||||
} __attribute__ ((packed)) action;
|
||||
} u;
|
||||
|
|
@ -655,6 +677,15 @@ struct ieee80211_mgmt {
|
|||
#define IEEE80211_MIN_ACTION_SIZE offsetof(struct ieee80211_mgmt, u.action.u)
|
||||
|
||||
|
||||
/* Management MIC information element (IEEE 802.11w) */
|
||||
struct ieee80211_mmie {
|
||||
u8 element_id;
|
||||
u8 length;
|
||||
__le16 key_id;
|
||||
u8 sequence_number[6];
|
||||
u8 mic[8];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Control frames */
|
||||
struct ieee80211_rts {
|
||||
__le16 frame_control;
|
||||
|
|
@ -836,6 +867,7 @@ struct ieee80211_ht_info {
|
|||
/* Authentication algorithms */
|
||||
#define WLAN_AUTH_OPEN 0
|
||||
#define WLAN_AUTH_SHARED_KEY 1
|
||||
#define WLAN_AUTH_FT 2
|
||||
#define WLAN_AUTH_LEAP 128
|
||||
|
||||
#define WLAN_AUTH_CHALLENGE_LEN 128
|
||||
|
|
@ -899,6 +931,9 @@ enum ieee80211_statuscode {
|
|||
/* 802.11g */
|
||||
WLAN_STATUS_ASSOC_DENIED_NOSHORTTIME = 25,
|
||||
WLAN_STATUS_ASSOC_DENIED_NODSSSOFDM = 26,
|
||||
/* 802.11w */
|
||||
WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY = 30,
|
||||
WLAN_STATUS_ROBUST_MGMT_FRAME_POLICY_VIOLATION = 31,
|
||||
/* 802.11i */
|
||||
WLAN_STATUS_INVALID_IE = 40,
|
||||
WLAN_STATUS_INVALID_GROUP_CIPHER = 41,
|
||||
|
|
@ -1018,6 +1053,8 @@ enum ieee80211_eid {
|
|||
WLAN_EID_HT_INFORMATION = 61,
|
||||
/* 802.11i */
|
||||
WLAN_EID_RSN = 48,
|
||||
WLAN_EID_TIMEOUT_INTERVAL = 56,
|
||||
WLAN_EID_MMIE = 76 /* 802.11w */,
|
||||
WLAN_EID_WPA = 221,
|
||||
WLAN_EID_GENERIC = 221,
|
||||
WLAN_EID_VENDOR_SPECIFIC = 221,
|
||||
|
|
@ -1030,6 +1067,8 @@ enum ieee80211_category {
|
|||
WLAN_CATEGORY_QOS = 1,
|
||||
WLAN_CATEGORY_DLS = 2,
|
||||
WLAN_CATEGORY_BACK = 3,
|
||||
WLAN_CATEGORY_PUBLIC = 4,
|
||||
WLAN_CATEGORY_SA_QUERY = 8,
|
||||
WLAN_CATEGORY_WMM = 17,
|
||||
};
|
||||
|
||||
|
|
@ -1104,6 +1143,12 @@ struct ieee80211_country_ie_triplet {
|
|||
};
|
||||
} __attribute__ ((packed));
|
||||
|
||||
enum ieee80211_timeout_interval_type {
|
||||
WLAN_TIMEOUT_REASSOC_DEADLINE = 1 /* 802.11r */,
|
||||
WLAN_TIMEOUT_KEY_LIFETIME = 2 /* 802.11r */,
|
||||
WLAN_TIMEOUT_ASSOC_COMEBACK = 3 /* 802.11w */,
|
||||
};
|
||||
|
||||
/* BACK action code */
|
||||
enum ieee80211_back_actioncode {
|
||||
WLAN_ACTION_ADDBA_REQ = 0,
|
||||
|
|
@ -1118,6 +1163,13 @@ enum ieee80211_back_parties {
|
|||
WLAN_BACK_TIMER = 2,
|
||||
};
|
||||
|
||||
/* SA Query action */
|
||||
enum ieee80211_sa_query_action {
|
||||
WLAN_ACTION_SA_QUERY_REQUEST = 0,
|
||||
WLAN_ACTION_SA_QUERY_RESPONSE = 1,
|
||||
};
|
||||
|
||||
|
||||
/* A-MSDU 802.11n */
|
||||
#define IEEE80211_QOS_CONTROL_A_MSDU_PRESENT 0x0080
|
||||
|
||||
|
|
@ -1128,6 +1180,7 @@ enum ieee80211_back_parties {
|
|||
/* reserved: 0x000FAC03 */
|
||||
#define WLAN_CIPHER_SUITE_CCMP 0x000FAC04
|
||||
#define WLAN_CIPHER_SUITE_WEP104 0x000FAC05
|
||||
#define WLAN_CIPHER_SUITE_AES_CMAC 0x000FAC06
|
||||
|
||||
#define WLAN_MAX_KEY_LEN 32
|
||||
|
||||
|
|
@ -1185,4 +1238,149 @@ static inline u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr)
|
|||
return hdr->addr1;
|
||||
}
|
||||
|
||||
/**
|
||||
* ieee80211_is_robust_mgmt_frame - check if frame is a robust management frame
|
||||
* @hdr: the frame (buffer must include at least the first octet of payload)
|
||||
*/
|
||||
static inline bool ieee80211_is_robust_mgmt_frame(struct ieee80211_hdr *hdr)
|
||||
{
|
||||
if (ieee80211_is_disassoc(hdr->frame_control) ||
|
||||
ieee80211_is_deauth(hdr->frame_control))
|
||||
return true;
|
||||
|
||||
if (ieee80211_is_action(hdr->frame_control)) {
|
||||
u8 *category;
|
||||
|
||||
/*
|
||||
* Action frames, excluding Public Action frames, are Robust
|
||||
* Management Frames. However, if we are looking at a Protected
|
||||
* frame, skip the check since the data may be encrypted and
|
||||
* the frame has already been found to be a Robust Management
|
||||
* Frame (by the other end).
|
||||
*/
|
||||
if (ieee80211_has_protected(hdr->frame_control))
|
||||
return true;
|
||||
category = ((u8 *) hdr) + 24;
|
||||
return *category != WLAN_CATEGORY_PUBLIC;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* ieee80211_fhss_chan_to_freq - get channel frequency
|
||||
* @channel: the FHSS channel
|
||||
*
|
||||
* Convert IEEE802.11 FHSS channel to frequency (MHz)
|
||||
* Ref IEEE 802.11-2007 section 14.6
|
||||
*/
|
||||
static inline int ieee80211_fhss_chan_to_freq(int channel)
|
||||
{
|
||||
if ((channel > 1) && (channel < 96))
|
||||
return channel + 2400;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* ieee80211_freq_to_fhss_chan - get channel
|
||||
* @freq: the channels frequency
|
||||
*
|
||||
* Convert frequency (MHz) to IEEE802.11 FHSS channel
|
||||
* Ref IEEE 802.11-2007 section 14.6
|
||||
*/
|
||||
static inline int ieee80211_freq_to_fhss_chan(int freq)
|
||||
{
|
||||
if ((freq > 2401) && (freq < 2496))
|
||||
return freq - 2400;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* ieee80211_dsss_chan_to_freq - get channel center frequency
|
||||
* @channel: the DSSS channel
|
||||
*
|
||||
* Convert IEEE802.11 DSSS channel to the center frequency (MHz).
|
||||
* Ref IEEE 802.11-2007 section 15.6
|
||||
*/
|
||||
static inline int ieee80211_dsss_chan_to_freq(int channel)
|
||||
{
|
||||
if ((channel > 0) && (channel < 14))
|
||||
return 2407 + (channel * 5);
|
||||
else if (channel == 14)
|
||||
return 2484;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* ieee80211_freq_to_dsss_chan - get channel
|
||||
* @freq: the frequency
|
||||
*
|
||||
* Convert frequency (MHz) to IEEE802.11 DSSS channel
|
||||
* Ref IEEE 802.11-2007 section 15.6
|
||||
*
|
||||
* This routine selects the channel with the closest center frequency.
|
||||
*/
|
||||
static inline int ieee80211_freq_to_dsss_chan(int freq)
|
||||
{
|
||||
if ((freq >= 2410) && (freq < 2475))
|
||||
return (freq - 2405) / 5;
|
||||
else if ((freq >= 2482) && (freq < 2487))
|
||||
return 14;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Convert IEEE802.11 HR DSSS channel to frequency (MHz) and back
|
||||
* Ref IEEE 802.11-2007 section 18.4.6.2
|
||||
*
|
||||
* The channels and frequencies are the same as those defined for DSSS
|
||||
*/
|
||||
#define ieee80211_hr_chan_to_freq(chan) ieee80211_dsss_chan_to_freq(chan)
|
||||
#define ieee80211_freq_to_hr_chan(freq) ieee80211_freq_to_dsss_chan(freq)
|
||||
|
||||
/* Convert IEEE802.11 ERP channel to frequency (MHz) and back
|
||||
* Ref IEEE 802.11-2007 section 19.4.2
|
||||
*/
|
||||
#define ieee80211_erp_chan_to_freq(chan) ieee80211_hr_chan_to_freq(chan)
|
||||
#define ieee80211_freq_to_erp_chan(freq) ieee80211_freq_to_hr_chan(freq)
|
||||
|
||||
/**
|
||||
* ieee80211_ofdm_chan_to_freq - get channel center frequency
|
||||
* @s_freq: starting frequency == (dotChannelStartingFactor/2) MHz
|
||||
* @channel: the OFDM channel
|
||||
*
|
||||
* Convert IEEE802.11 OFDM channel to center frequency (MHz)
|
||||
* Ref IEEE 802.11-2007 section 17.3.8.3.2
|
||||
*/
|
||||
static inline int ieee80211_ofdm_chan_to_freq(int s_freq, int channel)
|
||||
{
|
||||
if ((channel > 0) && (channel <= 200) &&
|
||||
(s_freq >= 4000))
|
||||
return s_freq + (channel * 5);
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* ieee80211_freq_to_ofdm_channel - get channel
|
||||
* @s_freq: starting frequency == (dotChannelStartingFactor/2) MHz
|
||||
* @freq: the frequency
|
||||
*
|
||||
* Convert frequency (MHz) to IEEE802.11 OFDM channel
|
||||
* Ref IEEE 802.11-2007 section 17.3.8.3.2
|
||||
*
|
||||
* This routine selects the channel with the closest center frequency.
|
||||
*/
|
||||
static inline int ieee80211_freq_to_ofdm_chan(int s_freq, int freq)
|
||||
{
|
||||
if ((freq > (s_freq + 2)) && (freq <= (s_freq + 1202)) &&
|
||||
(s_freq >= 4000))
|
||||
return (freq + 2 - s_freq) / 5;
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif /* LINUX_IEEE80211_H */
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@
|
|||
#define IFF_SLAVE_NEEDARP 0x40 /* need ARPs for validation */
|
||||
#define IFF_ISATAP 0x80 /* ISATAP interface (RFC4214) */
|
||||
#define IFF_MASTER_ARPMON 0x100 /* bonding master, ARP mon in use */
|
||||
#define IFF_WAN_HDLC 0x200 /* WAN HDLC device */
|
||||
|
||||
#define IF_GET_IFACE 0x0001 /* for querying only */
|
||||
#define IF_GET_PROTO 0x0002
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
#ifndef _LINUX_IF_ARCNET_H
|
||||
#define _LINUX_IF_ARCNET_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/if_ether.h>
|
||||
|
||||
|
||||
|
|
@ -57,10 +58,10 @@
|
|||
*/
|
||||
struct arc_rfc1201
|
||||
{
|
||||
uint8_t proto; /* protocol ID field - varies */
|
||||
uint8_t split_flag; /* for use with split packets */
|
||||
__u8 proto; /* protocol ID field - varies */
|
||||
__u8 split_flag; /* for use with split packets */
|
||||
__be16 sequence; /* sequence number */
|
||||
uint8_t payload[0]; /* space remaining in packet (504 bytes)*/
|
||||
__u8 payload[0]; /* space remaining in packet (504 bytes)*/
|
||||
};
|
||||
#define RFC1201_HDR_SIZE 4
|
||||
|
||||
|
|
@ -70,8 +71,8 @@ struct arc_rfc1201
|
|||
*/
|
||||
struct arc_rfc1051
|
||||
{
|
||||
uint8_t proto; /* ARC_P_RFC1051_ARP/RFC1051_IP */
|
||||
uint8_t payload[0]; /* 507 bytes */
|
||||
__u8 proto; /* ARC_P_RFC1051_ARP/RFC1051_IP */
|
||||
__u8 payload[0]; /* 507 bytes */
|
||||
};
|
||||
#define RFC1051_HDR_SIZE 1
|
||||
|
||||
|
|
@ -82,20 +83,20 @@ struct arc_rfc1051
|
|||
*/
|
||||
struct arc_eth_encap
|
||||
{
|
||||
uint8_t proto; /* Always ARC_P_ETHER */
|
||||
__u8 proto; /* Always ARC_P_ETHER */
|
||||
struct ethhdr eth; /* standard ethernet header (yuck!) */
|
||||
uint8_t payload[0]; /* 493 bytes */
|
||||
__u8 payload[0]; /* 493 bytes */
|
||||
};
|
||||
#define ETH_ENCAP_HDR_SIZE 14
|
||||
|
||||
|
||||
struct arc_cap
|
||||
{
|
||||
uint8_t proto;
|
||||
uint8_t cookie[sizeof(int)]; /* Actually NOT sent over the network */
|
||||
__u8 proto;
|
||||
__u8 cookie[sizeof(int)]; /* Actually NOT sent over the network */
|
||||
union {
|
||||
uint8_t ack;
|
||||
uint8_t raw[0]; /* 507 bytes */
|
||||
__u8 ack;
|
||||
__u8 raw[0]; /* 507 bytes */
|
||||
} mes;
|
||||
};
|
||||
|
||||
|
|
@ -109,7 +110,7 @@ struct arc_cap
|
|||
*/
|
||||
struct arc_hardware
|
||||
{
|
||||
uint8_t source, /* source ARCnet - filled in automagically */
|
||||
__u8 source, /* source ARCnet - filled in automagically */
|
||||
dest, /* destination ARCnet - 0 for broadcast */
|
||||
offset[2]; /* offset bytes (some weird semantics) */
|
||||
};
|
||||
|
|
@ -130,7 +131,7 @@ struct archdr
|
|||
struct arc_rfc1051 rfc1051;
|
||||
struct arc_eth_encap eth_encap;
|
||||
struct arc_cap cap;
|
||||
uint8_t raw[0]; /* 508 bytes */
|
||||
__u8 raw[0]; /* 508 bytes */
|
||||
} soft;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _LINUX_IF_ETHER_H
|
||||
#define _LINUX_IF_ETHER_H
|
||||
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
/*
|
||||
* IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble
|
||||
* and FCS/CRC (frame check sequence).
|
||||
* and FCS/CRC (frame check sequence).
|
||||
*/
|
||||
|
||||
#define ETH_ALEN 6 /* Octets in one ethernet addr */
|
||||
|
|
@ -78,12 +78,13 @@
|
|||
#define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */
|
||||
#define ETH_P_AOE 0x88A2 /* ATA over Ethernet */
|
||||
#define ETH_P_TIPC 0x88CA /* TIPC */
|
||||
#define ETH_P_FCOE 0x8906 /* Fibre Channel over Ethernet */
|
||||
#define ETH_P_EDSA 0xDADA /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
|
||||
|
||||
/*
|
||||
* Non DIX types. Won't clash for 1500 types.
|
||||
*/
|
||||
|
||||
|
||||
#define ETH_P_802_3 0x0001 /* Dummy type for 802.3 frames */
|
||||
#define ETH_P_AX25 0x0002 /* Dummy protocol id for AX.25 */
|
||||
#define ETH_P_ALL 0x0003 /* Every packet (be careful!!!) */
|
||||
|
|
@ -109,7 +110,7 @@
|
|||
/*
|
||||
* This is an Ethernet frame header.
|
||||
*/
|
||||
|
||||
|
||||
struct ethhdr {
|
||||
unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
|
||||
unsigned char h_source[ETH_ALEN]; /* source ether addr */
|
||||
|
|
|
|||
|
|
@ -153,7 +153,6 @@ struct frhdr
|
|||
|
||||
struct dlci_local
|
||||
{
|
||||
struct net_device_stats stats;
|
||||
struct net_device *master;
|
||||
struct net_device *slave;
|
||||
struct dlci_conf config;
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
*/
|
||||
struct pppol2tp_addr
|
||||
{
|
||||
pid_t pid; /* pid that owns the fd.
|
||||
__kernel_pid_t pid; /* pid that owns the fd.
|
||||
* 0 => current */
|
||||
int fd; /* FD of UDP socket to use */
|
||||
|
||||
|
|
|
|||
|
|
@ -95,16 +95,16 @@ struct pppoe_tag {
|
|||
} __attribute ((packed));
|
||||
|
||||
/* Tag identifiers */
|
||||
#define PTT_EOL __constant_htons(0x0000)
|
||||
#define PTT_SRV_NAME __constant_htons(0x0101)
|
||||
#define PTT_AC_NAME __constant_htons(0x0102)
|
||||
#define PTT_HOST_UNIQ __constant_htons(0x0103)
|
||||
#define PTT_AC_COOKIE __constant_htons(0x0104)
|
||||
#define PTT_VENDOR __constant_htons(0x0105)
|
||||
#define PTT_RELAY_SID __constant_htons(0x0110)
|
||||
#define PTT_SRV_ERR __constant_htons(0x0201)
|
||||
#define PTT_SYS_ERR __constant_htons(0x0202)
|
||||
#define PTT_GEN_ERR __constant_htons(0x0203)
|
||||
#define PTT_EOL __cpu_to_be16(0x0000)
|
||||
#define PTT_SRV_NAME __cpu_to_be16(0x0101)
|
||||
#define PTT_AC_NAME __cpu_to_be16(0x0102)
|
||||
#define PTT_HOST_UNIQ __cpu_to_be16(0x0103)
|
||||
#define PTT_AC_COOKIE __cpu_to_be16(0x0104)
|
||||
#define PTT_VENDOR __cpu_to_be16(0x0105)
|
||||
#define PTT_RELAY_SID __cpu_to_be16(0x0110)
|
||||
#define PTT_SRV_ERR __cpu_to_be16(0x0201)
|
||||
#define PTT_SYS_ERR __cpu_to_be16(0x0202)
|
||||
#define PTT_GEN_ERR __cpu_to_be16(0x0203)
|
||||
|
||||
struct pppoe_hdr {
|
||||
#if defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@
|
|||
#define TUNSETOFFLOAD _IOW('T', 208, unsigned int)
|
||||
#define TUNSETTXFILTER _IOW('T', 209, unsigned int)
|
||||
#define TUNGETIFF _IOR('T', 210, unsigned int)
|
||||
#define TUNGETSNDBUF _IOR('T', 211, int)
|
||||
#define TUNSETSNDBUF _IOW('T', 212, int)
|
||||
|
||||
/* TUNSETIFF ifr flags */
|
||||
#define IFF_TUN 0x0001
|
||||
|
|
|
|||
|
|
@ -16,14 +16,14 @@
|
|||
#define SIOCDELPRL (SIOCDEVPRIVATE + 6)
|
||||
#define SIOCCHGPRL (SIOCDEVPRIVATE + 7)
|
||||
|
||||
#define GRE_CSUM __constant_htons(0x8000)
|
||||
#define GRE_ROUTING __constant_htons(0x4000)
|
||||
#define GRE_KEY __constant_htons(0x2000)
|
||||
#define GRE_SEQ __constant_htons(0x1000)
|
||||
#define GRE_STRICT __constant_htons(0x0800)
|
||||
#define GRE_REC __constant_htons(0x0700)
|
||||
#define GRE_FLAGS __constant_htons(0x00F8)
|
||||
#define GRE_VERSION __constant_htons(0x0007)
|
||||
#define GRE_CSUM __cpu_to_be16(0x8000)
|
||||
#define GRE_ROUTING __cpu_to_be16(0x4000)
|
||||
#define GRE_KEY __cpu_to_be16(0x2000)
|
||||
#define GRE_SEQ __cpu_to_be16(0x1000)
|
||||
#define GRE_STRICT __cpu_to_be16(0x0800)
|
||||
#define GRE_REC __cpu_to_be16(0x0700)
|
||||
#define GRE_FLAGS __cpu_to_be16(0x00F8)
|
||||
#define GRE_VERSION __cpu_to_be16(0x0007)
|
||||
|
||||
struct ip_tunnel_parm
|
||||
{
|
||||
|
|
|
|||
61
include/linux/ima.h
Normal file
61
include/linux/ima.h
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Copyright (C) 2008 IBM Corporation
|
||||
* Author: Mimi Zohar <zohar@us.ibm.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 2 of the License.
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_IMA_H
|
||||
#define _LINUX_IMA_H
|
||||
|
||||
#include <linux/fs.h>
|
||||
struct linux_binprm;
|
||||
|
||||
#ifdef CONFIG_IMA
|
||||
extern int ima_bprm_check(struct linux_binprm *bprm);
|
||||
extern int ima_inode_alloc(struct inode *inode);
|
||||
extern void ima_inode_free(struct inode *inode);
|
||||
extern int ima_path_check(struct path *path, int mask);
|
||||
extern void ima_file_free(struct file *file);
|
||||
extern int ima_file_mmap(struct file *file, unsigned long prot);
|
||||
extern void ima_shm_check(struct file *file);
|
||||
|
||||
#else
|
||||
static inline int ima_bprm_check(struct linux_binprm *bprm)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int ima_inode_alloc(struct inode *inode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void ima_inode_free(struct inode *inode)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline int ima_path_check(struct path *path, int mask)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void ima_file_free(struct file *file)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static inline int ima_file_mmap(struct file *file, unsigned long prot)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void ima_shm_check(struct file *file)
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif /* CONFIG_IMA_H */
|
||||
#endif /* _LINUX_IMA_H */
|
||||
|
|
@ -44,11 +44,11 @@ struct in6_addr
|
|||
* NOTE: Be aware the IN6ADDR_* constants and in6addr_* externals are defined
|
||||
* in network byte order, not in host byte order as are the IPv4 equivalents
|
||||
*/
|
||||
#ifdef __KERNEL__
|
||||
extern const struct in6_addr in6addr_any;
|
||||
#define IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }
|
||||
extern const struct in6_addr in6addr_loopback;
|
||||
#define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }
|
||||
#ifdef __KERNEL__
|
||||
extern const struct in6_addr in6addr_linklocal_allnodes;
|
||||
#define IN6ADDR_LINKLOCAL_ALLNODES_INIT \
|
||||
{ { { 0xff,2,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }
|
||||
|
|
|
|||
|
|
@ -108,6 +108,7 @@ static inline void ipv4_devconf_setall(struct in_device *in_dev)
|
|||
#define IN_DEV_ARPFILTER(in_dev) IN_DEV_ORCONF((in_dev), ARPFILTER)
|
||||
#define IN_DEV_ARP_ANNOUNCE(in_dev) IN_DEV_MAXCONF((in_dev), ARP_ANNOUNCE)
|
||||
#define IN_DEV_ARP_IGNORE(in_dev) IN_DEV_MAXCONF((in_dev), ARP_IGNORE)
|
||||
#define IN_DEV_ARP_NOTIFY(in_dev) IN_DEV_MAXCONF((in_dev), ARP_NOTIFY)
|
||||
|
||||
struct in_ifaddr
|
||||
{
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@ extern struct cred init_cred;
|
|||
.nr_cpus_allowed = NR_CPUS, \
|
||||
}, \
|
||||
.tasks = LIST_HEAD_INIT(tsk.tasks), \
|
||||
.pushable_tasks = PLIST_NODE_INIT(tsk.pushable_tasks, MAX_PRIO), \
|
||||
.ptraced = LIST_HEAD_INIT(tsk.ptraced), \
|
||||
.ptrace_entry = LIST_HEAD_INIT(tsk.ptrace_entry), \
|
||||
.real_parent = &tsk, \
|
||||
|
|
|
|||
|
|
@ -661,6 +661,7 @@ struct input_absinfo {
|
|||
#define SW_DOCK 0x05 /* set = plugged into dock */
|
||||
#define SW_LINEOUT_INSERT 0x06 /* set = inserted */
|
||||
#define SW_JACK_PHYSICAL_INSERT 0x07 /* set = mechanical switch set */
|
||||
#define SW_VIDEOOUT_INSERT 0x08 /* set = inserted */
|
||||
#define SW_MAX 0x0f
|
||||
#define SW_CNT (SW_MAX+1)
|
||||
|
||||
|
|
|
|||
|
|
@ -61,6 +61,17 @@
|
|||
|
||||
typedef irqreturn_t (*irq_handler_t)(int, void *);
|
||||
|
||||
/**
|
||||
* struct irqaction - per interrupt action descriptor
|
||||
* @handler: interrupt handler function
|
||||
* @flags: flags (see IRQF_* above)
|
||||
* @mask: no comment as it is useless and about to be removed
|
||||
* @name: name of the device
|
||||
* @dev_id: cookie to identify the device
|
||||
* @next: pointer to the next irqaction for shared interrupts
|
||||
* @irq: interrupt number
|
||||
* @dir: pointer to the proc/irq/NN/name entry
|
||||
*/
|
||||
struct irqaction {
|
||||
irq_handler_t handler;
|
||||
unsigned long flags;
|
||||
|
|
@ -462,11 +473,18 @@ static inline void init_irq_proc(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_GENERIC_HARDIRQS) && defined(CONFIG_DEBUG_SHIRQ)
|
||||
extern void debug_poll_all_shared_irqs(void);
|
||||
#else
|
||||
static inline void debug_poll_all_shared_irqs(void) { }
|
||||
#endif
|
||||
|
||||
int show_interrupts(struct seq_file *p, void *v);
|
||||
|
||||
struct irq_desc;
|
||||
|
||||
extern int early_irq_init(void);
|
||||
extern int arch_probe_nr_irqs(void);
|
||||
extern int arch_early_irq_init(void);
|
||||
extern int arch_init_chip_data(struct irq_desc *desc, int cpu);
|
||||
|
||||
|
|
|
|||
|
|
@ -96,10 +96,10 @@
|
|||
*/
|
||||
struct ip_vs_service_user {
|
||||
/* virtual service addresses */
|
||||
u_int16_t protocol;
|
||||
__u16 protocol;
|
||||
__be32 addr; /* virtual ip address */
|
||||
__be16 port;
|
||||
u_int32_t fwmark; /* firwall mark of service */
|
||||
__u32 fwmark; /* firwall mark of service */
|
||||
|
||||
/* virtual service options */
|
||||
char sched_name[IP_VS_SCHEDNAME_MAXLEN];
|
||||
|
|
@ -119,8 +119,8 @@ struct ip_vs_dest_user {
|
|||
int weight; /* destination weight */
|
||||
|
||||
/* thresholds for active connections */
|
||||
u_int32_t u_threshold; /* upper threshold */
|
||||
u_int32_t l_threshold; /* lower threshold */
|
||||
__u32 u_threshold; /* upper threshold */
|
||||
__u32 l_threshold; /* lower threshold */
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -159,10 +159,10 @@ struct ip_vs_getinfo {
|
|||
/* The argument to IP_VS_SO_GET_SERVICE */
|
||||
struct ip_vs_service_entry {
|
||||
/* which service: user fills in these */
|
||||
u_int16_t protocol;
|
||||
__u16 protocol;
|
||||
__be32 addr; /* virtual address */
|
||||
__be16 port;
|
||||
u_int32_t fwmark; /* firwall mark of service */
|
||||
__u32 fwmark; /* firwall mark of service */
|
||||
|
||||
/* service options */
|
||||
char sched_name[IP_VS_SCHEDNAME_MAXLEN];
|
||||
|
|
@ -184,12 +184,12 @@ struct ip_vs_dest_entry {
|
|||
unsigned conn_flags; /* connection flags */
|
||||
int weight; /* destination weight */
|
||||
|
||||
u_int32_t u_threshold; /* upper threshold */
|
||||
u_int32_t l_threshold; /* lower threshold */
|
||||
__u32 u_threshold; /* upper threshold */
|
||||
__u32 l_threshold; /* lower threshold */
|
||||
|
||||
u_int32_t activeconns; /* active connections */
|
||||
u_int32_t inactconns; /* inactive connections */
|
||||
u_int32_t persistconns; /* persistent connections */
|
||||
__u32 activeconns; /* active connections */
|
||||
__u32 inactconns; /* inactive connections */
|
||||
__u32 persistconns; /* persistent connections */
|
||||
|
||||
/* statistics */
|
||||
struct ip_vs_stats_user stats;
|
||||
|
|
@ -199,10 +199,10 @@ struct ip_vs_dest_entry {
|
|||
/* The argument to IP_VS_SO_GET_DESTS */
|
||||
struct ip_vs_get_dests {
|
||||
/* which service: user fills in these */
|
||||
u_int16_t protocol;
|
||||
__u16 protocol;
|
||||
__be32 addr; /* virtual address */
|
||||
__be16 port;
|
||||
u_int32_t fwmark; /* firwall mark of service */
|
||||
__u32 fwmark; /* firwall mark of service */
|
||||
|
||||
/* number of real servers */
|
||||
unsigned int num_dests;
|
||||
|
|
|
|||
|
|
@ -160,12 +160,10 @@ struct irq_2_iommu;
|
|||
*/
|
||||
struct irq_desc {
|
||||
unsigned int irq;
|
||||
#ifdef CONFIG_SPARSE_IRQ
|
||||
struct timer_rand_state *timer_rand_state;
|
||||
unsigned int *kstat_irqs;
|
||||
# ifdef CONFIG_INTR_REMAP
|
||||
#ifdef CONFIG_INTR_REMAP
|
||||
struct irq_2_iommu *irq_2_iommu;
|
||||
# endif
|
||||
#endif
|
||||
irq_flow_handler_t handle_irq;
|
||||
struct irq_chip *chip;
|
||||
|
|
@ -182,11 +180,11 @@ struct irq_desc {
|
|||
unsigned int irqs_unhandled;
|
||||
spinlock_t lock;
|
||||
#ifdef CONFIG_SMP
|
||||
cpumask_t affinity;
|
||||
cpumask_var_t affinity;
|
||||
unsigned int cpu;
|
||||
#endif
|
||||
#ifdef CONFIG_GENERIC_PENDING_IRQ
|
||||
cpumask_t pending_mask;
|
||||
cpumask_var_t pending_mask;
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_PROC_FS
|
||||
struct proc_dir_entry *dir;
|
||||
|
|
@ -202,12 +200,6 @@ extern void arch_free_chip_data(struct irq_desc *old_desc, struct irq_desc *desc
|
|||
extern struct irq_desc irq_desc[NR_IRQS];
|
||||
#else /* CONFIG_SPARSE_IRQ */
|
||||
extern struct irq_desc *move_irq_desc(struct irq_desc *old_desc, int cpu);
|
||||
|
||||
#define kstat_irqs_this_cpu(DESC) \
|
||||
((DESC)->kstat_irqs[smp_processor_id()])
|
||||
#define kstat_incr_irqs_this_cpu(irqno, DESC) \
|
||||
((DESC)->kstat_irqs[smp_processor_id()]++)
|
||||
|
||||
#endif /* CONFIG_SPARSE_IRQ */
|
||||
|
||||
extern struct irq_desc *irq_to_desc_alloc_cpu(unsigned int irq, int cpu);
|
||||
|
|
@ -226,7 +218,6 @@ irq_remap_to_desc(unsigned int irq, struct irq_desc *desc)
|
|||
* Migration helpers for obsolete names, they will go away:
|
||||
*/
|
||||
#define hw_interrupt_type irq_chip
|
||||
typedef struct irq_chip hw_irq_controller;
|
||||
#define no_irq_type no_irq_chip
|
||||
typedef struct irq_desc irq_desc_t;
|
||||
|
||||
|
|
@ -236,6 +227,7 @@ typedef struct irq_desc irq_desc_t;
|
|||
#include <asm/hw_irq.h>
|
||||
|
||||
extern int setup_irq(unsigned int irq, struct irqaction *new);
|
||||
extern void remove_irq(unsigned int irq, struct irqaction *act);
|
||||
|
||||
#ifdef CONFIG_GENERIC_HARDIRQS
|
||||
|
||||
|
|
@ -280,7 +272,7 @@ static inline int irq_balancing_disabled(unsigned int irq)
|
|||
}
|
||||
|
||||
/* Handle irq action chains: */
|
||||
extern int handle_IRQ_event(unsigned int irq, struct irqaction *action);
|
||||
extern irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction *action);
|
||||
|
||||
/*
|
||||
* Built-in IRQ handlers for various IRQ types,
|
||||
|
|
@ -325,7 +317,7 @@ static inline void generic_handle_irq(unsigned int irq)
|
|||
|
||||
/* Handling of unhandled and spurious interrupts: */
|
||||
extern void note_interrupt(unsigned int irq, struct irq_desc *desc,
|
||||
int action_ret);
|
||||
irqreturn_t action_ret);
|
||||
|
||||
/* Resending of interrupts :*/
|
||||
void check_irq_resend(struct irq_desc *desc, unsigned int irq);
|
||||
|
|
@ -422,4 +414,84 @@ extern int set_irq_msi(unsigned int irq, struct msi_desc *entry);
|
|||
|
||||
#endif /* !CONFIG_S390 */
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
/**
|
||||
* init_alloc_desc_masks - allocate cpumasks for irq_desc
|
||||
* @desc: pointer to irq_desc struct
|
||||
* @cpu: cpu which will be handling the cpumasks
|
||||
* @boot: true if need bootmem
|
||||
*
|
||||
* Allocates affinity and pending_mask cpumask if required.
|
||||
* Returns true if successful (or not required).
|
||||
* Side effect: affinity has all bits set, pending_mask has all bits clear.
|
||||
*/
|
||||
static inline bool init_alloc_desc_masks(struct irq_desc *desc, int cpu,
|
||||
bool boot)
|
||||
{
|
||||
int node;
|
||||
|
||||
if (boot) {
|
||||
alloc_bootmem_cpumask_var(&desc->affinity);
|
||||
cpumask_setall(desc->affinity);
|
||||
|
||||
#ifdef CONFIG_GENERIC_PENDING_IRQ
|
||||
alloc_bootmem_cpumask_var(&desc->pending_mask);
|
||||
cpumask_clear(desc->pending_mask);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
node = cpu_to_node(cpu);
|
||||
|
||||
if (!alloc_cpumask_var_node(&desc->affinity, GFP_ATOMIC, node))
|
||||
return false;
|
||||
cpumask_setall(desc->affinity);
|
||||
|
||||
#ifdef CONFIG_GENERIC_PENDING_IRQ
|
||||
if (!alloc_cpumask_var_node(&desc->pending_mask, GFP_ATOMIC, node)) {
|
||||
free_cpumask_var(desc->affinity);
|
||||
return false;
|
||||
}
|
||||
cpumask_clear(desc->pending_mask);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* init_copy_desc_masks - copy cpumasks for irq_desc
|
||||
* @old_desc: pointer to old irq_desc struct
|
||||
* @new_desc: pointer to new irq_desc struct
|
||||
*
|
||||
* Insures affinity and pending_masks are copied to new irq_desc.
|
||||
* If !CONFIG_CPUMASKS_OFFSTACK the cpumasks are embedded in the
|
||||
* irq_desc struct so the copy is redundant.
|
||||
*/
|
||||
|
||||
static inline void init_copy_desc_masks(struct irq_desc *old_desc,
|
||||
struct irq_desc *new_desc)
|
||||
{
|
||||
#ifdef CONFIG_CPUMASKS_OFFSTACK
|
||||
cpumask_copy(new_desc->affinity, old_desc->affinity);
|
||||
|
||||
#ifdef CONFIG_GENERIC_PENDING_IRQ
|
||||
cpumask_copy(new_desc->pending_mask, old_desc->pending_mask);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
#else /* !CONFIG_SMP */
|
||||
|
||||
static inline bool init_alloc_desc_masks(struct irq_desc *desc, int cpu,
|
||||
bool boot)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
static inline void init_copy_desc_masks(struct irq_desc *old_desc,
|
||||
struct irq_desc *new_desc)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
#endif /* _LINUX_IRQ_H */
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
# define for_each_irq_desc_reverse(irq, desc) \
|
||||
for (irq = nr_irqs - 1; irq >= 0; irq--)
|
||||
|
||||
#else /* CONFIG_GENERIC_HARDIRQS */
|
||||
|
||||
extern int nr_irqs;
|
||||
|
|
@ -28,13 +29,17 @@ extern struct irq_desc *irq_to_desc(unsigned int irq);
|
|||
# define for_each_irq_desc(irq, desc) \
|
||||
for (irq = 0, desc = irq_to_desc(irq); irq < nr_irqs; \
|
||||
irq++, desc = irq_to_desc(irq)) \
|
||||
if (desc)
|
||||
if (!desc) \
|
||||
; \
|
||||
else
|
||||
|
||||
|
||||
# define for_each_irq_desc_reverse(irq, desc) \
|
||||
for (irq = nr_irqs - 1, desc = irq_to_desc(irq); irq >= 0; \
|
||||
irq--, desc = irq_to_desc(irq)) \
|
||||
if (desc)
|
||||
if (!desc) \
|
||||
; \
|
||||
else
|
||||
|
||||
#endif /* CONFIG_GENERIC_HARDIRQS */
|
||||
|
||||
|
|
|
|||
|
|
@ -1,25 +1,17 @@
|
|||
/* irqreturn.h */
|
||||
#ifndef _LINUX_IRQRETURN_H
|
||||
#define _LINUX_IRQRETURN_H
|
||||
|
||||
/*
|
||||
* For 2.4.x compatibility, 2.4.x can use
|
||||
*
|
||||
* typedef void irqreturn_t;
|
||||
* #define IRQ_NONE
|
||||
* #define IRQ_HANDLED
|
||||
* #define IRQ_RETVAL(x)
|
||||
*
|
||||
* To mix old-style and new-style irq handler returns.
|
||||
*
|
||||
* IRQ_NONE means we didn't handle it.
|
||||
* IRQ_HANDLED means that we did have a valid interrupt and handled it.
|
||||
* IRQ_RETVAL(x) selects on the two depending on x being non-zero (for handled)
|
||||
/**
|
||||
* enum irqreturn
|
||||
* @IRQ_NONE interrupt was not from this device
|
||||
* @IRQ_HANDLED interrupt was handled by this device
|
||||
*/
|
||||
typedef int irqreturn_t;
|
||||
enum irqreturn {
|
||||
IRQ_NONE,
|
||||
IRQ_HANDLED,
|
||||
};
|
||||
|
||||
#define IRQ_NONE (0)
|
||||
#define IRQ_HANDLED (1)
|
||||
#define IRQ_RETVAL(x) ((x) != 0)
|
||||
typedef enum irqreturn irqreturn_t;
|
||||
#define IRQ_RETVAL(x) ((x) != IRQ_NONE)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -33,6 +33,6 @@ struct ivtvfb_dma_frame {
|
|||
};
|
||||
|
||||
#define IVTVFB_IOC_DMA_FRAME _IOW('V', BASE_VIDIOC_PRIVATE+0, struct ivtvfb_dma_frame)
|
||||
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, u_int32_t)
|
||||
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
#ifndef __LINUX_JFFS2_H__
|
||||
#define __LINUX_JFFS2_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/magic.h>
|
||||
|
||||
/* You must include something which defines the C99 uintXX_t types.
|
||||
|
|
@ -91,15 +92,15 @@
|
|||
byteswapping */
|
||||
|
||||
typedef struct {
|
||||
uint32_t v32;
|
||||
__u32 v32;
|
||||
} __attribute__((packed)) jint32_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t m;
|
||||
__u32 m;
|
||||
} __attribute__((packed)) jmode_t;
|
||||
|
||||
typedef struct {
|
||||
uint16_t v16;
|
||||
__u16 v16;
|
||||
} __attribute__((packed)) jint16_t;
|
||||
|
||||
struct jffs2_unknown_node
|
||||
|
|
@ -121,12 +122,12 @@ struct jffs2_raw_dirent
|
|||
jint32_t version;
|
||||
jint32_t ino; /* == zero for unlink */
|
||||
jint32_t mctime;
|
||||
uint8_t nsize;
|
||||
uint8_t type;
|
||||
uint8_t unused[2];
|
||||
__u8 nsize;
|
||||
__u8 type;
|
||||
__u8 unused[2];
|
||||
jint32_t node_crc;
|
||||
jint32_t name_crc;
|
||||
uint8_t name[0];
|
||||
__u8 name[0];
|
||||
};
|
||||
|
||||
/* The JFFS2 raw inode structure: Used for storage on physical media. */
|
||||
|
|
@ -153,12 +154,12 @@ struct jffs2_raw_inode
|
|||
jint32_t offset; /* Where to begin to write. */
|
||||
jint32_t csize; /* (Compressed) data size */
|
||||
jint32_t dsize; /* Size of the node's data. (after decompression) */
|
||||
uint8_t compr; /* Compression algorithm used */
|
||||
uint8_t usercompr; /* Compression algorithm requested by the user */
|
||||
__u8 compr; /* Compression algorithm used */
|
||||
__u8 usercompr; /* Compression algorithm requested by the user */
|
||||
jint16_t flags; /* See JFFS2_INO_FLAG_* */
|
||||
jint32_t data_crc; /* CRC for the (compressed) data. */
|
||||
jint32_t node_crc; /* CRC for the raw inode (excluding data) */
|
||||
uint8_t data[0];
|
||||
__u8 data[0];
|
||||
};
|
||||
|
||||
struct jffs2_raw_xattr {
|
||||
|
|
@ -168,12 +169,12 @@ struct jffs2_raw_xattr {
|
|||
jint32_t hdr_crc;
|
||||
jint32_t xid; /* XATTR identifier number */
|
||||
jint32_t version;
|
||||
uint8_t xprefix;
|
||||
uint8_t name_len;
|
||||
__u8 xprefix;
|
||||
__u8 name_len;
|
||||
jint16_t value_len;
|
||||
jint32_t data_crc;
|
||||
jint32_t node_crc;
|
||||
uint8_t data[0];
|
||||
__u8 data[0];
|
||||
} __attribute__((packed));
|
||||
|
||||
struct jffs2_raw_xref
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
#include <linux/log2.h>
|
||||
#include <linux/typecheck.h>
|
||||
#include <linux/ratelimit.h>
|
||||
#include <linux/dynamic_printk.h>
|
||||
#include <linux/dynamic_debug.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/bug.h>
|
||||
|
||||
|
|
@ -358,9 +358,10 @@ static inline char *pack_hex_byte(char *buf, u8 byte)
|
|||
#if defined(DEBUG)
|
||||
#define pr_debug(fmt, ...) \
|
||||
printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
|
||||
#elif defined(CONFIG_DYNAMIC_PRINTK_DEBUG)
|
||||
#elif defined(CONFIG_DYNAMIC_DEBUG)
|
||||
/* dynamic_pr_debug() uses pr_fmt() internally so we don't need it here */
|
||||
#define pr_debug(fmt, ...) do { \
|
||||
dynamic_pr_debug(pr_fmt(fmt), ##__VA_ARGS__); \
|
||||
dynamic_pr_debug(fmt, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
#else
|
||||
#define pr_debug(fmt, ...) \
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ struct cpu_usage_stat {
|
|||
|
||||
struct kernel_stat {
|
||||
struct cpu_usage_stat cpustat;
|
||||
#ifndef CONFIG_SPARSE_IRQ
|
||||
#ifndef CONFIG_GENERIC_HARDIRQS
|
||||
unsigned int irqs[NR_IRQS];
|
||||
#endif
|
||||
};
|
||||
|
|
@ -41,7 +41,7 @@ DECLARE_PER_CPU(struct kernel_stat, kstat);
|
|||
|
||||
extern unsigned long long nr_context_switches(void);
|
||||
|
||||
#ifndef CONFIG_SPARSE_IRQ
|
||||
#ifndef CONFIG_GENERIC_HARDIRQS
|
||||
#define kstat_irqs_this_cpu(irq) \
|
||||
(kstat_this_cpu.irqs[irq])
|
||||
|
||||
|
|
@ -52,16 +52,19 @@ static inline void kstat_incr_irqs_this_cpu(unsigned int irq,
|
|||
{
|
||||
kstat_this_cpu.irqs[irq]++;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef CONFIG_SPARSE_IRQ
|
||||
static inline unsigned int kstat_irqs_cpu(unsigned int irq, int cpu)
|
||||
{
|
||||
return kstat_cpu(cpu).irqs[irq];
|
||||
}
|
||||
#else
|
||||
#include <linux/irq.h>
|
||||
extern unsigned int kstat_irqs_cpu(unsigned int irq, int cpu);
|
||||
#define kstat_irqs_this_cpu(DESC) \
|
||||
((DESC)->kstat_irqs[smp_processor_id()])
|
||||
#define kstat_incr_irqs_this_cpu(irqno, DESC) \
|
||||
((DESC)->kstat_irqs[smp_processor_id()]++)
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -68,10 +68,13 @@ struct kobject {
|
|||
unsigned int state_in_sysfs:1;
|
||||
unsigned int state_add_uevent_sent:1;
|
||||
unsigned int state_remove_uevent_sent:1;
|
||||
unsigned int uevent_suppress:1;
|
||||
};
|
||||
|
||||
extern int kobject_set_name(struct kobject *kobj, const char *name, ...)
|
||||
__attribute__((format(printf, 2, 3)));
|
||||
extern int kobject_set_name_vargs(struct kobject *kobj, const char *fmt,
|
||||
va_list vargs);
|
||||
|
||||
static inline const char *kobject_name(const struct kobject *kobj)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -182,6 +182,14 @@ struct kprobe_blackpoint {
|
|||
DECLARE_PER_CPU(struct kprobe *, current_kprobe);
|
||||
DECLARE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
|
||||
|
||||
/*
|
||||
* For #ifdef avoidance:
|
||||
*/
|
||||
static inline int kprobes_built_in(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KRETPROBES
|
||||
extern void arch_prepare_kretprobe(struct kretprobe_instance *ri,
|
||||
struct pt_regs *regs);
|
||||
|
|
@ -271,8 +279,16 @@ void unregister_kretprobes(struct kretprobe **rps, int num);
|
|||
void kprobe_flush_task(struct task_struct *tk);
|
||||
void recycle_rp_inst(struct kretprobe_instance *ri, struct hlist_head *head);
|
||||
|
||||
#else /* CONFIG_KPROBES */
|
||||
#else /* !CONFIG_KPROBES: */
|
||||
|
||||
static inline int kprobes_built_in(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline int kprobe_fault_handler(struct pt_regs *regs, int trapnr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline struct kprobe *get_kprobe(void *addr)
|
||||
{
|
||||
return NULL;
|
||||
|
|
@ -329,5 +345,5 @@ static inline void unregister_kretprobes(struct kretprobe **rps, int num)
|
|||
static inline void kprobe_flush_task(struct task_struct *tk)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_KPROBES */
|
||||
#endif /* _LINUX_KPROBES_H */
|
||||
#endif /* CONFIG_KPROBES */
|
||||
#endif /* _LINUX_KPROBES_H */
|
||||
|
|
|
|||
|
|
@ -48,7 +48,10 @@ struct kvm_irq_level {
|
|||
* For IA-64 (APIC model) IOAPIC0: irq 0-23; IOAPIC1: irq 24-47..
|
||||
* For X86 (standard AT mode) PIC0/1: irq 0-15. IOAPIC0: 0-23..
|
||||
*/
|
||||
__u32 irq;
|
||||
union {
|
||||
__u32 irq;
|
||||
__s32 status;
|
||||
};
|
||||
__u32 level;
|
||||
};
|
||||
|
||||
|
|
@ -126,6 +129,7 @@ struct kvm_run {
|
|||
__u64 data_offset; /* relative to kvm_run start */
|
||||
} io;
|
||||
struct {
|
||||
struct kvm_debug_exit_arch arch;
|
||||
} debug;
|
||||
/* KVM_EXIT_MMIO */
|
||||
struct {
|
||||
|
|
@ -217,21 +221,6 @@ struct kvm_interrupt {
|
|||
__u32 irq;
|
||||
};
|
||||
|
||||
struct kvm_breakpoint {
|
||||
__u32 enabled;
|
||||
__u32 padding;
|
||||
__u64 address;
|
||||
};
|
||||
|
||||
/* for KVM_DEBUG_GUEST */
|
||||
struct kvm_debug_guest {
|
||||
/* int */
|
||||
__u32 enabled;
|
||||
__u32 pad;
|
||||
struct kvm_breakpoint breakpoints[4];
|
||||
__u32 singlestep;
|
||||
};
|
||||
|
||||
/* for KVM_GET_DIRTY_LOG */
|
||||
struct kvm_dirty_log {
|
||||
__u32 slot;
|
||||
|
|
@ -292,6 +281,17 @@ struct kvm_s390_interrupt {
|
|||
__u64 parm64;
|
||||
};
|
||||
|
||||
/* for KVM_SET_GUEST_DEBUG */
|
||||
|
||||
#define KVM_GUESTDBG_ENABLE 0x00000001
|
||||
#define KVM_GUESTDBG_SINGLESTEP 0x00000002
|
||||
|
||||
struct kvm_guest_debug {
|
||||
__u32 control;
|
||||
__u32 pad;
|
||||
struct kvm_guest_debug_arch arch;
|
||||
};
|
||||
|
||||
#define KVM_TRC_SHIFT 16
|
||||
/*
|
||||
* kvm trace categories
|
||||
|
|
@ -395,6 +395,57 @@ struct kvm_trace_rec {
|
|||
#define KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21
|
||||
#ifdef __KVM_HAVE_USER_NMI
|
||||
#define KVM_CAP_USER_NMI 22
|
||||
#endif
|
||||
#ifdef __KVM_HAVE_GUEST_DEBUG
|
||||
#define KVM_CAP_SET_GUEST_DEBUG 23
|
||||
#endif
|
||||
#ifdef __KVM_HAVE_PIT
|
||||
#define KVM_CAP_REINJECT_CONTROL 24
|
||||
#endif
|
||||
#ifdef __KVM_HAVE_IOAPIC
|
||||
#define KVM_CAP_IRQ_ROUTING 25
|
||||
#endif
|
||||
#define KVM_CAP_IRQ_INJECT_STATUS 26
|
||||
#ifdef __KVM_HAVE_DEVICE_ASSIGNMENT
|
||||
#define KVM_CAP_DEVICE_DEASSIGNMENT 27
|
||||
#endif
|
||||
|
||||
#ifdef KVM_CAP_IRQ_ROUTING
|
||||
|
||||
struct kvm_irq_routing_irqchip {
|
||||
__u32 irqchip;
|
||||
__u32 pin;
|
||||
};
|
||||
|
||||
struct kvm_irq_routing_msi {
|
||||
__u32 address_lo;
|
||||
__u32 address_hi;
|
||||
__u32 data;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/* gsi routing entry types */
|
||||
#define KVM_IRQ_ROUTING_IRQCHIP 1
|
||||
#define KVM_IRQ_ROUTING_MSI 2
|
||||
|
||||
struct kvm_irq_routing_entry {
|
||||
__u32 gsi;
|
||||
__u32 type;
|
||||
__u32 flags;
|
||||
__u32 pad;
|
||||
union {
|
||||
struct kvm_irq_routing_irqchip irqchip;
|
||||
struct kvm_irq_routing_msi msi;
|
||||
__u32 pad[8];
|
||||
} u;
|
||||
};
|
||||
|
||||
struct kvm_irq_routing {
|
||||
__u32 nr;
|
||||
__u32 flags;
|
||||
struct kvm_irq_routing_entry entries[0];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
@ -421,14 +472,19 @@ struct kvm_trace_rec {
|
|||
#define KVM_CREATE_PIT _IO(KVMIO, 0x64)
|
||||
#define KVM_GET_PIT _IOWR(KVMIO, 0x65, struct kvm_pit_state)
|
||||
#define KVM_SET_PIT _IOR(KVMIO, 0x66, struct kvm_pit_state)
|
||||
#define KVM_IRQ_LINE_STATUS _IOWR(KVMIO, 0x67, struct kvm_irq_level)
|
||||
#define KVM_REGISTER_COALESCED_MMIO \
|
||||
_IOW(KVMIO, 0x67, struct kvm_coalesced_mmio_zone)
|
||||
#define KVM_UNREGISTER_COALESCED_MMIO \
|
||||
_IOW(KVMIO, 0x68, struct kvm_coalesced_mmio_zone)
|
||||
#define KVM_ASSIGN_PCI_DEVICE _IOR(KVMIO, 0x69, \
|
||||
struct kvm_assigned_pci_dev)
|
||||
#define KVM_SET_GSI_ROUTING _IOW(KVMIO, 0x6a, struct kvm_irq_routing)
|
||||
#define KVM_ASSIGN_IRQ _IOR(KVMIO, 0x70, \
|
||||
struct kvm_assigned_irq)
|
||||
#define KVM_REINJECT_CONTROL _IO(KVMIO, 0x71)
|
||||
#define KVM_DEASSIGN_PCI_DEVICE _IOW(KVMIO, 0x72, \
|
||||
struct kvm_assigned_pci_dev)
|
||||
|
||||
/*
|
||||
* ioctls for vcpu fds
|
||||
|
|
@ -440,7 +496,8 @@ struct kvm_trace_rec {
|
|||
#define KVM_SET_SREGS _IOW(KVMIO, 0x84, struct kvm_sregs)
|
||||
#define KVM_TRANSLATE _IOWR(KVMIO, 0x85, struct kvm_translation)
|
||||
#define KVM_INTERRUPT _IOW(KVMIO, 0x86, struct kvm_interrupt)
|
||||
#define KVM_DEBUG_GUEST _IOW(KVMIO, 0x87, struct kvm_debug_guest)
|
||||
/* KVM_DEBUG_GUEST is no longer supported, use KVM_SET_GUEST_DEBUG instead */
|
||||
#define KVM_DEBUG_GUEST __KVM_DEPRECATED_DEBUG_GUEST
|
||||
#define KVM_GET_MSRS _IOWR(KVMIO, 0x88, struct kvm_msrs)
|
||||
#define KVM_SET_MSRS _IOW(KVMIO, 0x89, struct kvm_msrs)
|
||||
#define KVM_SET_CPUID _IOW(KVMIO, 0x8a, struct kvm_cpuid)
|
||||
|
|
@ -469,6 +526,29 @@ struct kvm_trace_rec {
|
|||
#define KVM_SET_MP_STATE _IOW(KVMIO, 0x99, struct kvm_mp_state)
|
||||
/* Available with KVM_CAP_NMI */
|
||||
#define KVM_NMI _IO(KVMIO, 0x9a)
|
||||
/* Available with KVM_CAP_SET_GUEST_DEBUG */
|
||||
#define KVM_SET_GUEST_DEBUG _IOW(KVMIO, 0x9b, struct kvm_guest_debug)
|
||||
|
||||
/*
|
||||
* Deprecated interfaces
|
||||
*/
|
||||
struct kvm_breakpoint {
|
||||
__u32 enabled;
|
||||
__u32 padding;
|
||||
__u64 address;
|
||||
};
|
||||
|
||||
struct kvm_debug_guest {
|
||||
__u32 enabled;
|
||||
__u32 pad;
|
||||
struct kvm_breakpoint breakpoints[4];
|
||||
__u32 singlestep;
|
||||
};
|
||||
|
||||
#define __KVM_DEPRECATED_DEBUG_GUEST _IOW(KVMIO, 0x87, struct kvm_debug_guest)
|
||||
|
||||
#define KVM_IA64_VCPU_GET_STACK _IOR(KVMIO, 0x9a, void *)
|
||||
#define KVM_IA64_VCPU_SET_STACK _IOW(KVMIO, 0x9b, void *)
|
||||
|
||||
#define KVM_TRC_INJ_VIRQ (KVM_TRC_HANDLER + 0x02)
|
||||
#define KVM_TRC_REDELIVER_EVT (KVM_TRC_HANDLER + 0x03)
|
||||
|
|
@ -522,6 +602,7 @@ struct kvm_assigned_irq {
|
|||
|
||||
#define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
|
||||
|
||||
#define KVM_DEV_IRQ_ASSIGN_MSI_ACTION KVM_DEV_IRQ_ASSIGN_ENABLE_MSI
|
||||
#define KVM_DEV_IRQ_ASSIGN_ENABLE_MSI (1 << 0)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
#define KVM_REQ_PENDING_TIMER 5
|
||||
#define KVM_REQ_UNHALT 6
|
||||
#define KVM_REQ_MMU_SYNC 7
|
||||
#define KVM_REQ_KVMCLOCK_UPDATE 8
|
||||
|
||||
#define KVM_USERSPACE_IRQ_SOURCE_ID 0
|
||||
|
||||
|
|
@ -73,7 +74,7 @@ struct kvm_vcpu {
|
|||
struct kvm_run *run;
|
||||
int guest_mode;
|
||||
unsigned long requests;
|
||||
struct kvm_guest_debug guest_debug;
|
||||
unsigned long guest_debug;
|
||||
int fpu_active;
|
||||
int guest_fpu_loaded;
|
||||
wait_queue_head_t wq;
|
||||
|
|
@ -107,6 +108,20 @@ struct kvm_memory_slot {
|
|||
int user_alloc;
|
||||
};
|
||||
|
||||
struct kvm_kernel_irq_routing_entry {
|
||||
u32 gsi;
|
||||
int (*set)(struct kvm_kernel_irq_routing_entry *e,
|
||||
struct kvm *kvm, int level);
|
||||
union {
|
||||
struct {
|
||||
unsigned irqchip;
|
||||
unsigned pin;
|
||||
} irqchip;
|
||||
struct msi_msg msi;
|
||||
};
|
||||
struct list_head link;
|
||||
};
|
||||
|
||||
struct kvm {
|
||||
struct mutex lock; /* protects the vcpus array and APIC accesses */
|
||||
spinlock_t mmu_lock;
|
||||
|
|
@ -127,6 +142,11 @@ struct kvm {
|
|||
struct kvm_coalesced_mmio_ring *coalesced_mmio_ring;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HAVE_KVM_IRQCHIP
|
||||
struct list_head irq_routing; /* of kvm_kernel_irq_routing_entry */
|
||||
struct hlist_head mask_notifier_list;
|
||||
#endif
|
||||
|
||||
#ifdef KVM_ARCH_WANT_MMU_NOTIFIER
|
||||
struct mmu_notifier mmu_notifier;
|
||||
unsigned long mmu_notifier_seq;
|
||||
|
|
@ -237,7 +257,6 @@ int kvm_vm_ioctl_set_memory_region(struct kvm *kvm,
|
|||
int user_alloc);
|
||||
long kvm_arch_vm_ioctl(struct file *filp,
|
||||
unsigned int ioctl, unsigned long arg);
|
||||
void kvm_arch_destroy_vm(struct kvm *kvm);
|
||||
|
||||
int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu);
|
||||
int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu);
|
||||
|
|
@ -255,8 +274,8 @@ int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu,
|
|||
struct kvm_mp_state *mp_state);
|
||||
int kvm_arch_vcpu_ioctl_set_mpstate(struct kvm_vcpu *vcpu,
|
||||
struct kvm_mp_state *mp_state);
|
||||
int kvm_arch_vcpu_ioctl_debug_guest(struct kvm_vcpu *vcpu,
|
||||
struct kvm_debug_guest *dbg);
|
||||
int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,
|
||||
struct kvm_guest_debug *dbg);
|
||||
int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *kvm_run);
|
||||
|
||||
int kvm_arch_init(void *opaque);
|
||||
|
|
@ -310,7 +329,6 @@ struct kvm_assigned_dev_kernel {
|
|||
int host_irq;
|
||||
bool host_irq_disabled;
|
||||
int guest_irq;
|
||||
struct msi_msg guest_msi;
|
||||
#define KVM_ASSIGNED_DEV_GUEST_INTX (1 << 0)
|
||||
#define KVM_ASSIGNED_DEV_GUEST_MSI (1 << 1)
|
||||
#define KVM_ASSIGNED_DEV_HOST_INTX (1 << 8)
|
||||
|
|
@ -321,8 +339,21 @@ struct kvm_assigned_dev_kernel {
|
|||
struct pci_dev *dev;
|
||||
struct kvm *kvm;
|
||||
};
|
||||
void kvm_set_irq(struct kvm *kvm, int irq_source_id, int irq, int level);
|
||||
void kvm_notify_acked_irq(struct kvm *kvm, unsigned gsi);
|
||||
|
||||
struct kvm_irq_mask_notifier {
|
||||
void (*func)(struct kvm_irq_mask_notifier *kimn, bool masked);
|
||||
int irq;
|
||||
struct hlist_node link;
|
||||
};
|
||||
|
||||
void kvm_register_irq_mask_notifier(struct kvm *kvm, int irq,
|
||||
struct kvm_irq_mask_notifier *kimn);
|
||||
void kvm_unregister_irq_mask_notifier(struct kvm *kvm, int irq,
|
||||
struct kvm_irq_mask_notifier *kimn);
|
||||
void kvm_fire_mask_notifiers(struct kvm *kvm, int irq, bool mask);
|
||||
|
||||
int kvm_set_irq(struct kvm *kvm, int irq_source_id, int irq, int level);
|
||||
void kvm_notify_acked_irq(struct kvm *kvm, unsigned irqchip, unsigned pin);
|
||||
void kvm_register_irq_ack_notifier(struct kvm *kvm,
|
||||
struct kvm_irq_ack_notifier *kian);
|
||||
void kvm_unregister_irq_ack_notifier(struct kvm_irq_ack_notifier *kian);
|
||||
|
|
@ -464,4 +495,21 @@ static inline int mmu_notifier_retry(struct kvm_vcpu *vcpu, unsigned long mmu_se
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HAVE_KVM_IRQCHIP
|
||||
|
||||
#define KVM_MAX_IRQ_ROUTES 1024
|
||||
|
||||
int kvm_setup_default_irq_routing(struct kvm *kvm);
|
||||
int kvm_set_irq_routing(struct kvm *kvm,
|
||||
const struct kvm_irq_routing_entry *entries,
|
||||
unsigned nr,
|
||||
unsigned flags);
|
||||
void kvm_free_irq_routing(struct kvm *kvm);
|
||||
|
||||
#else
|
||||
|
||||
static inline void kvm_free_irq_routing(struct kvm *kvm) {}
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -40,17 +40,4 @@ typedef unsigned long hfn_t;
|
|||
|
||||
typedef hfn_t pfn_t;
|
||||
|
||||
struct kvm_pio_request {
|
||||
unsigned long count;
|
||||
int cur_count;
|
||||
struct page *guest_pages[2];
|
||||
unsigned guest_page_offset;
|
||||
int in;
|
||||
int port;
|
||||
int size;
|
||||
int string;
|
||||
int down;
|
||||
int rep;
|
||||
};
|
||||
|
||||
#endif /* __KVM_TYPES_H__ */
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
#ifndef _INCLUDE_GUARD_LATENCYTOP_H_
|
||||
#define _INCLUDE_GUARD_LATENCYTOP_H_
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#ifdef CONFIG_LATENCYTOP
|
||||
|
||||
#define LT_SAVECOUNT 32
|
||||
|
|
@ -24,7 +25,14 @@ struct latency_record {
|
|||
|
||||
struct task_struct;
|
||||
|
||||
void account_scheduler_latency(struct task_struct *task, int usecs, int inter);
|
||||
extern int latencytop_enabled;
|
||||
void __account_scheduler_latency(struct task_struct *task, int usecs, int inter);
|
||||
static inline void
|
||||
account_scheduler_latency(struct task_struct *task, int usecs, int inter)
|
||||
{
|
||||
if (unlikely(latencytop_enabled))
|
||||
__account_scheduler_latency(task, usecs, inter);
|
||||
}
|
||||
|
||||
void clear_all_latency_tracing(struct task_struct *p);
|
||||
|
||||
|
|
|
|||
|
|
@ -795,6 +795,7 @@ struct ata_port_operations {
|
|||
ata_reset_fn_t pmp_hardreset;
|
||||
ata_postreset_fn_t pmp_postreset;
|
||||
void (*error_handler)(struct ata_port *ap);
|
||||
void (*lost_interrupt)(struct ata_port *ap);
|
||||
void (*post_internal_cmd)(struct ata_queued_cmd *qc);
|
||||
|
||||
/*
|
||||
|
|
@ -836,6 +837,8 @@ struct ata_port_operations {
|
|||
void (*bmdma_start)(struct ata_queued_cmd *qc);
|
||||
void (*bmdma_stop)(struct ata_queued_cmd *qc);
|
||||
u8 (*bmdma_status)(struct ata_port *ap);
|
||||
|
||||
void (*drain_fifo)(struct ata_queued_cmd *qc);
|
||||
#endif /* CONFIG_ATA_SFF */
|
||||
|
||||
ssize_t (*em_show)(struct ata_port *ap, char *buf);
|
||||
|
|
@ -1008,6 +1011,9 @@ extern int ata_cable_sata(struct ata_port *ap);
|
|||
extern int ata_cable_ignore(struct ata_port *ap);
|
||||
extern int ata_cable_unknown(struct ata_port *ap);
|
||||
|
||||
extern void ata_pio_queue_task(struct ata_port *ap, void *data,
|
||||
unsigned long delay);
|
||||
|
||||
/* Timing helpers */
|
||||
extern unsigned int ata_pio_need_iordy(const struct ata_device *);
|
||||
extern const struct ata_timing *ata_timing_find_mode(u8 xfer_mode);
|
||||
|
|
@ -1572,6 +1578,7 @@ extern bool ata_sff_qc_fill_rtf(struct ata_queued_cmd *qc);
|
|||
extern unsigned int ata_sff_host_intr(struct ata_port *ap,
|
||||
struct ata_queued_cmd *qc);
|
||||
extern irqreturn_t ata_sff_interrupt(int irq, void *dev_instance);
|
||||
extern void ata_sff_lost_interrupt(struct ata_port *ap);
|
||||
extern void ata_sff_freeze(struct ata_port *ap);
|
||||
extern void ata_sff_thaw(struct ata_port *ap);
|
||||
extern int ata_sff_prereset(struct ata_link *link, unsigned long deadline);
|
||||
|
|
@ -1584,6 +1591,7 @@ extern int ata_sff_softreset(struct ata_link *link, unsigned int *classes,
|
|||
extern int sata_sff_hardreset(struct ata_link *link, unsigned int *class,
|
||||
unsigned long deadline);
|
||||
extern void ata_sff_postreset(struct ata_link *link, unsigned int *classes);
|
||||
extern void ata_sff_drain_fifo(struct ata_queued_cmd *qc);
|
||||
extern void ata_sff_error_handler(struct ata_port *ap);
|
||||
extern void ata_sff_post_internal_cmd(struct ata_queued_cmd *qc);
|
||||
extern int ata_sff_port_start(struct ata_port *ap);
|
||||
|
|
|
|||
|
|
@ -1,277 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved.
|
||||
* Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use,
|
||||
* modify, copy, or redistribute it subject to the terms and conditions
|
||||
* of the GNU General Public License version 2.
|
||||
*/
|
||||
|
||||
#ifndef __LM_INTERFACE_DOT_H__
|
||||
#define __LM_INTERFACE_DOT_H__
|
||||
|
||||
|
||||
typedef void (*lm_callback_t) (void *ptr, unsigned int type, void *data);
|
||||
|
||||
/*
|
||||
* lm_mount() flags
|
||||
*
|
||||
* LM_MFLAG_SPECTATOR
|
||||
* GFS is asking to join the filesystem's lockspace, but it doesn't want to
|
||||
* modify the filesystem. The lock module shouldn't assign a journal to the FS
|
||||
* mount. It shouldn't send recovery callbacks to the FS mount. If the node
|
||||
* dies or withdraws, all locks can be wiped immediately.
|
||||
*
|
||||
* LM_MFLAG_CONV_NODROP
|
||||
* Do not allow the dlm to internally resolve conversion deadlocks by demoting
|
||||
* the lock to unlocked and then reacquiring it in the requested mode. Instead,
|
||||
* it should cancel the request and return LM_OUT_CONV_DEADLK.
|
||||
*/
|
||||
|
||||
#define LM_MFLAG_SPECTATOR 0x00000001
|
||||
#define LM_MFLAG_CONV_NODROP 0x00000002
|
||||
|
||||
/*
|
||||
* lm_lockstruct flags
|
||||
*
|
||||
* LM_LSFLAG_LOCAL
|
||||
* The lock_nolock module returns LM_LSFLAG_LOCAL to GFS, indicating that GFS
|
||||
* can make single-node optimizations.
|
||||
*/
|
||||
|
||||
#define LM_LSFLAG_LOCAL 0x00000001
|
||||
|
||||
/*
|
||||
* lm_lockname types
|
||||
*/
|
||||
|
||||
#define LM_TYPE_RESERVED 0x00
|
||||
#define LM_TYPE_NONDISK 0x01
|
||||
#define LM_TYPE_INODE 0x02
|
||||
#define LM_TYPE_RGRP 0x03
|
||||
#define LM_TYPE_META 0x04
|
||||
#define LM_TYPE_IOPEN 0x05
|
||||
#define LM_TYPE_FLOCK 0x06
|
||||
#define LM_TYPE_PLOCK 0x07
|
||||
#define LM_TYPE_QUOTA 0x08
|
||||
#define LM_TYPE_JOURNAL 0x09
|
||||
|
||||
/*
|
||||
* lm_lock() states
|
||||
*
|
||||
* SHARED is compatible with SHARED, not with DEFERRED or EX.
|
||||
* DEFERRED is compatible with DEFERRED, not with SHARED or EX.
|
||||
*/
|
||||
|
||||
#define LM_ST_UNLOCKED 0
|
||||
#define LM_ST_EXCLUSIVE 1
|
||||
#define LM_ST_DEFERRED 2
|
||||
#define LM_ST_SHARED 3
|
||||
|
||||
/*
|
||||
* lm_lock() flags
|
||||
*
|
||||
* LM_FLAG_TRY
|
||||
* Don't wait to acquire the lock if it can't be granted immediately.
|
||||
*
|
||||
* LM_FLAG_TRY_1CB
|
||||
* Send one blocking callback if TRY is set and the lock is not granted.
|
||||
*
|
||||
* LM_FLAG_NOEXP
|
||||
* GFS sets this flag on lock requests it makes while doing journal recovery.
|
||||
* These special requests should not be blocked due to the recovery like
|
||||
* ordinary locks would be.
|
||||
*
|
||||
* LM_FLAG_ANY
|
||||
* A SHARED request may also be granted in DEFERRED, or a DEFERRED request may
|
||||
* also be granted in SHARED. The preferred state is whichever is compatible
|
||||
* with other granted locks, or the specified state if no other locks exist.
|
||||
*
|
||||
* LM_FLAG_PRIORITY
|
||||
* Override fairness considerations. Suppose a lock is held in a shared state
|
||||
* and there is a pending request for the deferred state. A shared lock
|
||||
* request with the priority flag would be allowed to bypass the deferred
|
||||
* request and directly join the other shared lock. A shared lock request
|
||||
* without the priority flag might be forced to wait until the deferred
|
||||
* requested had acquired and released the lock.
|
||||
*/
|
||||
|
||||
#define LM_FLAG_TRY 0x00000001
|
||||
#define LM_FLAG_TRY_1CB 0x00000002
|
||||
#define LM_FLAG_NOEXP 0x00000004
|
||||
#define LM_FLAG_ANY 0x00000008
|
||||
#define LM_FLAG_PRIORITY 0x00000010
|
||||
|
||||
/*
|
||||
* lm_lock() and lm_async_cb return flags
|
||||
*
|
||||
* LM_OUT_ST_MASK
|
||||
* Masks the lower two bits of lock state in the returned value.
|
||||
*
|
||||
* LM_OUT_CACHEABLE
|
||||
* The lock hasn't been released so GFS can continue to cache data for it.
|
||||
*
|
||||
* LM_OUT_CANCELED
|
||||
* The lock request was canceled.
|
||||
*
|
||||
* LM_OUT_ASYNC
|
||||
* The result of the request will be returned in an LM_CB_ASYNC callback.
|
||||
*
|
||||
* LM_OUT_CONV_DEADLK
|
||||
* The lock request was canceled do to a conversion deadlock.
|
||||
*/
|
||||
|
||||
#define LM_OUT_ST_MASK 0x00000003
|
||||
#define LM_OUT_CANCELED 0x00000008
|
||||
#define LM_OUT_ASYNC 0x00000080
|
||||
#define LM_OUT_ERROR 0x00000100
|
||||
|
||||
/*
|
||||
* lm_callback_t types
|
||||
*
|
||||
* LM_CB_NEED_E LM_CB_NEED_D LM_CB_NEED_S
|
||||
* Blocking callback, a remote node is requesting the given lock in
|
||||
* EXCLUSIVE, DEFERRED, or SHARED.
|
||||
*
|
||||
* LM_CB_NEED_RECOVERY
|
||||
* The given journal needs to be recovered.
|
||||
*
|
||||
* LM_CB_ASYNC
|
||||
* The given lock has been granted.
|
||||
*/
|
||||
|
||||
#define LM_CB_NEED_E 257
|
||||
#define LM_CB_NEED_D 258
|
||||
#define LM_CB_NEED_S 259
|
||||
#define LM_CB_NEED_RECOVERY 260
|
||||
#define LM_CB_ASYNC 262
|
||||
|
||||
/*
|
||||
* lm_recovery_done() messages
|
||||
*/
|
||||
|
||||
#define LM_RD_GAVEUP 308
|
||||
#define LM_RD_SUCCESS 309
|
||||
|
||||
|
||||
struct lm_lockname {
|
||||
u64 ln_number;
|
||||
unsigned int ln_type;
|
||||
};
|
||||
|
||||
#define lm_name_equal(name1, name2) \
|
||||
(((name1)->ln_number == (name2)->ln_number) && \
|
||||
((name1)->ln_type == (name2)->ln_type)) \
|
||||
|
||||
struct lm_async_cb {
|
||||
struct lm_lockname lc_name;
|
||||
int lc_ret;
|
||||
};
|
||||
|
||||
struct lm_lockstruct;
|
||||
|
||||
struct lm_lockops {
|
||||
const char *lm_proto_name;
|
||||
|
||||
/*
|
||||
* Mount/Unmount
|
||||
*/
|
||||
|
||||
int (*lm_mount) (char *table_name, char *host_data,
|
||||
lm_callback_t cb, void *cb_data,
|
||||
unsigned int min_lvb_size, int flags,
|
||||
struct lm_lockstruct *lockstruct,
|
||||
struct kobject *fskobj);
|
||||
|
||||
void (*lm_others_may_mount) (void *lockspace);
|
||||
|
||||
void (*lm_unmount) (void *lockspace);
|
||||
|
||||
void (*lm_withdraw) (void *lockspace);
|
||||
|
||||
/*
|
||||
* Lock oriented operations
|
||||
*/
|
||||
|
||||
int (*lm_get_lock) (void *lockspace, struct lm_lockname *name, void **lockp);
|
||||
|
||||
void (*lm_put_lock) (void *lock);
|
||||
|
||||
unsigned int (*lm_lock) (void *lock, unsigned int cur_state,
|
||||
unsigned int req_state, unsigned int flags);
|
||||
|
||||
unsigned int (*lm_unlock) (void *lock, unsigned int cur_state);
|
||||
|
||||
void (*lm_cancel) (void *lock);
|
||||
|
||||
int (*lm_hold_lvb) (void *lock, char **lvbp);
|
||||
void (*lm_unhold_lvb) (void *lock, char *lvb);
|
||||
|
||||
/*
|
||||
* Posix Lock oriented operations
|
||||
*/
|
||||
|
||||
int (*lm_plock_get) (void *lockspace, struct lm_lockname *name,
|
||||
struct file *file, struct file_lock *fl);
|
||||
|
||||
int (*lm_plock) (void *lockspace, struct lm_lockname *name,
|
||||
struct file *file, int cmd, struct file_lock *fl);
|
||||
|
||||
int (*lm_punlock) (void *lockspace, struct lm_lockname *name,
|
||||
struct file *file, struct file_lock *fl);
|
||||
|
||||
/*
|
||||
* Client oriented operations
|
||||
*/
|
||||
|
||||
void (*lm_recovery_done) (void *lockspace, unsigned int jid,
|
||||
unsigned int message);
|
||||
|
||||
struct module *lm_owner;
|
||||
};
|
||||
|
||||
/*
|
||||
* lm_mount() return values
|
||||
*
|
||||
* ls_jid - the journal ID this node should use
|
||||
* ls_first - this node is the first to mount the file system
|
||||
* ls_lvb_size - size in bytes of lock value blocks
|
||||
* ls_lockspace - lock module's context for this file system
|
||||
* ls_ops - lock module's functions
|
||||
* ls_flags - lock module features
|
||||
*/
|
||||
|
||||
struct lm_lockstruct {
|
||||
unsigned int ls_jid;
|
||||
unsigned int ls_first;
|
||||
unsigned int ls_lvb_size;
|
||||
void *ls_lockspace;
|
||||
const struct lm_lockops *ls_ops;
|
||||
int ls_flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* Lock module bottom interface. A lock module makes itself available to GFS
|
||||
* with these functions.
|
||||
*/
|
||||
|
||||
int gfs2_register_lockproto(const struct lm_lockops *proto);
|
||||
void gfs2_unregister_lockproto(const struct lm_lockops *proto);
|
||||
|
||||
/*
|
||||
* Lock module top interface. GFS calls these functions when mounting or
|
||||
* unmounting a file system.
|
||||
*/
|
||||
|
||||
int gfs2_mount_lockproto(char *proto_name, char *table_name, char *host_data,
|
||||
lm_callback_t cb, void *cb_data,
|
||||
unsigned int min_lvb_size, int flags,
|
||||
struct lm_lockstruct *lockstruct,
|
||||
struct kobject *fskobj);
|
||||
|
||||
void gfs2_unmount_lockproto(struct lm_lockstruct *lockstruct);
|
||||
|
||||
void gfs2_withdraw_lockproto(struct lm_lockstruct *lockstruct);
|
||||
|
||||
#endif /* __LM_INTERFACE_DOT_H__ */
|
||||
|
||||
|
|
@ -49,4 +49,5 @@
|
|||
#define FUTEXFS_SUPER_MAGIC 0xBAD1DEA
|
||||
#define INOTIFYFS_SUPER_MAGIC 0x2BAD1DEA
|
||||
|
||||
#define STACK_END_MAGIC 0x57AC6E9D
|
||||
#endif /* __LINUX_MAGIC_H__ */
|
||||
|
|
|
|||
|
|
@ -171,5 +171,6 @@
|
|||
#define VIOTAPE_MAJOR 230
|
||||
|
||||
#define BLOCK_EXT_MAJOR 259
|
||||
#define SCSI_OSD_MAJOR 260 /* open-osd's OSD scsi device */
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -8,33 +8,49 @@ extern struct bus_type maple_bus_type;
|
|||
|
||||
/* Maple Bus command and response codes */
|
||||
enum maple_code {
|
||||
MAPLE_RESPONSE_FILEERR = -5,
|
||||
MAPLE_RESPONSE_AGAIN = -4, /* request should be retransmitted */
|
||||
MAPLE_RESPONSE_BADCMD = -3,
|
||||
MAPLE_RESPONSE_BADFUNC = -2,
|
||||
MAPLE_RESPONSE_NONE = -1, /* unit didn't respond at all */
|
||||
MAPLE_COMMAND_DEVINFO = 1,
|
||||
MAPLE_COMMAND_ALLINFO = 2,
|
||||
MAPLE_COMMAND_RESET = 3,
|
||||
MAPLE_COMMAND_KILL = 4,
|
||||
MAPLE_RESPONSE_DEVINFO = 5,
|
||||
MAPLE_RESPONSE_ALLINFO = 6,
|
||||
MAPLE_RESPONSE_OK = 7,
|
||||
MAPLE_RESPONSE_DATATRF = 8,
|
||||
MAPLE_COMMAND_GETCOND = 9,
|
||||
MAPLE_COMMAND_GETMINFO = 10,
|
||||
MAPLE_COMMAND_BREAD = 11,
|
||||
MAPLE_COMMAND_BWRITE = 12,
|
||||
MAPLE_COMMAND_SETCOND = 14
|
||||
MAPLE_RESPONSE_FILEERR = -5,
|
||||
MAPLE_RESPONSE_AGAIN, /* retransmit */
|
||||
MAPLE_RESPONSE_BADCMD,
|
||||
MAPLE_RESPONSE_BADFUNC,
|
||||
MAPLE_RESPONSE_NONE, /* unit didn't respond*/
|
||||
MAPLE_COMMAND_DEVINFO = 1,
|
||||
MAPLE_COMMAND_ALLINFO,
|
||||
MAPLE_COMMAND_RESET,
|
||||
MAPLE_COMMAND_KILL,
|
||||
MAPLE_RESPONSE_DEVINFO,
|
||||
MAPLE_RESPONSE_ALLINFO,
|
||||
MAPLE_RESPONSE_OK,
|
||||
MAPLE_RESPONSE_DATATRF,
|
||||
MAPLE_COMMAND_GETCOND,
|
||||
MAPLE_COMMAND_GETMINFO,
|
||||
MAPLE_COMMAND_BREAD,
|
||||
MAPLE_COMMAND_BWRITE,
|
||||
MAPLE_COMMAND_BSYNC,
|
||||
MAPLE_COMMAND_SETCOND,
|
||||
MAPLE_COMMAND_MICCONTROL
|
||||
};
|
||||
|
||||
enum maple_file_errors {
|
||||
MAPLE_FILEERR_INVALID_PARTITION = 0x01000000,
|
||||
MAPLE_FILEERR_PHASE_ERROR = 0x02000000,
|
||||
MAPLE_FILEERR_INVALID_BLOCK = 0x04000000,
|
||||
MAPLE_FILEERR_WRITE_ERROR = 0x08000000,
|
||||
MAPLE_FILEERR_INVALID_WRITE_LENGTH = 0x10000000,
|
||||
MAPLE_FILEERR_BAD_CRC = 0x20000000
|
||||
};
|
||||
|
||||
struct maple_buffer {
|
||||
char bufx[0x400];
|
||||
void *buf;
|
||||
};
|
||||
|
||||
struct mapleq {
|
||||
struct list_head list;
|
||||
struct maple_device *dev;
|
||||
void *sendbuf, *recvbuf, *recvbufdcsp;
|
||||
struct maple_buffer *recvbuf;
|
||||
void *sendbuf, *recvbuf_p2;
|
||||
unsigned char length;
|
||||
enum maple_code command;
|
||||
struct mutex mutex;
|
||||
};
|
||||
|
||||
struct maple_devinfo {
|
||||
|
|
@ -52,11 +68,15 @@ struct maple_device {
|
|||
struct maple_driver *driver;
|
||||
struct mapleq *mq;
|
||||
void (*callback) (struct mapleq * mq);
|
||||
void (*fileerr_handler)(struct maple_device *mdev, void *recvbuf);
|
||||
int (*can_unload)(struct maple_device *mdev);
|
||||
unsigned long when, interval, function;
|
||||
struct maple_devinfo devinfo;
|
||||
unsigned char port, unit;
|
||||
char product_name[32];
|
||||
char product_licence[64];
|
||||
atomic_t busy;
|
||||
wait_queue_head_t maple_wait;
|
||||
struct device dev;
|
||||
};
|
||||
|
||||
|
|
@ -72,7 +92,7 @@ void maple_getcond_callback(struct maple_device *dev,
|
|||
int maple_driver_register(struct maple_driver *);
|
||||
void maple_driver_unregister(struct maple_driver *);
|
||||
|
||||
int maple_add_packet_sleeps(struct maple_device *mdev, u32 function,
|
||||
int maple_add_packet(struct maple_device *mdev, u32 function,
|
||||
u32 command, u32 length, void *data);
|
||||
void maple_clear_dev(struct maple_device *mdev);
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ enum matroxfb_ctrl_id {
|
|||
MATROXFB_CID_LAST
|
||||
};
|
||||
|
||||
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, u_int32_t)
|
||||
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -490,6 +490,7 @@
|
|||
/*
|
||||
* R231 (0xE7) - Jack Status
|
||||
*/
|
||||
#define WM8350_JACK_L_LVL 0x0800
|
||||
#define WM8350_JACK_R_LVL 0x0400
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1181,6 +1181,7 @@
|
|||
#define WM8400_FLL_OUTDIV_SHIFT 0 /* FLL_OUTDIV - [2:0] */
|
||||
#define WM8400_FLL_OUTDIV_WIDTH 3 /* FLL_OUTDIV - [2:0] */
|
||||
|
||||
struct wm8400;
|
||||
void wm8400_reset_codec_reg_cache(struct wm8400 *wm8400);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
#define TUN_MINOR 200
|
||||
#define MWAVE_MINOR 219 /* ACP/Mwave Modem */
|
||||
#define MPT_MINOR 220
|
||||
#define MPT2SAS_MINOR 221
|
||||
#define HPET_MINOR 228
|
||||
#define FUSE_MINOR 229
|
||||
#define KVM_MINOR 232
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@ enum {
|
|||
MLX4_CMD_CLOSE_PORT = 0xa,
|
||||
MLX4_CMD_QUERY_HCA = 0xb,
|
||||
MLX4_CMD_QUERY_PORT = 0x43,
|
||||
MLX4_CMD_SENSE_PORT = 0x4d,
|
||||
MLX4_CMD_SET_PORT = 0xc,
|
||||
MLX4_CMD_ACCESS_DDR = 0x2e,
|
||||
MLX4_CMD_MAP_ICM = 0xffa,
|
||||
|
|
|
|||
|
|
@ -155,8 +155,9 @@ enum mlx4_qp_region {
|
|||
};
|
||||
|
||||
enum mlx4_port_type {
|
||||
MLX4_PORT_TYPE_IB = 1 << 0,
|
||||
MLX4_PORT_TYPE_ETH = 1 << 1,
|
||||
MLX4_PORT_TYPE_IB = 1,
|
||||
MLX4_PORT_TYPE_ETH = 2,
|
||||
MLX4_PORT_TYPE_AUTO = 3
|
||||
};
|
||||
|
||||
enum mlx4_special_vlan_idx {
|
||||
|
|
@ -237,6 +238,7 @@ struct mlx4_caps {
|
|||
enum mlx4_port_type port_type[MLX4_MAX_PORTS + 1];
|
||||
u8 supported_type[MLX4_MAX_PORTS + 1];
|
||||
u32 port_mask;
|
||||
enum mlx4_port_type possible_type[MLX4_MAX_PORTS + 1];
|
||||
};
|
||||
|
||||
struct mlx4_buf_list {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef MMIOTRACE_H
|
||||
#define MMIOTRACE_H
|
||||
#ifndef _LINUX_MMIOTRACE_H
|
||||
#define _LINUX_MMIOTRACE_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/list.h>
|
||||
|
|
@ -13,28 +13,34 @@ typedef void (*kmmio_post_handler_t)(struct kmmio_probe *,
|
|||
unsigned long condition, struct pt_regs *);
|
||||
|
||||
struct kmmio_probe {
|
||||
struct list_head list; /* kmmio internal list */
|
||||
unsigned long addr; /* start location of the probe point */
|
||||
unsigned long len; /* length of the probe region */
|
||||
kmmio_pre_handler_t pre_handler; /* Called before addr is executed. */
|
||||
kmmio_post_handler_t post_handler; /* Called after addr is executed */
|
||||
void *private;
|
||||
/* kmmio internal list: */
|
||||
struct list_head list;
|
||||
/* start location of the probe point: */
|
||||
unsigned long addr;
|
||||
/* length of the probe region: */
|
||||
unsigned long len;
|
||||
/* Called before addr is executed: */
|
||||
kmmio_pre_handler_t pre_handler;
|
||||
/* Called after addr is executed: */
|
||||
kmmio_post_handler_t post_handler;
|
||||
void *private;
|
||||
};
|
||||
|
||||
/* kmmio is active by some kmmio_probes? */
|
||||
static inline int is_kmmio_active(void)
|
||||
{
|
||||
extern unsigned int kmmio_count;
|
||||
return kmmio_count;
|
||||
}
|
||||
extern unsigned int kmmio_count;
|
||||
|
||||
extern int register_kmmio_probe(struct kmmio_probe *p);
|
||||
extern void unregister_kmmio_probe(struct kmmio_probe *p);
|
||||
|
||||
#ifdef CONFIG_MMIOTRACE
|
||||
/* kmmio is active by some kmmio_probes? */
|
||||
static inline int is_kmmio_active(void)
|
||||
{
|
||||
return kmmio_count;
|
||||
}
|
||||
|
||||
/* Called from page fault handler. */
|
||||
extern int kmmio_handler(struct pt_regs *regs, unsigned long addr);
|
||||
|
||||
#ifdef CONFIG_MMIOTRACE
|
||||
/* Called from ioremap.c */
|
||||
extern void mmiotrace_ioremap(resource_size_t offset, unsigned long size,
|
||||
void __iomem *addr);
|
||||
|
|
@ -43,7 +49,17 @@ extern void mmiotrace_iounmap(volatile void __iomem *addr);
|
|||
/* For anyone to insert markers. Remember trailing newline. */
|
||||
extern int mmiotrace_printk(const char *fmt, ...)
|
||||
__attribute__ ((format (printf, 1, 2)));
|
||||
#else
|
||||
#else /* !CONFIG_MMIOTRACE: */
|
||||
static inline int is_kmmio_active(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int kmmio_handler(struct pt_regs *regs, unsigned long addr)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void mmiotrace_ioremap(resource_size_t offset,
|
||||
unsigned long size, void __iomem *addr)
|
||||
{
|
||||
|
|
@ -63,28 +79,28 @@ static inline int mmiotrace_printk(const char *fmt, ...)
|
|||
#endif /* CONFIG_MMIOTRACE */
|
||||
|
||||
enum mm_io_opcode {
|
||||
MMIO_READ = 0x1, /* struct mmiotrace_rw */
|
||||
MMIO_WRITE = 0x2, /* struct mmiotrace_rw */
|
||||
MMIO_PROBE = 0x3, /* struct mmiotrace_map */
|
||||
MMIO_UNPROBE = 0x4, /* struct mmiotrace_map */
|
||||
MMIO_UNKNOWN_OP = 0x5, /* struct mmiotrace_rw */
|
||||
MMIO_READ = 0x1, /* struct mmiotrace_rw */
|
||||
MMIO_WRITE = 0x2, /* struct mmiotrace_rw */
|
||||
MMIO_PROBE = 0x3, /* struct mmiotrace_map */
|
||||
MMIO_UNPROBE = 0x4, /* struct mmiotrace_map */
|
||||
MMIO_UNKNOWN_OP = 0x5, /* struct mmiotrace_rw */
|
||||
};
|
||||
|
||||
struct mmiotrace_rw {
|
||||
resource_size_t phys; /* PCI address of register */
|
||||
unsigned long value;
|
||||
unsigned long pc; /* optional program counter */
|
||||
int map_id;
|
||||
unsigned char opcode; /* one of MMIO_{READ,WRITE,UNKNOWN_OP} */
|
||||
unsigned char width; /* size of register access in bytes */
|
||||
resource_size_t phys; /* PCI address of register */
|
||||
unsigned long value;
|
||||
unsigned long pc; /* optional program counter */
|
||||
int map_id;
|
||||
unsigned char opcode; /* one of MMIO_{READ,WRITE,UNKNOWN_OP} */
|
||||
unsigned char width; /* size of register access in bytes */
|
||||
};
|
||||
|
||||
struct mmiotrace_map {
|
||||
resource_size_t phys; /* base address in PCI space */
|
||||
unsigned long virt; /* base virtual address */
|
||||
unsigned long len; /* mapping size */
|
||||
int map_id;
|
||||
unsigned char opcode; /* MMIO_PROBE or MMIO_UNPROBE */
|
||||
resource_size_t phys; /* base address in PCI space */
|
||||
unsigned long virt; /* base virtual address */
|
||||
unsigned long len; /* mapping size */
|
||||
int map_id;
|
||||
unsigned char opcode; /* MMIO_PROBE or MMIO_UNPROBE */
|
||||
};
|
||||
|
||||
/* in kernel/trace/trace_mmiotrace.c */
|
||||
|
|
@ -94,4 +110,4 @@ extern void mmio_trace_rw(struct mmiotrace_rw *rw);
|
|||
extern void mmio_trace_mapping(struct mmiotrace_map *map);
|
||||
extern int mmio_trace_printk(const char *fmt, va_list args);
|
||||
|
||||
#endif /* MMIOTRACE_H */
|
||||
#endif /* _LINUX_MMIOTRACE_H */
|
||||
|
|
|
|||
|
|
@ -454,4 +454,13 @@ struct dmi_system_id {
|
|||
|
||||
#define DMI_MATCH(a, b) { a, b }
|
||||
|
||||
#define PLATFORM_NAME_SIZE 20
|
||||
#define PLATFORM_MODULE_PREFIX "platform:"
|
||||
|
||||
struct platform_device_id {
|
||||
char name[PLATFORM_NAME_SIZE];
|
||||
kernel_ulong_t driver_data
|
||||
__attribute__((aligned(sizeof(kernel_ulong_t))));
|
||||
};
|
||||
|
||||
#endif /* LINUX_MOD_DEVICETABLE_H */
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ struct mnt_namespace;
|
|||
#define MNT_NODIRATIME 0x10
|
||||
#define MNT_RELATIME 0x20
|
||||
#define MNT_READONLY 0x40 /* does the user want this to be r/o? */
|
||||
#define MNT_STRICTATIME 0x80
|
||||
|
||||
#define MNT_SHRINKABLE 0x100
|
||||
#define MNT_IMBALANCED_WRITE_COUNT 0x200 /* just for debugging */
|
||||
|
|
|
|||
|
|
@ -193,6 +193,9 @@ struct vif_device
|
|||
struct mfc_cache
|
||||
{
|
||||
struct mfc_cache *next; /* Next entry on cache line */
|
||||
#ifdef CONFIG_NET_NS
|
||||
struct net *mfc_net;
|
||||
#endif
|
||||
__be32 mfc_mcastgrp; /* Group the entry belongs to */
|
||||
__be32 mfc_origin; /* Source of packet */
|
||||
vifi_t mfc_parent; /* Source interface */
|
||||
|
|
@ -215,6 +218,18 @@ struct mfc_cache
|
|||
} mfc_un;
|
||||
};
|
||||
|
||||
static inline
|
||||
struct net *mfc_net(const struct mfc_cache *mfc)
|
||||
{
|
||||
return read_pnet(&mfc->mfc_net);
|
||||
}
|
||||
|
||||
static inline
|
||||
void mfc_net_set(struct mfc_cache *mfc, struct net *net)
|
||||
{
|
||||
write_pnet(&mfc->mfc_net, hold_net(net));
|
||||
}
|
||||
|
||||
#define MFC_STATIC 1
|
||||
#define MFC_NOTIFY 2
|
||||
|
||||
|
|
@ -241,7 +256,8 @@ struct mfc_cache
|
|||
|
||||
#ifdef __KERNEL__
|
||||
struct rtmsg;
|
||||
extern int ipmr_get_route(struct sk_buff *skb, struct rtmsg *rtm, int nowait);
|
||||
extern int ipmr_get_route(struct net *net, struct sk_buff *skb,
|
||||
struct rtmsg *rtm, int nowait);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ struct mif6ctl {
|
|||
mifi_t mif6c_mifi; /* Index of MIF */
|
||||
unsigned char mif6c_flags; /* MIFF_ flags */
|
||||
unsigned char vifc_threshold; /* ttl limit */
|
||||
u_short mif6c_pifi; /* the index of the physical IF */
|
||||
__u16 mif6c_pifi; /* the index of the physical IF */
|
||||
unsigned int vifc_rate_limit; /* Rate limiter values (NI) */
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ void ncp_update_inode2(struct inode *, struct ncp_entry_info *);
|
|||
/* linux/fs/ncpfs/dir.c */
|
||||
extern const struct inode_operations ncp_dir_inode_operations;
|
||||
extern const struct file_operations ncp_dir_operations;
|
||||
extern struct dentry_operations ncp_root_dentry_operations;
|
||||
extern const struct dentry_operations ncp_root_dentry_operations;
|
||||
int ncp_conn_logged_in(struct super_block *);
|
||||
int ncp_date_dos2unix(__le16 time, __le16 date);
|
||||
void ncp_date_unix2dos(int unix_date, __le16 * time, __le16 * date);
|
||||
|
|
|
|||
|
|
@ -2,18 +2,18 @@
|
|||
#define _NCP_NO
|
||||
|
||||
/* these define the attribute byte as seen by NCP */
|
||||
#define aRONLY (__constant_cpu_to_le32(1))
|
||||
#define aHIDDEN (__constant_cpu_to_le32(2))
|
||||
#define aSYSTEM (__constant_cpu_to_le32(4))
|
||||
#define aEXECUTE (__constant_cpu_to_le32(8))
|
||||
#define aDIR (__constant_cpu_to_le32(0x10))
|
||||
#define aARCH (__constant_cpu_to_le32(0x20))
|
||||
#define aSHARED (__constant_cpu_to_le32(0x80))
|
||||
#define aDONTSUBALLOCATE (__constant_cpu_to_le32(1L<<11))
|
||||
#define aTRANSACTIONAL (__constant_cpu_to_le32(1L<<12))
|
||||
#define aPURGE (__constant_cpu_to_le32(1L<<16))
|
||||
#define aRENAMEINHIBIT (__constant_cpu_to_le32(1L<<17))
|
||||
#define aDELETEINHIBIT (__constant_cpu_to_le32(1L<<18))
|
||||
#define aDONTCOMPRESS (__constant_cpu_to_le32(1L<<27))
|
||||
#define aRONLY (__cpu_to_le32(1))
|
||||
#define aHIDDEN (__cpu_to_le32(2))
|
||||
#define aSYSTEM (__cpu_to_le32(4))
|
||||
#define aEXECUTE (__cpu_to_le32(8))
|
||||
#define aDIR (__cpu_to_le32(0x10))
|
||||
#define aARCH (__cpu_to_le32(0x20))
|
||||
#define aSHARED (__cpu_to_le32(0x80))
|
||||
#define aDONTSUBALLOCATE (__cpu_to_le32(1L<<11))
|
||||
#define aTRANSACTIONAL (__cpu_to_le32(1L<<12))
|
||||
#define aPURGE (__cpu_to_le32(1L<<16))
|
||||
#define aRENAMEINHIBIT (__cpu_to_le32(1L<<17))
|
||||
#define aDELETEINHIBIT (__cpu_to_le32(1L<<18))
|
||||
#define aDONTCOMPRESS (__cpu_to_le32(1L<<27))
|
||||
|
||||
#endif /* _NCP_NO */
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue