diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/acpi.h | 97 | ||||
-rw-r--r-- | include/linux/fs.h | 8 | ||||
-rw-r--r-- | include/linux/i2o.h | 475 | ||||
-rw-r--r-- | include/linux/irda.h | 106 | ||||
-rw-r--r-- | include/linux/major.h | 1 | ||||
-rw-r--r-- | include/linux/mm.h | 101 | ||||
-rw-r--r-- | include/linux/nfsd/export.h | 5 | ||||
-rw-r--r-- | include/linux/nfsd/nfsfh.h | 3 | ||||
-rw-r--r-- | include/linux/pagemap.h | 39 | ||||
-rw-r--r-- | include/linux/resource.h | 11 | ||||
-rw-r--r-- | include/linux/serialP.h | 4 | ||||
-rw-r--r-- | include/linux/swap.h | 2 | ||||
-rw-r--r-- | include/linux/sysctl.h | 3 | ||||
-rw-r--r-- | include/linux/tty.h | 1 |
14 files changed, 512 insertions, 344 deletions
diff --git a/include/linux/acpi.h b/include/linux/acpi.h index 1f5ec5f7a..5b53842be 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -24,9 +24,6 @@ #include <linux/types.h> #include <linux/ioctl.h> -/* /dev/acpi minor number */ -#define ACPI_MINOR_DEV 167 - /* RSDP location */ #define ACPI_BIOS_ROM_BASE (0x0e0000) #define ACPI_BIOS_ROM_END (0x100000) @@ -40,7 +37,7 @@ /* PM1_STS/EN flags */ #define ACPI_TMR 0x0001 -#define ACPI_BM 0x0010 +#define ACPI_BM 0x0010 #define ACPI_GBL 0x0020 #define ACPI_PWRBTN 0x0100 #define ACPI_SLPBTN 0x0200 @@ -57,27 +54,33 @@ #define ACPI_SLP_EN 0x2000 /* PM_TMR masks */ -#define ACPI_TMR_MASK 0x00ffffff +#define ACPI_TMR_MASK 0x00ffffff #define ACPI_TMR_HZ 3580000 /* 3.58 MHz */ /* strangess to avoid integer overflow */ #define ACPI_uS_TO_TMR_TICKS(val) \ (((val) * (ACPI_TMR_HZ / 10000)) / 100) +/* CPU cycles -> PM timer cycles, looks somewhat heuristic but + (ticks = 3/11 * CPU_MHz + 2) comes pretty close for my systems + */ +#define ACPI_CPU_TO_TMR_TICKS(cycles) \ + ((cycles) / (3 * (loops_per_sec + 2500) / 500000 / 11 + 2)) + /* PM2_CNT flags */ #define ACPI_ARB_DIS 0x01 /* FACP flags */ -#define ACPI_WBINVD 0x00000001 +#define ACPI_WBINVD 0x00000001 #define ACPI_WBINVD_FLUSH 0x00000002 -#define ACPI_PROC_C1 0x00000004 -#define ACPI_P_LVL2_UP 0x00000008 -#define ACPI_PWR_BUTTON 0x00000010 -#define ACPI_SLP_BUTTON 0x00000020 -#define ACPI_FIX_RTC 0x00000040 -#define ACPI_RTC_64 0x00000080 +#define ACPI_PROC_C1 0x00000004 +#define ACPI_P_LVL2_UP 0x00000008 +#define ACPI_PWR_BUTTON 0x00000010 +#define ACPI_SLP_BUTTON 0x00000020 +#define ACPI_FIX_RTC 0x00000040 +#define ACPI_RTC_64 0x00000080 #define ACPI_TMR_VAL_EXT 0x00000100 -#define ACPI_DCK_CAP 0x00000200 +#define ACPI_DCK_CAP 0x00000200 struct acpi_rsdp { __u32 signature[2]; @@ -142,25 +145,65 @@ struct acpi_facp { __u32 flags; }; -#define ACPI_FIND_TABLES _IOR('A', 1, struct acpi_find_tables) -#define ACPI_ENABLE_EVENT _IOW('A', 2, struct acpi_enable_event) -#define ACPI_WAIT_EVENT _IOR('A', 3, struct acpi_wait_event) +/* + * Sysctl declarations + */ -struct acpi_find_tables { - unsigned long facp; /* FACP physical address */ - unsigned long dsdt; /* DSDT physical address */ +enum +{ + CTL_ACPI = 10 }; -struct acpi_enable_event { - __u32 pm1_enable; /* fixed events */ - __u32 gpe_enable; /* general-purpose events (GPEs) */ - __u32 gpe_level; /* level-triggered GPEs */ +enum +{ + ACPI_FACP = 1, + ACPI_DSDT, + ACPI_PM1_ENABLE, + ACPI_GPE_ENABLE, + ACPI_GPE_LEVEL, + ACPI_EVENT, + ACPI_P_LVL2, + ACPI_P_LVL3, + ACPI_P_LVL2_LAT, + ACPI_P_LVL3_LAT, }; -struct acpi_wait_event { - __u32 pm1_status; /* fixed events */ - __u32 gpe_status; /* general-purpose events */ -}; +/* + * PIIX4-specific ACPI info (for systems with PIIX4 but no ACPI tables) + */ + +#define ACPI_PIIX4_INT_MODEL 0x00 +#define ACPI_PIIX4_SCI_INT 0x0009 + +#define ACPI_PIIX4_SMI_CMD 0x00b2 +#define ACPI_PIIX4_ACPI_ENABLE 0xf0 +#define ACPI_PIIX4_ACPI_DISABLE 0xf1 +#define ACPI_PIIX4_S4BIOS_REQ 0xf2 + +#define ACPI_PIIX4_PM1_EVT 0x0000 +#define ACPI_PIIX4_PM1_CNT 0x0004 +#define ACPI_PIIX4_S0_MASK (0x0005 << 10) +#define ACPI_PIIX4_S1_MASK (0x0004 << 10) +#define ACPI_PIIX4_S2_MASK (0x0003 << 10) +#define ACPI_PIIX4_S3_MASK (0x0002 << 10) +#define ACPI_PIIX4_S4_MASK (0x0001 << 10) +#define ACPI_PIIX4_S5_MASK (0x0000 << 10) +#define ACPI_PIIX4_PM_TMR 0x0008 +#define ACPI_PIIX4_GPE0 0x000c +#define ACPI_PIIX4_P_CNT 0x0010 +#define ACPI_PIIX4_P_LVL2 0x0014 +#define ACPI_PIIX4_P_LVL3 0x0015 + +#define ACPI_PIIX4_PM1_EVT_LEN 0x04 +#define ACPI_PIIX4_PM1_CNT_LEN 0x02 +#define ACPI_PIIX4_PM_TM_LEN 0x04 +#define ACPI_PIIX4_GPE0_LEN 0x04 + +#define ACPI_PIIX4_PM2_CNT 0x0022 +#define ACPI_PIIX4_PM2_CNT_LEN 0x01 + +#define ACPI_PIIX4_PMREGMISC 0x80 +#define ACPI_PIIX4_PMIOSE 0x01 #ifdef __KERNEL__ diff --git a/include/linux/fs.h b/include/linux/fs.h index c6c7d76d2..58fc251ac 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -328,6 +328,11 @@ struct iattr { */ struct page; +struct address_space { + struct list_head pages; + unsigned long nrpages; +}; + struct inode { struct list_head i_hash; struct list_head i_list; @@ -348,14 +353,13 @@ struct inode { unsigned long i_blksize; unsigned long i_blocks; unsigned long i_version; - unsigned long i_nrpages; struct semaphore i_sem; struct inode_operations *i_op; struct super_block *i_sb; wait_queue_head_t i_wait; struct file_lock *i_flock; struct vm_area_struct *i_mmap; - struct list_head i_pages; + struct address_space i_data; spinlock_t i_shared_lock; struct dquot *i_dquot[MAXQUOTAS]; struct pipe_inode_info *i_pipe; diff --git a/include/linux/i2o.h b/include/linux/i2o.h index d11ff1f09..9ddcb7bb8 100644 --- a/include/linux/i2o.h +++ b/include/linux/i2o.h @@ -10,6 +10,209 @@ /* How many controllers are we allowing */ #define MAX_I2O_CONTROLLERS 32 +#include <linux/ioctl.h> + +/* + * I2O Control IOCTLs and structures + */ +#define I2O_MAGIC_NUMBER 'i' +#define I2OGETIOPS _IOR(I2O_MAGIC_NUMBER,0,u8[MAX_I2O_CONTROLLERS]) +#define I2OHRTGET _IOWR(I2O_MAGIC_NUMBER,1,struct i2o_cmd_hrtlct) +#define I2OLCTGET _IOWR(I2O_MAGIC_NUMBER,2,struct i2o_cmd_hrtlct) +#define I2OPARMSET _IOWR(I2O_MAGIC_NUMBER,3,struct i2o_cmd_psetget) +#define I2OPARMGET _IOWR(I2O_MAGIC_NUMBER,4,struct i2o_cmd_psetget) +#define I2OSWDL _IOWR(I2O_MAGIC_NUMBER,5,struct i2o_sw_xfer) +#define I2OSWUL _IOWR(I2O_MAGIC_NUMBER,6,struct i2o_sw_xfer) +#define I2OSWDEL _IOWR(I2O_MAGIC_NUMBER,7,struct i2o_sw_xfer) +#define I2OVALIDATE _IOR(I2O_MAGIC_NUMBER,8,u32) +#define I2OHTML _IOWR(I2O_MAGIC_NUMBER,9,struct i2o_html) + +/* On hold until we figure this out +#define I2OEVTREG _IO(I2O_MAGIC_NUMBER,10) +#define I2OEVTCLR _IO(I2O_MAGIC_NUMBER,11) +#define I2OEVTGET _IO(I2O_MAGIC_NUMBER,12) + */ + +struct i2o_cmd_hrtlct +{ + unsigned int iop; /* IOP unit number */ + void *resbuf; /* Buffer for result */ + unsigned int *reslen; /* Buffer length in bytes */ +}; + +struct i2o_cmd_psetget +{ + unsigned int iop; /* IOP unit number */ + unsigned int tid; /* Target device TID */ + void *opbuf; /* Operation List buffer */ + unsigned int oplen; /* Operation List buffer length in bytes */ + void *resbuf; /* Result List buffer */ + unsigned int *reslen; /* Result List buffer length in bytes */ +}; + +struct i2o_sw_xfer +{ + unsigned int iop; /* IOP unit number */ + unsigned char flags; /* Flags field */ + unsigned char sw_type; /* Software type */ + unsigned int sw_id; /* Software ID */ + void *buf; /* Pointer to software buffer */ + unsigned int *swlen; /* Length of software data */ + unsigned int *maxfrag; /* Maximum fragment count */ + unsigned int *curfrag; /* Current fragment count */ +}; + +struct i2o_html +{ + unsigned int iop; /* IOP unit number */ + unsigned int tid; /* Target device ID */ + unsigned int page; /* HTML page */ + void *resbuf; /* Buffer for reply HTML page */ + unsigned int *reslen; /* Length in bytes of reply buffer */ + void *qbuf; /* Pointer to HTTP query string */ + unsigned int qlen; /* Length in bytes of query string buffer */ +}; + + +/************************************************************************** + * HRT related constants and structures + **************************************************************************/ +#define I2O_BUS_LOCAL 0 +#define I2O_BUS_ISA 1 +#define I2O_BUS_EISA 2 +#define I2O_BUS_MCA 3 +#define I2O_BUS_PCI 4 +#define I2O_BUS_PCMCIA 5 +#define I2O_BUS_NUBUS 6 +#define I2O_BUS_CARDBUS 7 +#define I2O_BUS_UNKNOWN 0x80 + +#ifndef __KERNEL__ +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +#endif /* __KERNEL__ */ + +typedef struct _i2o_pci_bus { + u8 PciFunctionNumber; + u8 PciDeviceNumber; + u8 PciBusNumber; + u8 reserved; + u16 PciVendorID; + u16 PciDeviceID; +} i2o_pci_bus, *pi2o_pci_bus; + +typedef struct _i2o_local_bus { + u16 LbBaseIOPort; + u16 reserved; + u32 LbBaseMemoryAddress; +} i2o_local_bus, *pi2o_local_bus; + +typedef struct _i2o_isa_bus { + u16 IsaBaseIOPort; + u8 CSN; + u8 reserved; + u32 IsaBaseMemoryAddress; +} i2o_isa_bus, *pi2o_isa_bus; + +typedef struct _i2o_eisa_bus_info { + u16 EisaBaseIOPort; + u8 reserved; + u8 EisaSlotNumber; + u32 EisaBaseMemoryAddress; +} i2o_eisa_bus, *pi2o_eisa_bus; + +typedef struct _i2o_mca_bus { + u16 McaBaseIOPort; + u8 reserved; + u8 McaSlotNumber; + u32 McaBaseMemoryAddress; +} i2o_mca_bus, *pi2o_mca_bus; + +typedef struct _i2o_other_bus { + u16 BaseIOPort; + u16 reserved; + u32 BaseMemoryAddress; +} i2o_other_bus, *pi2o_other_bus; + +typedef struct _i2o_hrt_entry { + u32 adapter_id; + u32 parent_tid:12; + u32 state:4; + u32 bus_num:8; + u32 bus_type:8; + union { + i2o_pci_bus pci_bus; + i2o_local_bus local_bus; + i2o_isa_bus isa_bus; + i2o_eisa_bus eisa_bus; + i2o_mca_bus mca_bus; + i2o_other_bus other_bus; + } bus; +} i2o_hrt_entry, *pi2o_hrt_entry; + +typedef struct _i2o_hrt { + u16 num_entries; + u8 entry_len; + u8 hrt_version; + u32 change_ind; + i2o_hrt_entry hrt_entry[1]; +} i2o_hrt, *pi2o_hrt; + +typedef struct _i2o_lct_entry { + u32 entry_size:16; + u32 tid:12; + u32 reserved:4; + u32 change_ind; + u32 device_flags; + u32 class_id:12; + u32 version:4; + u32 vendor_id:16; + u32 sub_class; + u32 user_tid:12; + u32 parent_tid:12; + u32 bios_info:8; + u8 identity_tag[8]; + u32 event_capabilities; +} i2o_lct_entry, *pi2o_lct_entry; + +typedef struct _i2o_lct { + u32 table_size:16; + u32 boot_tid:12; + u32 lct_ver:4; + u32 iop_flags; + u32 current_change_ind; + i2o_lct_entry lct_entry[1]; +} i2o_lct, *pi2o_lct; + +typedef struct _i2o_status_block { + u16 org_id; + u16 reserved; + u16 iop_id:12; + u16 reserved1:4; + u16 host_unit_id; + u16 segment_number:12; + u16 i2o_version:4; + u8 iop_state; + u8 msg_type; + u16 inbound_frame_size; + u8 init_code; + u8 reserved2; + u32 max_inbound_frames; + u32 max_outbound_frames; + char product_id[24]; + u32 expected_lct_size; + u32 iop_capabilities; + u32 desired_mem_size; + u32 current_mem_size; + u32 current_mem_base; + u32 desired_io_size; + u32 current_io_size; + u32 current_io_base; + u32 reserved3:24; + u32 cmd_status:8; +} i2o_status_block, *pi2o_status_block; + #ifdef __KERNEL__ /* ioctl stuff only thing exported to users */ @@ -43,13 +246,11 @@ struct i2o_message struct i2o_device { - int class; /* Block, Net, SCSI etc (from spec) */ - int subclass; /* eth, fddi, tr etc (from spec) */ - int id; /* I2O ID assigned by the controller */ - int parent; /* Parent device */ - int flags; /* Control flags */ + pi2o_lct_entry lct_data;/* Device LCT information */ + u32 flags; int i2oversion; /* I2O version supported. Actually there * should be high and low version */ + struct proc_dir_entry* proc_entry; /* /proc dir */ /* Primary user */ @@ -70,6 +271,9 @@ struct i2o_device struct i2o_pci { int irq; +#ifdef CONFIG_MTRR + int mtrr_reg; +#endif }; @@ -81,8 +285,6 @@ struct i2o_controller { char name[16]; int unit; - int status; /* I2O status */ - int i2oversion; int type; #define I2O_TYPE_PCI 0x01 /* PCI I2O controller */ @@ -94,10 +296,14 @@ struct i2o_controller volatile u32 *post_port; /* Messaging ports */ volatile u32 *reply_port; volatile u32 *irq_mask; /* Interrupt port */ - u32 *lct; - u32 *hrt; + + pi2o_status_block status_block; /* IOP status block */ + pi2o_lct lct; + pi2o_hrt hrt; + u32 mem_offset; /* MFA offset */ u32 mem_phys; /* MFA physical */ + u32 priv_mem; u32 priv_mem_size; u32 priv_io; @@ -115,6 +321,9 @@ struct i2o_controller int (*bind)(struct i2o_controller *, struct i2o_device *); /* Bus specific initiator */ int (*unbind)(struct i2o_controller *, struct i2o_device *); + /* Bus specific enable/disable */ + void (*bus_enable)(struct i2o_controller *c); + void (*bus_disable)(struct i2o_controller *c); void *page_frame; /* Message buffers */ int inbound_size; /* Inbound queue size */ @@ -144,8 +353,7 @@ struct i2o_core_func_table { int (*install)(struct i2o_controller *); int (*activate)(struct i2o_controller *); - struct i2o_controller* - (*find)(int); + struct i2o_controller* (*find)(int); void (*unlock)(struct i2o_controller *); void (*run_queue)(struct i2o_controller *c); int (*delete)(struct i2o_controller *); @@ -153,9 +361,40 @@ struct i2o_core_func_table #endif /* - * Messenger inlines + * I2O System table entry */ +struct i2o_sys_tbl_entry +{ + u16 org_id; + u16 reserved1; + u32 iop_id:12; + u32 reserved2:20; + u16 seg_num:12; + u16 i2o_version:4; + u8 iop_state; + u8 msg_type; + u16 frame_size; + u16 reserved3; + u32 last_changed; + u32 iop_capabilities; + u32 inbound_low; + u32 inbound_high; +}; + +struct i2o_sys_tbl +{ + u8 num_entries; + u8 version; + u16 reserved1; + u32 change_ind; + u32 reserved2; + u32 reserved3; + struct i2o_sys_tbl_entry iops[0]; +}; +/* + * Messenger inlines + */ extern inline u32 I2O_POST_READ32(struct i2o_controller *c) { return *c->post_port; @@ -211,6 +450,7 @@ extern int i2o_delete_controller(struct i2o_controller *); extern int i2o_activate_controller(struct i2o_controller *); extern void i2o_unlock_controller(struct i2o_controller *); extern struct i2o_controller *i2o_find_controller(int); +extern int i2o_status_get(struct i2o_controller *); extern int i2o_num_controllers; extern int i2o_install_handler(struct i2o_handler *); @@ -221,24 +461,24 @@ extern int i2o_delete_device(struct i2o_device *); extern int i2o_claim_device(struct i2o_device *, struct i2o_handler *, u32); extern int i2o_release_device(struct i2o_device *, struct i2o_handler *, u32); -extern int i2o_post_this(struct i2o_controller *, int, u32 *, int); -extern int i2o_post_wait(struct i2o_controller *, int, u32 *, int, int *, int); +extern int i2o_post_this(struct i2o_controller *, u32 *, int); +extern int i2o_post_wait(struct i2o_controller *, u32 *, int, int); extern int i2o_issue_claim(struct i2o_controller *, int, int, int, int *, u32); -extern int i2o_issue_params(int, struct i2o_controller *, int, int, void *, - int, void *, int, int *); - -extern int i2o_query_scalar(struct i2o_controller *, int, int, int, int, - void *, int, int *); -extern int i2o_set_scalar(struct i2o_controller *, int, int, int, int, - void *, int, int *); - -extern int i2o_query_table(int, struct i2o_controller *, int, int, int, int, - void *, int, void *, int, int *); -extern int i2o_clear_table(struct i2o_controller *, int, int, int, int *); -extern int i2o_row_add_table(struct i2o_controller *, int, int, int, int, - void *, int, int *); -extern int i2o_row_delete_table(struct i2o_controller *, int, int, int, int, - void *, int, int *); +extern int i2o_issue_params(int, struct i2o_controller *, int, void *, + int, void *, int); + +extern int i2o_query_scalar(struct i2o_controller *, int, int, int, + void *, int); +extern int i2o_set_scalar(struct i2o_controller *, int, int, int, + void *, int); + +extern int i2o_query_table(int, struct i2o_controller *, int, int, int, + void *, int, void *, int); +extern int i2o_clear_table(struct i2o_controller *, int, int); +extern int i2o_row_add_table(struct i2o_controller *, int, int, int, + void *, int); +extern int i2o_row_delete_table(struct i2o_controller *, int, int, int, + void *, int); extern void i2o_run_queue(struct i2o_controller *); extern void i2o_report_status(const char *, const char *, u32 *); @@ -551,182 +791,9 @@ extern const char *i2o_get_class_name(int); #define MSG_POOL_SIZE 16384 -#define I2O_POST_WAIT_OK 1 +#define I2O_POST_WAIT_OK 0 #define I2O_POST_WAIT_TIMEOUT -ETIMEDOUT #endif /* __KERNEL__ */ -#include <linux/ioctl.h> - -/* - * I2O Control IOCTLs and structures - */ -#define I2O_MAGIC_NUMBER 'i' -#define I2OGETIOPS _IOR(I2O_MAGIC_NUMBER,0,u8[MAX_I2O_CONTROLLERS]) -#define I2OHRTGET _IOWR(I2O_MAGIC_NUMBER,1,struct i2o_cmd_hrtlct) -#define I2OLCTGET _IOWR(I2O_MAGIC_NUMBER,2,struct i2o_cmd_hrtlct) -#define I2OPARMSET _IOWR(I2O_MAGIC_NUMBER,3,struct i2o_cmd_psetget) -#define I2OPARMGET _IOWR(I2O_MAGIC_NUMBER,4,struct i2o_cmd_psetget) -#define I2OSWDL _IOWR(I2O_MAGIC_NUMBER,5,struct i2o_sw_xfer) -#define I2OSWUL _IOWR(I2O_MAGIC_NUMBER,6,struct i2o_sw_xfer) -#define I2OSWDEL _IOWR(I2O_MAGIC_NUMBER,7,struct i2o_sw_xfer) -#define I2OVALIDATE _IOR(I2O_MAGIC_NUMBER,8,u32) -#define I2OHTML _IOWR(I2O_MAGIC_NUMBER,9,struct i2o_html) - -/* On hold until we figure this out -#define I2OEVTREG _IO(I2O_MAGIC_NUMBER,10) -#define I2OEVTCLR _IO(I2O_MAGIC_NUMBER,11) -#define I2OEVTGET _IO(I2O_MAGIC_NUMBER,12) - */ - -struct i2o_cmd_hrtlct -{ - unsigned int iop; /* IOP unit number */ - void *resbuf; /* Buffer for result */ - unsigned int *reslen; /* Buffer length in bytes */ -}; - -struct i2o_cmd_psetget -{ - unsigned int iop; /* IOP unit number */ - unsigned int tid; /* Target device TID */ - void *opbuf; /* Operation List buffer */ - unsigned int oplen; /* Operation List buffer length in bytes */ - void *resbuf; /* Result List buffer */ - unsigned int *reslen; /* Result List buffer length in bytes */ -}; - -struct i2o_sw_xfer -{ - unsigned int iop; /* IOP unit number */ - unsigned char flags; /* Flags field */ - unsigned char sw_type; /* Software type */ - unsigned int sw_id; /* Software ID */ - void *buf; /* Pointer to software buffer */ - unsigned int *swlen; /* Length of software data */ - unsigned int *maxfrag; /* Maximum fragment count */ - unsigned int *curfrag; /* Current fragment count */ -}; - -struct i2o_html -{ - unsigned int iop; /* IOP unit number */ - unsigned int tid; /* Target device ID */ - unsigned int page; /* HTML page */ - void *resbuf; /* Buffer for reply HTML page */ - unsigned int *reslen; /* Length in bytes of reply buffer */ - void *qbuf; /* Pointer to HTTP query string */ - unsigned int qlen; /* Length in bytes of query string buffer */ -}; - - -/************************************************************************** - * HRT related constants and structures - **************************************************************************/ -#define I2O_BUS_LOCAL 0 -#define I2O_BUS_ISA 1 -#define I2O_BUS_EISA 2 -#define I2O_BUS_MCA 3 -#define I2O_BUS_PCI 4 -#define I2O_BUS_PCMCIA 5 -#define I2O_BUS_NUBUS 6 -#define I2O_BUS_CARDBUS 7 -#define I2O_BUS_UNKNOWN 0x80 - -#ifndef __KERNEL__ -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned int u32; -#endif /* __KERNEL__ */ - -typedef struct _i2o_pci_bus { - u8 PciFunctionNumber; - u8 PciDeviceNumber; - u8 PciBusNumber; - u8 reserved; - u16 PciVendorID; - u16 PciDeviceID; -} i2o_pci_bus, *pi2o_pci_bus; - -typedef struct _i2o_local_bus { - u16 LbBaseIOPort; - u16 reserved; - u32 LbBaseMemoryAddress; -} i2o_local_bus, *pi2o_local_bus; - -typedef struct _i2o_isa_bus { - u16 IsaBaseIOPort; - u8 CSN; - u8 reserved; - u32 IsaBaseMemoryAddress; -} i2o_isa_bus, *pi2o_isa_bus; - -typedef struct _i2o_eisa_bus_info { - u16 EisaBaseIOPort; - u8 reserved; - u8 EisaSlotNumber; - u32 EisaBaseMemoryAddress; -} i2o_eisa_bus, *pi2o_eisa_bus; - -typedef struct _i2o_mca_bus { - u16 McaBaseIOPort; - u8 reserved; - u8 McaSlotNumber; - u32 McaBaseMemoryAddress; -} i2o_mca_bus, *pi2o_mca_bus; - -typedef struct _i2o_other_bus { - u16 BaseIOPort; - u16 reserved; - u32 BaseMemoryAddress; -} i2o_other_bus, *pi2o_other_bus; - -typedef struct _i2o_hrt_entry { - u32 adapter_id; - u32 parent_tid:12; - u32 state:4; - u32 bus_num:8; - u32 bus_type:8; - union { - i2o_pci_bus pci_bus; - i2o_local_bus local_bus; - i2o_isa_bus isa_bus; - i2o_eisa_bus eisa_bus; - i2o_mca_bus mca_bus; - i2o_other_bus other_bus; - } bus; -} i2o_hrt_entry, *pi2o_hrt_entry; - -typedef struct _i2o_hrt { - u16 num_entries; - u8 entry_len; - u8 hrt_version; - u32 change_ind; - i2o_hrt_entry hrt_entry[1]; -} i2o_hrt, *pi2o_hrt; - -typedef struct _i2o_lct_entry { - u32 entry_size:16; - u32 tid:12; - u32 reserved:4; - u32 change_ind; - u32 device_flags; - u32 class_id; - u32 sub_class; - u32 user_tid:12; - u32 parent_tid:12; - u32 bios_info:8; - u8 identity_tag[8]; - u32 event_capabilities; -} i2o_lct_entry, *pi2o_lct_entry; - -typedef struct _i2o_lct { - u32 table_size:16; - u32 boot_tid:12; - u32 lct_ver:4; - u32 iop_flags; - u32 current_change_ind; - i2o_lct_entry lct_entry[1]; -} i2o_lct, *pi2o_lct; - -#endif +#endif /* _I2O_H */ diff --git a/include/linux/irda.h b/include/linux/irda.h index 5d547a99f..712b2aa9a 100644 --- a/include/linux/irda.h +++ b/include/linux/irda.h @@ -1,12 +1,12 @@ /********************************************************************* * * Filename: irda.h - * Version: 1.0 - * Description: Exported IrDA sockets interface + * Version: + * Description: * Status: Experimental. * Author: Dag Brattli <dagb@cs.uit.no> * Created at: Mon Mar 8 14:06:12 1999 - * Modified at: Mon Sep 27 12:11:49 1999 + * Modified at: Sun Oct 10 23:00:59 1999 * Modified by: Dag Brattli <dagb@cs.uit.no> * * Copyright (c) 1999 Dag Brattli, All Rights Reserved. @@ -19,7 +19,7 @@ * Neither Dag Brattli nor University of Tromsų admit liability nor * provide warranty for any of this software. This material is * provided "AS-IS" and at no charge. - * + * ********************************************************************/ #ifndef KERNEL_IRDA_H @@ -44,17 +44,28 @@ #define HINT_OBEX 0x20 /* IrLMP character code values */ -#define CS_ASCII 0x00 -#define CS_ISO_8859_1 0x01 -#define CS_ISO_8859_2 0x02 -#define CS_ISO_8859_3 0x03 -#define CS_ISO_8859_4 0x04 -#define CS_ISO_8859_5 0x05 -#define CS_ISO_8859_6 0x06 -#define CS_ISO_8859_7 0x07 -#define CS_ISO_8859_8 0x08 -#define CS_ISO_8859_9 0x09 -#define CS_UNICODE 0xff +#define CS_ASCII 0x00 +#define CS_ISO_8859_1 0x01 +#define CS_ISO_8859_2 0x02 +#define CS_ISO_8859_3 0x03 +#define CS_ISO_8859_4 0x04 +#define CS_ISO_8859_5 0x05 +#define CS_ISO_8859_6 0x06 +#define CS_ISO_8859_7 0x07 +#define CS_ISO_8859_8 0x08 +#define CS_ISO_8859_9 0x09 +#define CS_UNICODE 0xff + +/* These are the currently known dongles */ +typedef enum { + IRDA_TEKRAM_DONGLE, + IRDA_ESI_DONGLE, + IRDA_ACTISYS_DONGLE, + IRDA_ACTISYS_PLUS_DONGLE, + IRDA_GIRBIL_DONGLE, + IRDA_LITELINK_DONGLE, + IRDA_AIRPORT_DONGLE, +} IRDA_DONGLE; #define SOL_IRLMP 266 /* Same as SOL_IRDA for now */ #define SOL_IRTTP 266 /* Same as SOL_IRDA for now */ @@ -68,12 +79,12 @@ #define IRTTP_QOS_GET 6 #define IRTTP_MAX_SDU_SIZE 7 -#define IAS_MAX_STRING 256 -#define IAS_MAX_OCTET_STRING 1024 -#define IAS_MAX_CLASSNAME 64 -#define IAS_MAX_ATTRIBNAME 256 +#define IAS_MAX_STRING 256 +#define IAS_MAX_OCTET_STRING 1024 +#define IAS_MAX_CLASSNAME 64 +#define IAS_MAX_ATTRIBNAME 256 -#define LSAP_ANY 0xff +#define LSAP_ANY 0xff struct sockaddr_irda { sa_family_t sir_family; /* AF_IRDA */ @@ -113,6 +124,61 @@ struct irda_ias_set { } attribute; }; +/* Some private IOCTL's (max 16) */ +#define SIOCSDONGLE (SIOCDEVPRIVATE + 0) +#define SIOCGDONGLE (SIOCDEVPRIVATE + 1) +#define SIOCSBANDWIDTH (SIOCDEVPRIVATE + 2) +#define SIOCSMEDIABUSY (SIOCDEVPRIVATE + 3) +#define SIOCGMEDIABUSY (SIOCDEVPRIVATE + 4) +#define SIOCGRECEIVING (SIOCDEVPRIVATE + 5) +#define SIOCSRAWMODE (SIOCDEVPRIVATE + 6) +#define SIOCSDTRRTS (SIOCDEVPRIVATE + 7) +#define SIOCGQOS (SIOCDEVPRIVATE + 8) + +/* No reason to include <linux/if.h> just because of this one ;-) */ +#define IRNAMSIZ 16 + +/* IrDA quality of service information (must not exceed 16 bytes) */ +struct if_irda_qos { + unsigned long baudrate; + unsigned short data_size; + unsigned short window_size; + unsigned short min_turn_time; + unsigned short max_turn_time; + unsigned char add_bofs; + unsigned char link_disc; +}; + +/* For setting RTS and DTR lines of a dongle */ +struct if_irda_line { + unsigned char dtr; + unsigned char rts; +}; + +/* IrDA interface configuration (data part must not exceed 16 bytes) */ +struct if_irda_req { + union { + char ifrn_name[IRNAMSIZ]; /* if name, e.g. "irda0" */ + } ifr_ifrn; + + /* Data part */ + union { + struct if_irda_line ifru_line; + struct if_irda_qos ifru_qos; + unsigned short ifru_flags; + unsigned int ifru_receiving; + unsigned int ifru_raw_mode; + unsigned int ifru_dongle; + } ifr_ifru; +}; + +#define ifr_baudrate ifr_ifru.ifru_qos.baudrate +#define ifr_receiving ifr_ifru.ifru_receiving +#define ifr_dongle ifr_ifru.ifru_dongle +#define ifr_raw_mode ifr_ifru.ifru_raw_mode +#define ifr_dtr ifr_ifru.ifru_line.dtr +#define ifr_rts ifr_ifru.ifru_line.rts + #endif /* KERNEL_IRDA_H */ diff --git a/include/linux/major.h b/include/linux/major.h index 5af26c50d..dfca27dc5 100644 --- a/include/linux/major.h +++ b/include/linux/major.h @@ -117,6 +117,7 @@ #define AURORA_MAJOR 79 +#define RTF_MAJOR 150 #define RAW_MAJOR 162 #define UNIX98_PTY_MASTER_MAJOR 128 diff --git a/include/linux/mm.h b/include/linux/mm.h index 778511f6f..1f23dac1c 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -106,7 +106,7 @@ struct vm_operations_struct { void (*advise)(struct vm_area_struct *area, unsigned long, size_t, unsigned int advise); struct page * (*nopage)(struct vm_area_struct * area, unsigned long address, int write_access); struct page * (*wppage)(struct vm_area_struct * area, unsigned long address, struct page * page); - int (*swapout)(struct vm_area_struct *, struct page *); + int (*swapout)(struct page *, struct file *); }; /* @@ -120,7 +120,7 @@ struct vm_operations_struct { typedef struct page { /* these must be first (free area handling) */ struct list_head list; - struct inode *inode; + struct address_space *mapping; unsigned long offset; struct page *next_hash; atomic_t count; @@ -129,17 +129,13 @@ typedef struct page { wait_queue_head_t wait; struct page **pprev_hash; struct buffer_head * buffers; - void *owner; /* temporary debugging check */ } mem_map_t; -#define get_page(p) do { atomic_inc(&(p)->count); \ - } while (0) -#define put_page(p) __free_page(p) -#define put_page_testzero(p) ({ int __ret = atomic_dec_and_test(&(p)->count);\ - __ret; }) -#define page_count(p) atomic_read(&(p)->count) -#define set_page_count(p,v) do { atomic_set(&(p)->count, v); \ - } while (0) +#define get_page(p) atomic_inc(&(p)->count) +#define put_page(p) __free_page(p) +#define put_page_testzero(p) atomic_dec_and_test(&(p)->count) +#define page_count(p) atomic_read(&(p)->count) +#define set_page_count(p,v) atomic_set(&(p)->count, v) /* Page flag bit values */ #define PG_locked 0 @@ -158,54 +154,44 @@ typedef struct page { /* Make it prettier to test the above... */ -#define Page_Uptodate(page) (test_bit(PG_uptodate, &(page)->flags)) -#define SetPageUptodate(page) do { set_bit(PG_uptodate, &(page)->flags); \ - } while (0) -#define ClearPageUptodate(page) do { clear_bit(PG_uptodate, &(page)->flags); \ - } while (0) -#define PageLocked(page) (test_bit(PG_locked, &(page)->flags)) -#define LockPage(page) \ - do { int _ret = test_and_set_bit(PG_locked, &(page)->flags); \ - if (_ret) PAGE_BUG(page); \ - if (page->owner) PAGE_BUG(page); \ - page->owner = current; } while (0) -#define TryLockPage(page) ({ int _ret = test_and_set_bit(PG_locked, &(page)->flags); \ - if (!_ret) page->owner = current; _ret; }) +#define Page_Uptodate(page) test_bit(PG_uptodate, &(page)->flags) +#define SetPageUptodate(page) set_bit(PG_uptodate, &(page)->flags) +#define ClearPageUptodate(page) clear_bit(PG_uptodate, &(page)->flags) +#define PageLocked(page) test_bit(PG_locked, &(page)->flags) +#define LockPage(page) set_bit(PG_locked, &(page)->flags) +#define TryLockPage(page) test_and_set_bit(PG_locked, &(page)->flags) #define UnlockPage(page) do { \ - if (page->owner != current) { \ -BUG(); } page->owner = 0; \ -if (!test_and_clear_bit(PG_locked, &(page)->flags)) { \ - PAGE_BUG(page); } wake_up(&page->wait); } while (0) -#define PageError(page) (test_bit(PG_error, &(page)->flags)) -#define SetPageError(page) ({ int _ret = test_and_set_bit(PG_error, &(page)->flags); _ret; }) -#define ClearPageError(page) do { if (!test_and_clear_bit(PG_error, &(page)->flags)) BUG(); } while (0) -#define PageReferenced(page) (test_bit(PG_referenced, &(page)->flags)) -#define PageDecrAfter(page) (test_bit(PG_decr_after, &(page)->flags)) -#define PageDMA(page) (test_bit(PG_DMA, &(page)->flags)) -#define PageSlab(page) (test_bit(PG_slab, &(page)->flags)) -#define PageSwapCache(page) (test_bit(PG_swap_cache, &(page)->flags)) -#define PageReserved(page) (test_bit(PG_reserved, &(page)->flags)) - -#define PageSetSlab(page) (set_bit(PG_slab, &(page)->flags)) -#define PageSetSwapCache(page) (set_bit(PG_swap_cache, &(page)->flags)) - -#define PageTestandSetSwapCache(page) \ - (test_and_set_bit(PG_swap_cache, &(page)->flags)) - -#define PageClearSlab(page) (clear_bit(PG_slab, &(page)->flags)) -#define PageClearSwapCache(page)(clear_bit(PG_swap_cache, &(page)->flags)) - -#define PageTestandClearSwapCache(page) \ - (test_and_clear_bit(PG_swap_cache, &(page)->flags)) + clear_bit(PG_locked, &(page)->flags); \ + wake_up(&page->wait); \ + } while (0) +#define PageError(page) test_bit(PG_error, &(page)->flags) +#define SetPageError(page) test_and_set_bit(PG_error, &(page)->flags) +#define ClearPageError(page) clear_bit(PG_error, &(page)->flags) +#define PageReferenced(page) test_bit(PG_referenced, &(page)->flags) +#define PageDecrAfter(page) test_bit(PG_decr_after, &(page)->flags) +#define PageDMA(page) test_bit(PG_DMA, &(page)->flags) +#define PageSlab(page) test_bit(PG_slab, &(page)->flags) +#define PageSwapCache(page) test_bit(PG_swap_cache, &(page)->flags) +#define PageReserved(page) test_bit(PG_reserved, &(page)->flags) + +#define PageSetSlab(page) set_bit(PG_slab, &(page)->flags) +#define PageSetSwapCache(page) set_bit(PG_swap_cache, &(page)->flags) + +#define PageTestandSetSwapCache(page) test_and_set_bit(PG_swap_cache, &(page)->flags) + +#define PageClearSlab(page) clear_bit(PG_slab, &(page)->flags) +#define PageClearSwapCache(page) clear_bit(PG_swap_cache, &(page)->flags) + +#define PageTestandClearSwapCache(page) test_and_clear_bit(PG_swap_cache, &(page)->flags) + #ifdef CONFIG_HIGHMEM -#define PageHighMem(page) (test_bit(PG_highmem, &(page)->flags)) +#define PageHighMem(page) test_bit(PG_highmem, &(page)->flags) #else -#define PageHighMem(page) 0 /* needed to optimize away at compile time */ +#define PageHighMem(page) 0 /* needed to optimize away at compile time */ #endif -#define SetPageReserved(page) do { set_bit(PG_reserved, &(page)->flags); \ - } while (0) -#define ClearPageReserved(page) do { test_and_clear_bit(PG_reserved, &(page)->flags); } while (0) +#define SetPageReserved(page) set_bit(PG_reserved, &(page)->flags) +#define ClearPageReserved(page) clear_bit(PG_reserved, &(page)->flags) /* @@ -359,7 +345,6 @@ extern void remove_inode_page(struct page *); extern unsigned long page_unuse(struct page *); extern int shrink_mmap(int, int); extern void truncate_inode_pages(struct inode *, unsigned long); -extern unsigned long get_cached_page(struct inode *, unsigned long, int); extern void put_cached_page(unsigned long); /* @@ -414,10 +399,8 @@ static inline int expand_stack(struct vm_area_struct * vma, unsigned long addres address &= PAGE_MASK; grow = vma->vm_start - address; - if (vma->vm_end - address - > (unsigned long) current->rlim[RLIMIT_STACK].rlim_cur || - (vma->vm_mm->total_vm << PAGE_SHIFT) + grow - > (unsigned long) current->rlim[RLIMIT_AS].rlim_cur) + if (vma->vm_end - address > current->rlim[RLIMIT_STACK].rlim_cur || + (vma->vm_mm->total_vm << PAGE_SHIFT) + grow > current->rlim[RLIMIT_AS].rlim_cur) return -ENOMEM; vma->vm_start = address; vma->vm_offset -= grow; diff --git a/include/linux/nfsd/export.h b/include/linux/nfsd/export.h index 3370208ae..1f3a61486 100644 --- a/include/linux/nfsd/export.h +++ b/include/linux/nfsd/export.h @@ -34,8 +34,9 @@ #define NFSEXP_UIDMAP 0x0040 #define NFSEXP_KERBEROS 0x0080 /* not available */ #define NFSEXP_SUNSECURE 0x0100 -#define NFSEXP_CROSSMNT 0x0200 /* not available */ -#define NFSEXP_ALLFLAGS 0x03FF +#define NFSEXP_CROSSMNT 0x0200 +#define NFSEXP_NOSUBTREECHECK 0x0400 +#define NFSEXP_ALLFLAGS 0x07FF #ifdef __KERNEL__ diff --git a/include/linux/nfsd/nfsfh.h b/include/linux/nfsd/nfsfh.h index 5c0d673f2..ca34d85e3 100644 --- a/include/linux/nfsd/nfsfh.h +++ b/include/linux/nfsd/nfsfh.h @@ -109,9 +109,6 @@ void nfsd_fh_flush(kdev_t); void nfsd_fh_init(void); void nfsd_fh_free(void); -void expire_all(void); -void expire_by_dentry(struct dentry *); - static __inline__ struct svc_fh * fh_copy(struct svc_fh *dst, struct svc_fh *src) { diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 6410d3d1e..de5514574 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -59,10 +59,13 @@ extern void page_cache_init(unsigned long); * and get a reasonable hash by knowing roughly how the * inode pointer and offsets are distributed (ie, we * roughly know which bits are "significant") + * + * For the time being it will work for struct address_space too (most of + * them sitting inside the inodes). We might want to change it later. */ -extern inline unsigned long _page_hashfn(struct inode * inode, unsigned long offset) +extern inline unsigned long _page_hashfn(struct address_space * mapping, unsigned long offset) { -#define i (((unsigned long) inode)/(sizeof(struct inode) & ~ (sizeof(struct inode) - 1))) +#define i (((unsigned long) mapping)/(sizeof(struct inode) & ~ (sizeof(struct inode) - 1))) #define o (offset >> PAGE_SHIFT) #define s(x) ((x)+((x)>>PAGE_HASH_BITS)) return s(i+o) & (PAGE_HASH_SIZE-1); @@ -71,33 +74,33 @@ extern inline unsigned long _page_hashfn(struct inode * inode, unsigned long off #undef s } -#define page_hash(inode,offset) (page_hash_table+_page_hashfn(inode,offset)) +#define page_hash(mapping,offset) (page_hash_table+_page_hashfn(mapping,offset)) -extern struct page * __find_get_page (struct inode * inode, +extern struct page * __find_get_page (struct address_space *mapping, unsigned long offset, struct page **hash); -#define find_get_page(inode, offset) \ - __find_get_page(inode, offset, page_hash(inode, offset)) -extern struct page * __find_lock_page (struct inode * inode, +#define find_get_page(mapping, offset) \ + __find_get_page(mapping, offset, page_hash(mapping, offset)) +extern struct page * __find_lock_page (struct address_space * mapping, unsigned long offset, struct page **hash); extern void lock_page(struct page *page); -#define find_lock_page(inode, offset) \ - __find_lock_page(inode, offset, page_hash(inode, offset)) +#define find_lock_page(mapping, offset) \ + __find_lock_page(mapping, offset, page_hash(mapping, offset)) extern void __add_page_to_hash_queue(struct page * page, struct page **p); -extern void add_to_page_cache(struct page * page, struct inode * inode, unsigned long offset); -extern int add_to_page_cache_unique(struct page * page, struct inode * inode, unsigned long offset, struct page **hash); +extern void add_to_page_cache(struct page * page, struct address_space *mapping, unsigned long offset); +extern int add_to_page_cache_unique(struct page * page, struct address_space *mapping, unsigned long offset, struct page **hash); extern inline void add_page_to_hash_queue(struct page * page, struct inode * inode, unsigned long offset) { - __add_page_to_hash_queue(page, page_hash(inode,offset)); + __add_page_to_hash_queue(page, page_hash(&inode->i_data,offset)); } -extern inline void add_page_to_inode_queue(struct inode * inode, struct page * page) +extern inline void add_page_to_inode_queue(struct address_space *mapping, struct page * page) { - struct list_head *head = &inode->i_pages; + struct list_head *head = &mapping->pages; - if (!inode->i_nrpages++) { + if (!mapping->nrpages++) { if (!list_empty(head)) BUG(); } else { @@ -105,14 +108,14 @@ extern inline void add_page_to_inode_queue(struct inode * inode, struct page * p BUG(); } list_add(&page->list, head); - page->inode = inode; + page->mapping = mapping; } extern inline void remove_page_from_inode_queue(struct page * page) { - struct inode * inode = page->inode; + struct address_space * mapping = page->mapping; - inode->i_nrpages--; + mapping->nrpages--; list_del(&page->list); } diff --git a/include/linux/resource.h b/include/linux/resource.h index f3bffbd7f..5b38bb9e9 100644 --- a/include/linux/resource.h +++ b/include/linux/resource.h @@ -37,11 +37,16 @@ struct rusage { long ru_nivcsw; /* involuntary " */ }; -#define RLIM_INFINITY ((long)(~0UL>>1)) +/* + * SuS says limits have to be unsigned. + * + * Which makes a ton more sense anyway. + */ +#define RLIM_INFINITY (~0UL) struct rlimit { - long rlim_cur; - long rlim_max; + unsigned long rlim_cur; + unsigned long rlim_max; }; #define PRIO_MIN (-20) diff --git a/include/linux/serialP.h b/include/linux/serialP.h index 3726d9b5d..9f8af3dec 100644 --- a/include/linux/serialP.h +++ b/include/linux/serialP.h @@ -23,9 +23,6 @@ #include <linux/termios.h> #include <linux/tqueue.h> #include <linux/wait.h> -#ifdef CONFIG_PCI -#include <linux/pci.h> -#endif /* * Counters of the input lines (CTS, DSR, RI, CD) interrupts @@ -151,6 +148,7 @@ struct rs_multiport_struct { /* * Structures and definitions for PCI support */ +struct pci_dev; struct pci_board { unsigned short vendor; unsigned short device; diff --git a/include/linux/swap.h b/include/linux/swap.h index 7030b788d..0e186d76b 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -65,7 +65,7 @@ extern int nr_free_pages; extern int nr_lru_pages; extern struct list_head lru_cache; extern atomic_t nr_async_pages; -extern struct inode swapper_inode; +extern struct address_space swapper_space; extern atomic_t page_cache_size; extern atomic_t buffermem_pages; diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index c5ba9895f..0e1e65a70 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h @@ -103,7 +103,8 @@ enum KERN_MSGPOOL=37, /* int: Maximum system message pool size */ KERN_SYSRQ=38, /* int: Sysreq enable */ KERN_MAX_THREADS=39, /* int: Maximum nr of threads in the system */ - KERN_RANDOM=40 /* Random driver */ + KERN_RANDOM=40, /* Random driver */ + KERN_SHMALL=41 /* int: Maximum size of shared memory */ }; diff --git a/include/linux/tty.h b/include/linux/tty.h index 69050c8a8..5d85bca76 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -23,7 +23,6 @@ #include <linux/tqueue.h> #include <linux/tty_driver.h> #include <linux/tty_ldisc.h> -#include <linux/serialP.h> #include <asm/system.h> |