diff options
Diffstat (limited to 'include')
44 files changed, 215 insertions, 230 deletions
diff --git a/include/asm-alpha/pci.h b/include/asm-alpha/pci.h index a74290f55..86d1db58c 100644 --- a/include/asm-alpha/pci.h +++ b/include/asm-alpha/pci.h @@ -51,10 +51,7 @@ struct pci_controler { #define PCIBIOS_MIN_IO alpha_mv.min_io_address #define PCIBIOS_MIN_MEM alpha_mv.min_mem_address -extern inline void pcibios_set_master(struct pci_dev *dev) -{ - /* No special bus mastering setup handling */ -} +extern void pcibios_set_master(struct pci_dev *dev); extern inline void pcibios_penalize_isa_irq(int irq) { diff --git a/include/asm-alpha/system.h b/include/asm-alpha/system.h index 4c2f70170..6328750e1 100644 --- a/include/asm-alpha/system.h +++ b/include/asm-alpha/system.h @@ -14,16 +14,17 @@ * We leave one page for the initial stack page, and one page for * the initial process structure. Also, the console eats 3 MB for * the initial bootloader (one of which we can reclaim later). - * With a few other pages for various reasons, we'll use an initial - * load address of PAGE_OFFSET+0x310000UL */ #define BOOT_PCB 0x20000000 #define BOOT_ADDR 0x20000000 /* Remove when official MILO sources have ELF support: */ #define BOOT_SIZE (16*1024) - +#ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS +#define KERNEL_START_PHYS 0x300000 /* Old bootloaders hardcoded this. */ +#else #define KERNEL_START_PHYS 0x800000 /* Wildfire has a huge console */ +#endif #define KERNEL_START (PAGE_OFFSET+KERNEL_START_PHYS) #define SWAPPER_PGD KERNEL_START diff --git a/include/asm-arm/arch-arc/ide.h b/include/asm-arm/arch-arc/ide.h index bccbe3f50..39f91b60b 100644 --- a/include/asm-arm/arch-arc/ide.h +++ b/include/asm-arm/arch-arc/ide.h @@ -20,7 +20,7 @@ * This should follow whatever the default interface uses. */ static __inline__ void -ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) +ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int *irq) { ide_ioreg_t reg = (ide_ioreg_t) data_port; int i; @@ -30,7 +30,8 @@ ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) reg += 1; } hw->io_ports[IDE_CONTROL_OFFSET] = (ide_ioreg_t) ctrl_port; - hw->irq = irq; + if (irq) + *irq = 0; } /* @@ -44,7 +45,8 @@ static __inline__ void ide_init_default_hwifs(void) memset(&hw, 0, sizeof(hw)); - ide_init_hwif_ports(&hw, 0x1f0, 0x3f6, IRQ_HARDDISK); + ide_init_hwif_ports(&hw, 0x1f0, 0x3f6, NULL); + hw.irq = IRQ_HARDDISK; ide_register_hw(&hw, NULL); #endif } diff --git a/include/asm-arm/arch-cl7500/ide.h b/include/asm-arm/arch-cl7500/ide.h index 590579747..53daa0969 100644 --- a/include/asm-arm/arch-cl7500/ide.h +++ b/include/asm-arm/arch-cl7500/ide.h @@ -13,7 +13,7 @@ * This should follow whatever the default interface uses. */ static __inline__ void -ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) +ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int *irq) { ide_ioreg_t reg = (ide_ioreg_t) data_port; int i; @@ -25,7 +25,8 @@ ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) reg += 1; } hw->io_ports[IDE_CONTROL_OFFSET] = (ide_ioreg_t) ctrl_port; - hw->irq = irq; + if (irq) + *irq = 0; } /* diff --git a/include/asm-arm/arch-ebsa285/ide.h b/include/asm-arm/arch-ebsa285/ide.h index 1a09f1827..dbdeb1fab 100644 --- a/include/asm-arm/arch-ebsa285/ide.h +++ b/include/asm-arm/arch-ebsa285/ide.h @@ -13,7 +13,7 @@ * This should follow whatever the default interface uses. */ static __inline__ void -ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) +ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int *irq) { ide_ioreg_t reg = (ide_ioreg_t) data_port; int i; @@ -23,7 +23,8 @@ ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) reg += 1; } hw->io_ports[IDE_CONTROL_OFFSET] = (ide_ioreg_t) ctrl_port; - hw->irq = irq; + if (irq) + *irq = 0; } /* diff --git a/include/asm-arm/arch-l7200/ide.h b/include/asm-arm/arch-l7200/ide.h index 0cfcf3aac..aff8aaf9c 100644 --- a/include/asm-arm/arch-l7200/ide.h +++ b/include/asm-arm/arch-l7200/ide.h @@ -13,7 +13,7 @@ * This should follow whatever the default interface uses. */ static __inline__ void -ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) +ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int *irq) { } diff --git a/include/asm-arm/arch-nexuspci/ide.h b/include/asm-arm/arch-nexuspci/ide.h index cb1eac75a..4a4d1b20c 100644 --- a/include/asm-arm/arch-nexuspci/ide.h +++ b/include/asm-arm/arch-nexuspci/ide.h @@ -13,7 +13,7 @@ * This should follow whatever the default interface uses. */ static __inline__ void -ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) +ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int *irq) { ide_ioreg_t reg = (ide_ioreg_t) data_port; int i; @@ -23,7 +23,8 @@ ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) reg += 1; } hw->io_ports[IDE_CONTROL_OFFSET] = (ide_ioreg_t) ctrl_port; - hw->irq = irq; + if (irq) + *irq = 0; } /* diff --git a/include/asm-arm/arch-rpc/ide.h b/include/asm-arm/arch-rpc/ide.h index ccbc7cf76..827d81c2b 100644 --- a/include/asm-arm/arch-rpc/ide.h +++ b/include/asm-arm/arch-rpc/ide.h @@ -13,7 +13,7 @@ * This should follow whatever the default interface uses. */ static __inline__ void -ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) +ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int *irq) { ide_ioreg_t reg = (ide_ioreg_t) data_port; int i; @@ -25,7 +25,8 @@ ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) reg += 1; } hw->io_ports[IDE_CONTROL_OFFSET] = (ide_ioreg_t) ctrl_port; - hw->irq = irq; + if (irq) + *irq = 0; } /* @@ -37,6 +38,7 @@ ide_init_default_hwifs(void) { hw_regs_t hw; - ide_init_hwif_ports(&hw, 0x1f0, 0x3f6, IRQ_HARDDISK); + ide_init_hwif_ports(&hw, 0x1f0, 0x3f6, NULL); + hw.irq = IRQ_HARDDISK; ide_register_hw(&hw, NULL); } diff --git a/include/asm-arm/arch-sa1100/ide.h b/include/asm-arm/arch-sa1100/ide.h index 3a1f00e3d..3a9935c0b 100644 --- a/include/asm-arm/arch-sa1100/ide.h +++ b/include/asm-arm/arch-sa1100/ide.h @@ -17,7 +17,7 @@ * This should follow whatever the default interface uses. */ static __inline__ void -ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) +ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int *irq) { ide_ioreg_t reg; int i; @@ -37,7 +37,8 @@ ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) reg += (1 << IO_SHIFT); } hw->io_ports[IDE_CONTROL_OFFSET] = (ide_ioreg_t) (ctrl_port << IO_SHIFT); - hw->irq = irq; + if (irq) + *irq = 0; } /* @@ -73,9 +74,11 @@ ide_init_default_hwifs(void) /* MAC 23/4/1999, swap these round so that the left hand hard disk is hda when viewed from the front. This doesn't match the silkscreen however. */ - ide_init_hwif_ports(&hw,0x10,0x1e,EMPEG_IRQ_IDE2); + ide_init_hwif_ports(&hw,0x10,0x1e,NULL); + hw.irq = EMPEG_IRQ_IDE2; ide_register_hw(&hw, NULL); - ide_init_hwif_ports(&hw,0x00,0x0e,EMPEG_IRQ_IDE1); + ide_init_hwif_ports(&hw,0x00,0x0e,NULL); + hw.irq = EMPEG_IRQ_IDE1; ide_register_hw(&hw, NULL); #elif defined( CONFIG_SA1100_VICTOR ) @@ -87,7 +90,8 @@ ide_init_default_hwifs(void) /* set the pcmcia interface timing */ MECR = 0x00060006; - ide_init_hwif_ports(&hw, 0x1f0, 0x3f6, IRQ_GPIO7); + ide_init_hwif_ports(&hw, 0x1f0, 0x3f6, NULL); + hw.irq = IRQ_GPIO7; ide_register_hw(&hw, NULL); #else #error Missing IDE interface definition in include/asm/arch/ide.h diff --git a/include/asm-arm/arch-sa1100/irq.h b/include/asm-arm/arch-sa1100/irq.h index 6f447f497..2f1e63d82 100644 --- a/include/asm-arm/arch-sa1100/irq.h +++ b/include/asm-arm/arch-sa1100/irq.h @@ -15,6 +15,7 @@ * 26-05-2000 JD SA-1111 support added */ #include <linux/config.h> +#include <asm/irq.h> #define fixup_irq(x) (x) @@ -73,7 +74,7 @@ static int GPIO_11_27_spurious; /* GPIOs that triggered when masked */ static void sa1100_GPIO11_27_demux(int irq, void *dev_id, struct pt_regs *regs) { - int i, irq, spurious; + int i, spurious; while( (irq = (GEDR & 0xfffff800)) ){ /* diff --git a/include/asm-arm/arch-shark/hardware.h b/include/asm-arm/arch-shark/hardware.h index 1fb25abd1..fc38d57aa 100644 --- a/include/asm-arm/arch-shark/hardware.h +++ b/include/asm-arm/arch-shark/hardware.h @@ -10,7 +10,7 @@ #ifndef __ASM_ARCH_HARDWARE_H #define __ASM_ARCH_HARDWARE_H -#ifndef __ASSEMBLER__ +#ifndef __ASSEMBLY__ /* * Mapping areas diff --git a/include/asm-arm/arch-shark/ide.h b/include/asm-arm/arch-shark/ide.h index a9e373e98..2ef90b558 100644 --- a/include/asm-arm/arch-shark/ide.h +++ b/include/asm-arm/arch-shark/ide.h @@ -15,7 +15,7 @@ * This should follow whatever the default interface uses. */ static __inline__ void -ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) +ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int *irq) { ide_ioreg_t reg = (ide_ioreg_t) data_port; int i; @@ -27,7 +27,8 @@ ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int irq) reg += 1; } hw->io_ports[IDE_CONTROL_OFFSET] = (ide_ioreg_t) ctrl_port; - hw->irq = irq; + if (irq) + *irq = 0; } /* @@ -39,7 +40,8 @@ ide_init_default_hwifs(void) { hw_regs_t hw; - ide_init_hwif_ports(&hw, 0x1f0, 0x3f6, 14); + ide_init_hwif_ports(&hw, 0x1f0, 0x3f6, NULL); + hw.irq = 14; ide_register_hw(&hw, NULL); } diff --git a/include/asm-arm/atomic.h b/include/asm-arm/atomic.h index d5dfe4f91..94fd17170 100644 --- a/include/asm-arm/atomic.h +++ b/include/asm-arm/atomic.h @@ -36,36 +36,36 @@ static __inline__ void atomic_add(int i, volatile atomic_t *v) { unsigned long flags; - save_flags_cli (flags); + __save_flags_cli(flags); v->counter += i; - restore_flags (flags); + __restore_flags(flags); } static __inline__ void atomic_sub(int i, volatile atomic_t *v) { unsigned long flags; - save_flags_cli (flags); + __save_flags_cli(flags); v->counter -= i; - restore_flags (flags); + __restore_flags(flags); } static __inline__ void atomic_inc(volatile atomic_t *v) { unsigned long flags; - save_flags_cli (flags); + __save_flags_cli(flags); v->counter += 1; - restore_flags (flags); + __restore_flags(flags); } static __inline__ void atomic_dec(volatile atomic_t *v) { unsigned long flags; - save_flags_cli (flags); + __save_flags_cli(flags); v->counter -= 1; - restore_flags (flags); + __restore_flags(flags); } static __inline__ int atomic_dec_and_test(volatile atomic_t *v) @@ -73,10 +73,10 @@ static __inline__ int atomic_dec_and_test(volatile atomic_t *v) unsigned long flags; int result; - save_flags_cli (flags); + __save_flags_cli(flags); v->counter -= 1; result = (v->counter == 0); - restore_flags (flags); + __restore_flags(flags); return result; } @@ -86,10 +86,10 @@ extern __inline__ int atomic_add_negative(int i, volatile atomic_t *v) unsigned long flags; int result; - save_flags_cli(flags); + __save_flags_cli(flags); v->counter += i; result = (v->counter < 0); - restore_flags(flags); + __restore_flags(flags); return result; } @@ -98,9 +98,9 @@ static __inline__ void atomic_clear_mask(unsigned long mask, unsigned long *addr { unsigned long flags; - save_flags_cli (flags); + __save_flags_cli(flags); *addr &= ~mask; - restore_flags (flags); + __restore_flags(flags); } #endif diff --git a/include/asm-arm/cpu-multi26.h b/include/asm-arm/cpu-multi26.h index c09edf8b1..50639037d 100644 --- a/include/asm-arm/cpu-multi26.h +++ b/include/asm-arm/cpu-multi26.h @@ -20,7 +20,6 @@ extern struct processor { void (*_set_pgd)(pgd_t *pgd); /* XCHG */ unsigned long (*_xchg_1)(unsigned long x, volatile void *ptr); - unsigned long (*_xchg_2)(unsigned long x, volatile void *ptr); unsigned long (*_xchg_4)(unsigned long x, volatile void *ptr); } processor; @@ -34,7 +33,6 @@ extern const struct processor arm3_processor_functions; #define cpu_do_idle() do { } while (0) #define cpu_switch_mm(pgd,tsk) processor._set_pgd(pgd) #define cpu_xchg_1(x,ptr) processor._xchg_1(x,ptr) -#define cpu_xchg_2(x,ptr) processor._xchg_2(x,ptr) #define cpu_xchg_4(x,ptr) processor._xchg_4(x,ptr) extern void cpu_memc_update_all(pgd_t *pgd); diff --git a/include/asm-arm/dma.h b/include/asm-arm/dma.h index b67e33a9d..67db9ab90 100644 --- a/include/asm-arm/dma.h +++ b/include/asm-arm/dma.h @@ -6,7 +6,8 @@ typedef unsigned int dmach_t; #include <linux/config.h> #include <linux/kernel.h> #include <linux/spinlock.h> -#include <asm/irq.h> +#include <asm/system.h> +#include <asm/memory.h> #include <asm/arch/dma.h> /* diff --git a/include/asm-arm/floppy.h b/include/asm-arm/floppy.h index 9d9848644..05a94a2e6 100644 --- a/include/asm-arm/floppy.h +++ b/include/asm-arm/floppy.h @@ -1,7 +1,9 @@ /* * linux/include/asm-arm/floppy.h * - * (C) 1996 Russell King + * (C) 1996-2000 Russell King + * + * Note that we don't touch FLOPPY_DMA nor FLOPPY_IRQ here */ #ifndef __ASM_ARM_FLOPPY_H #define __ASM_ARM_FLOPPY_H @@ -24,14 +26,14 @@ #define fd_disable_irq() disable_irq(IRQ_FLOPPYDISK) #define fd_enable_irq() enable_irq(IRQ_FLOPPYDISK) -#define fd_request_dma() request_dma(FLOPPY_DMA,"floppy") -#define fd_free_dma() free_dma(FLOPPY_DMA) -#define fd_disable_dma() disable_dma(FLOPPY_DMA) -#define fd_enable_dma() enable_dma(FLOPPY_DMA) -#define fd_clear_dma_ff() clear_dma_ff(FLOPPY_DMA) -#define fd_set_dma_mode(mode) set_dma_mode(FLOPPY_DMA, (mode)) -#define fd_set_dma_addr(addr) set_dma_addr(FLOPPY_DMA, virt_to_bus((addr))) -#define fd_set_dma_count(len) set_dma_count(FLOPPY_DMA, (len)) +#define fd_request_dma() request_dma(DMA_FLOPPY,"floppy") +#define fd_free_dma() free_dma(DMA_FLOPPY) +#define fd_disable_dma() disable_dma(DMA_FLOPPY) +#define fd_enable_dma() enable_dma(DMA_FLOPPY) +#define fd_clear_dma_ff() clear_dma_ff(DMA_FLOPPY) +#define fd_set_dma_mode(mode) set_dma_mode(DMA_FLOPPY, (mode)) +#define fd_set_dma_addr(addr) set_dma_addr(DMA_FLOPPY, virt_to_bus((addr))) +#define fd_set_dma_count(len) set_dma_count(DMA_FLOPPY, (len)) #define fd_cacheflush(addr,sz) /* need to clean up dma.h */ @@ -109,13 +111,12 @@ extern __inline__ void fd_scandrives (void) } #define FDC1 (0x3f0) -static int FDC2 = -1; #define FLOPPY0_TYPE 4 #define FLOPPY1_TYPE 4 #define N_FDC 1 -#define N_DRIVE 8 +#define N_DRIVE 4 #define FLOPPY_MOTOR_MASK 0xf0 diff --git a/include/asm-arm/io.h b/include/asm-arm/io.h index 871e50a65..fad9e7412 100644 --- a/include/asm-arm/io.h +++ b/include/asm-arm/io.h @@ -1,7 +1,7 @@ /* * linux/include/asm-arm/io.h * - * Copyright (C) 1996-1999 Russell King + * Copyright (C) 1996-2000 Russell King * * Modifications: * 16-Sep-1996 RMK Inlined the inx/outx functions & optimised for both @@ -11,6 +11,7 @@ * 27-Mar-1999 PJB Second parameter of memcpy_toio is const.. * 04-Apr-1999 PJB Added check_signature. * 12-Dec-1999 RMK More cleanups + * 18-Jun-2000 RMK Removed virt_to_* and friends definitions */ #ifndef __ASM_ARM_IO_H #define __ASM_ARM_IO_H @@ -43,23 +44,7 @@ extern void insl(unsigned int port, void *from, int len); #ifdef __KERNEL__ -#include <asm/arch/memory.h> - -extern __inline__ unsigned long virt_to_phys(volatile void *x) -{ - return __virt_to_phys((unsigned long)(x)); -} - -extern __inline__ void *phys_to_virt(unsigned long x) -{ - return (void *)(__phys_to_virt((unsigned long)(x))); -} - -/* - * Virtual <-> DMA view memory address translations - */ -#define virt_to_bus(x) (__virt_to_bus((unsigned long)(x))) -#define bus_to_virt(x) ((void *)(__bus_to_virt((unsigned long)(x)))) +#include <asm/memory.h> /* the following macro is depreciated */ #define ioaddr(port) __ioaddr((port)) diff --git a/include/asm-arm/memory.h b/include/asm-arm/memory.h new file mode 100644 index 000000000..837ea199a --- /dev/null +++ b/include/asm-arm/memory.h @@ -0,0 +1,31 @@ +/* + * linux/include/asm-arm/memory.h + * + * Copyright (C) 2000 Russell King + * + * Note: this file should not be included by non-asm/.h files + * + * Modifications: + */ +#ifndef __ASM_ARM_MEMORY_H +#define __ASM_ARM_MEMORY_H + +#include <asm/arch/memory.h> + +extern __inline__ unsigned long virt_to_phys(volatile void *x) +{ + return __virt_to_phys((unsigned long)(x)); +} + +extern __inline__ void *phys_to_virt(unsigned long x) +{ + return (void *)(__phys_to_virt((unsigned long)(x))); +} + +/* + * Virtual <-> DMA view memory address translations + */ +#define virt_to_bus(x) (__virt_to_bus((unsigned long)(x))) +#define bus_to_virt(x) ((void *)(__bus_to_virt((unsigned long)(x)))) + +#endif diff --git a/include/asm-arm/proc-armo/system.h b/include/asm-arm/proc-armo/system.h index bc113ae6e..36a3515e7 100644 --- a/include/asm-arm/proc-armo/system.h +++ b/include/asm-arm/proc-armo/system.h @@ -7,20 +7,16 @@ #ifndef __ASM_PROC_SYSTEM_H #define __ASM_PROC_SYSTEM_H -extern const char xchg_str[]; - -#include <linux/config.h> #include <asm/proc-fns.h> extern __inline__ unsigned long __xchg(unsigned long x, volatile void *ptr, int size) { - extern void arm_invalidptr(const char *, int); + extern void __bad_xchg(volatile void *, int); switch (size) { case 1: return cpu_xchg_1(x, ptr); - case 2: return cpu_xchg_2(x, ptr); case 4: return cpu_xchg_4(x, ptr); - default: arm_invalidptr(xchg_str, size); + default: __bad_xchg(ptr, size); } return 0; } @@ -108,22 +104,4 @@ extern __inline__ unsigned long __xchg(unsigned long x, volatile void *ptr, int : "memory"); \ } while (0) -/* For spinlocks etc */ -#define local_irq_save(x) __save_flags_cli(x) -#define local_irq_restore(x) __restore_flags(x) -#define local_irq_disable() __cli() -#define local_irq_enable() __sti() - -#ifdef CONFIG_SMP -#error SMP not supported -#else - -#define cli() __cli() -#define sti() __sti() -#define save_flags(x) __save_flags(x) -#define restore_flags(x) __restore_flags(x) -#define save_flags_cli(x) __save_flags_cli(x) - -#endif - #endif diff --git a/include/asm-arm/proc-armv/system.h b/include/asm-arm/proc-armv/system.h index 3b35be309..d9ef8ffd9 100644 --- a/include/asm-arm/proc-armv/system.h +++ b/include/asm-arm/proc-armv/system.h @@ -7,20 +7,16 @@ #ifndef __ASM_PROC_SYSTEM_H #define __ASM_PROC_SYSTEM_H -#include <linux/config.h> - -extern const char xchg_str[]; - extern __inline__ unsigned long __xchg(unsigned long x, volatile void *ptr, int size) { - extern void arm_invalidptr(const char *, int); + extern void __bad_xchg(volatile void *, int); switch (size) { case 1: __asm__ __volatile__ ("swpb %0, %1, [%2]" : "=r" (x) : "r" (x), "r" (ptr) : "memory"); break; case 4: __asm__ __volatile__ ("swp %0, %1, [%2]" : "=r" (x) : "r" (x), "r" (ptr) : "memory"); break; - default: arm_invalidptr(xchg_str, size); + default: __bad_xchg(ptr, size); } return x; } @@ -102,22 +98,4 @@ extern unsigned long cr_alignment; /* defined in entry-armv.S */ : "r" (x) \ : "memory") -/* For spinlocks etc */ -#define local_irq_save(x) __save_flags_cli(x) -#define local_irq_restore(x) __restore_flags(x) -#define local_irq_disable() __cli() -#define local_irq_enable() __sti() - -#ifdef CONFIG_SMP -#error SMP not supported -#else - -#define cli() __cli() -#define sti() __sti() -#define save_flags(x) __save_flags(x) -#define restore_flags(x) __restore_flags(x) -#define save_flags_cli(x) __save_flags_cli(x) - -#endif - #endif diff --git a/include/asm-arm/ptrace.h b/include/asm-arm/ptrace.h index 961363cc7..3126767a4 100644 --- a/include/asm-arm/ptrace.h +++ b/include/asm-arm/ptrace.h @@ -17,6 +17,10 @@ #ifdef __KERNEL__ extern void show_regs(struct pt_regs *); + +#define predicate(x) (x & 0xf0000000) +#define PREDICATE_ALWAYS 0xe0000000 + #endif #endif /* __ASSEMBLY__ */ diff --git a/include/asm-arm/system.h b/include/asm-arm/system.h index b75a88411..94073475d 100644 --- a/include/asm-arm/system.h +++ b/include/asm-arm/system.h @@ -381,7 +381,6 @@ extern unsigned int __machine_arch_type; #define tas(ptr) (xchg((ptr),1)) -extern void arm_malalignedptr(const char *, void *, volatile void *); extern asmlinkage void __backtrace(void); /* @@ -411,4 +410,22 @@ extern struct task_struct *__switch_to(struct task_struct *prev, struct task_str #endif +/* For spinlocks etc */ +#define local_irq_save(x) __save_flags_cli(x) +#define local_irq_restore(x) __restore_flags(x) +#define local_irq_disable() __cli() +#define local_irq_enable() __sti() + +#ifdef CONFIG_SMP +#error SMP not supported +#else + +#define cli() __cli() +#define sti() __sti() +#define save_flags(x) __save_flags(x) +#define restore_flags(x) __restore_flags(x) +#define save_flags_cli(x) __save_flags_cli(x) + +#endif + #endif diff --git a/include/asm-ppc/unistd.h b/include/asm-ppc/unistd.h index d4609a9a8..4c64c151a 100644 --- a/include/asm-ppc/unistd.h +++ b/include/asm-ppc/unistd.h @@ -194,7 +194,7 @@ #define __NR_getpmsg 187 /* some people actually want streams */ #define __NR_putpmsg 188 /* some people actually want streams */ #define __NR_vfork 189 -#define __NR_ugetrlimit 191 /* SuS compliant getrlimit */ +#define __NR_ugetrlimit 190 /* SuS compliant getrlimit */ #define __NR_mmap2 192 #define __NR_truncate64 193 #define __NR_ftruncate64 194 diff --git a/include/linux/affs_fs.h b/include/linux/affs_fs.h index 60af0d40c..8a09cd72d 100644 --- a/include/linux/affs_fs.h +++ b/include/linux/affs_fs.h @@ -84,7 +84,7 @@ extern int affs_add_entry(struct inode *dir, struct inode *link, extern void affs_put_inode(struct inode *inode); extern void affs_delete_inode(struct inode *inode); extern void affs_read_inode(struct inode *inode); -extern void affs_write_inode(struct inode *inode); +extern void affs_write_inode(struct inode *inode, int); /* super.c */ diff --git a/include/linux/arcdevice.h b/include/linux/arcdevice.h index b5a9999a5..d2334ba95 100644 --- a/include/linux/arcdevice.h +++ b/include/linux/arcdevice.h @@ -241,11 +241,13 @@ struct arcnet_local { setup2, /* Contents of setup2 register */ intmask; /* current value of INTMASK register */ uint8_t default_proto[256]; /* default encap to use for each host */ - int cur_tx, /* buffer used by current transmit, or -1 */ + int cur_tx, /* buffer used by current transmit, or -1 */ next_tx, /* buffer where a packet is ready to send */ cur_rx; /* current receive buffer */ - int lastload_dest, /* can last loaded packet be acked? */ + int lastload_dest, /* can last loaded packet be acked? */ lasttrans_dest; /* can last TX'd packet be acked? */ + int timed_out; /* need to process TX timeout and drop packet */ + unsigned long last_timeout; /* time of last reported timeout */ char *card_name; /* card ident string */ int card_flags; /* special card features */ diff --git a/include/linux/coda_psdev.h b/include/linux/coda_psdev.h index 2b6bbadd7..73757bb53 100644 --- a/include/linux/coda_psdev.h +++ b/include/linux/coda_psdev.h @@ -11,9 +11,8 @@ extern struct coda_sb_info coda_super_info; struct coda_sb_info { struct inode * sbi_psdev; /* /dev/cfs? Venus/kernel device */ - struct inode * sbi_ctlcp; /* control magic file */ int sbi_refct; - struct venus_comm * sbi_vcomm; + struct venus_comm * sbi_vcomm; struct inode * sbi_root; struct super_block *sbi_sb; struct list_head sbi_cchead; @@ -27,7 +26,6 @@ struct venus_comm { struct list_head vc_pending; struct list_head vc_processing; int vc_inuse; - pid_t vc_pid; /* Venus pid */ }; diff --git a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h index 25178b66b..af962e94f 100644 --- a/include/linux/ext2_fs.h +++ b/include/linux/ext2_fs.h @@ -548,7 +548,7 @@ extern int ext2_read (struct inode *, struct file *, char *, int); extern int ext2_write (struct inode *, struct file *, char *, int); /* fsync.c */ -extern int ext2_sync_file (struct file *, struct dentry *); +extern int ext2_sync_file (struct file *, struct dentry *, int); /* ialloc.c */ extern struct inode * ext2_new_inode (const struct inode *, int, int *); @@ -562,7 +562,7 @@ extern struct buffer_head * ext2_getblk (struct inode *, long, int, int *); extern struct buffer_head * ext2_bread (struct inode *, int, int, int *); extern void ext2_read_inode (struct inode *); -extern void ext2_write_inode (struct inode *); +extern void ext2_write_inode (struct inode *, int); extern void ext2_put_inode (struct inode *); extern void ext2_delete_inode (struct inode *); extern int ext2_sync_inode (struct inode *); diff --git a/include/linux/fs.h b/include/linux/fs.h index 8a1f8e9b6..b30bb8a08 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -47,7 +47,12 @@ struct poll_table_struct; #define BLOCK_SIZE (1<<BLOCK_SIZE_BITS) /* And dynamically-tunable limits and defaults: */ -extern int max_files, nr_files, nr_free_files; +struct files_stat_struct { + int nr_files; /* read only */ + int nr_free_files; /* read only */ + int max_files; /* tunable */ +}; +extern struct files_stat_struct files_stat; extern int max_super_blocks, nr_super_blocks; #define NR_FILE 8192 /* this can well be larger on a larger system */ @@ -84,6 +89,7 @@ extern int max_super_blocks, nr_super_blocks; * kernel-wide vfsmnt is kept in ->kern_mnt. */ #define FS_NOMOUNT 16 /* Never mount from userland */ +#define FS_LITTER 32 /* Keeps the tree in dcache */ /* * These are the fs-independent mount-flags: up to 16 flags are supported */ @@ -504,10 +510,8 @@ typedef struct files_struct *fl_owner_t; struct file_lock { struct file_lock *fl_next; /* singly linked list for this inode */ - struct file_lock *fl_nextlink; /* doubly linked list of all locks */ - struct file_lock *fl_prevlink; /* used to simplify lock removal */ - struct file_lock *fl_nextblock; /* circular list of blocked processes */ - struct file_lock *fl_prevblock; + struct list_head fl_link; /* doubly linked list of all locks */ + struct list_head fl_block; /* circular list of blocked processes */ fl_owner_t fl_owner; unsigned int fl_pid; wait_queue_head_t fl_wait; @@ -532,7 +536,7 @@ struct file_lock { #define OFFSET_MAX INT_LIMIT(loff_t) #endif -extern struct file_lock *file_lock_table; +extern struct list_head file_lock_list; #include <linux/fcntl.h> @@ -721,7 +725,7 @@ struct file_operations { int (*open) (struct inode *, struct file *); int (*flush) (struct file *); int (*release) (struct inode *, struct file *); - int (*fsync) (struct file *, struct dentry *); + int (*fsync) (struct file *, struct dentry *, int datasync); int (*fasync) (int, struct file *, int); int (*lock) (struct file *, int, struct file_lock *); ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *); @@ -754,7 +758,7 @@ struct inode_operations { */ struct super_operations { void (*read_inode) (struct inode *); - void (*write_inode) (struct inode *); + void (*write_inode) (struct inode *, int); void (*put_inode) (struct inode *); void (*delete_inode) (struct inode *); void (*put_super) (struct super_block *); @@ -859,7 +863,8 @@ static inline int locks_verify_truncate(struct inode *inode, return locks_mandatory_area( FLOCK_VERIFY_WRITE, inode, filp, size < inode->i_size ? size : inode->i_size, - abs(inode->i_size - size) + (size < inode->i_size ? inode->i_size - size + : size - inode->i_size) ); return 0; } @@ -989,7 +994,7 @@ extern void invalidate_inode_pages(struct inode *); #define destroy_buffers(dev) __invalidate_buffers((dev), 1) extern void __invalidate_buffers(kdev_t dev, int); extern void sync_inodes(kdev_t); -extern void write_inode_now(struct inode *); +extern void write_inode_now(struct inode *, int); extern void sync_dev(kdev_t); extern int fsync_dev(kdev_t); extern void sync_supers(kdev_t); @@ -997,7 +1002,16 @@ extern int bmap(struct inode *, int); extern int notify_change(struct dentry *, struct iattr *); extern int permission(struct inode *, int); extern int get_write_access(struct inode *); -extern void put_write_access(struct inode *); +extern int deny_write_access(struct file *); +static inline void put_write_access(struct inode * inode) +{ + atomic_dec(&inode->i_writecount); +} +static inline void allow_write_access(struct file *file) +{ + if (file) + atomic_inc(&file->f_dentry->d_inode->i_writecount); +} extern int do_pipe(int *); extern int open_namei(const char *, int, int, struct nameidata *); @@ -1037,7 +1051,7 @@ extern ino_t find_inode_number(struct dentry *, struct qstr *); /* * Type of the last component on LOOKUP_PARENT */ -enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT }; +enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND}; /* * "descriptor" for what we're up to with a read for sendfile(). @@ -1148,6 +1162,7 @@ extern struct inode_operations page_symlink_inode_operations; extern int vfs_readdir(struct file *, filldir_t, void *); extern int dcache_readdir(struct file *, void *, filldir_t); +extern struct file_system_type *get_fs_type(const char *name); extern struct super_block *get_super(kdev_t); struct super_block *get_empty_super(void); extern void put_super(kdev_t); @@ -1172,7 +1187,7 @@ extern int read_ahead[]; extern ssize_t char_write(struct file *, const char *, size_t, loff_t *); extern ssize_t block_write(struct file *, const char *, size_t, loff_t *); -extern int file_fsync(struct file *, struct dentry *); +extern int file_fsync(struct file *, struct dentry *, int); extern int generic_buffer_fdatasync(struct inode *inode, unsigned long start_idx, unsigned long end_idx); extern int inode_change_ok(struct inode *, struct iattr *); @@ -1186,20 +1201,6 @@ extern void inode_setattr(struct inode *, struct iattr *); */ /* - * We need to do a check-parent every time - * after we have locked the parent - to verify - * that the parent is still our parent and - * that we are still hashed onto it.. - * - * This is required in case two processes race - * on removing (or moving) the same entry: the - * parent lock will serialize them, but the - * other process will be too late.. - */ -#define check_parent(dir, dentry) \ - ((dir) == (dentry)->d_parent && !d_unhashed(dentry)) - -/* * Locking the parent is needed to: * - serialize directory operations * - make sure the parent doesn't change from diff --git a/include/linux/kernelcapi.h b/include/linux/kernelcapi.h index 250191081..b9efcb696 100644 --- a/include/linux/kernelcapi.h +++ b/include/linux/kernelcapi.h @@ -58,12 +58,8 @@ #ifndef __KERNELCAPI_H__ #define __KERNELCAPI_H__ -#define CAPI_MAXAPPL 20 /* - * maximum number of applications - */ -#define CAPI_MAXCONTR 10 /* - * maximum number of controller - */ +#define CAPI_MAXAPPL 128 /* maximum number of applications */ +#define CAPI_MAXCONTR 16 /* maximum number of controller */ #define CAPI_MAXDATAWINDOW 8 diff --git a/include/linux/minix_fs.h b/include/linux/minix_fs.h index 1eca767b4..99cd63717 100644 --- a/include/linux/minix_fs.h +++ b/include/linux/minix_fs.h @@ -101,7 +101,7 @@ extern struct buffer_head * minix_bread(struct inode *, int, int); extern void minix_truncate(struct inode *); extern int minix_sync_inode(struct inode *); -extern int minix_sync_file(struct file *, struct dentry *); +extern int minix_sync_file(struct file *, struct dentry *, int); extern struct address_space_operations minix_aops; extern struct inode_operations minix_file_inode_operations; diff --git a/include/linux/mm.h b/include/linux/mm.h index 37cb9664e..e6325a298 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -185,6 +185,7 @@ typedef struct page { #define ClearPageUptodate(page) clear_bit(PG_uptodate, &(page)->flags) #define PageDirty(page) test_bit(PG_dirty, &(page)->flags) #define SetPageDirty(page) set_bit(PG_dirty, &(page)->flags) +#define ClearPageDirty(page) clear_bit(PG_dirty, &(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) diff --git a/include/linux/mount.h b/include/linux/mount.h index 61ab19b1f..adb571de2 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h @@ -26,7 +26,6 @@ struct vfsmount atomic_t mnt_count; char *mnt_devname; /* Name of device e.g. /dev/dsk/hda1 */ - char *mnt_dirname; /* Name of directory mounted on */ struct list_head mnt_list; uid_t mnt_owner; }; diff --git a/include/linux/msdos_fs.h b/include/linux/msdos_fs.h index 4897f2ec9..cbbf78528 100644 --- a/include/linux/msdos_fs.h +++ b/include/linux/msdos_fs.h @@ -248,7 +248,7 @@ extern struct inode *fat_build_inode(struct super_block*,struct msdos_dir_entry* extern struct super_block *fat_read_super(struct super_block *s, void *data, int silent, struct inode_operations *dir_ops); extern void msdos_put_super(struct super_block *sb); extern int fat_statfs(struct super_block *sb,struct statfs *buf); -extern void fat_write_inode(struct inode *inode); +extern void fat_write_inode(struct inode *inode, int); /* dir.c */ extern struct file_operations fat_dir_operations; diff --git a/include/linux/ncp_fs_i.h b/include/linux/ncp_fs_i.h index 96728bcdd..ffdf49f4c 100644 --- a/include/linux/ncp_fs_i.h +++ b/include/linux/ncp_fs_i.h @@ -19,7 +19,8 @@ struct ncp_inode_info { __u32 DosDirNum __attribute__((packed)); __u32 volNumber __attribute__((packed)); __u32 nwattr; - int opened; + struct semaphore open_sem; + atomic_t opened; int access; __u32 server_file_handle __attribute__((packed)); __u8 open_create_action __attribute__((packed)); diff --git a/include/linux/nfsd/cache.h b/include/linux/nfsd/cache.h index 8e675705e..ae2da13be 100644 --- a/include/linux/nfsd/cache.h +++ b/include/linux/nfsd/cache.h @@ -25,9 +25,11 @@ struct svc_cacherep { unsigned char c_state, /* unused, inprog, done */ c_type, /* status, buffer */ c_secure : 1; /* req came from port < 1024 */ - struct in_addr c_client; + struct sockaddr_in c_addr; u32 c_xid; + u32 c_prot; u32 c_proc; + u32 c_vers; unsigned long c_timestamp; union { struct svc_buf u_buffer; diff --git a/include/linux/nfsd/export.h b/include/linux/nfsd/export.h index 06a21296f..5fb55c738 100644 --- a/include/linux/nfsd/export.h +++ b/include/linux/nfsd/export.h @@ -95,18 +95,6 @@ int nfserrno(int errno); void exp_nlmdetach(void); -extern __inline__ int -exp_checkaddr(struct svc_client *clp, struct in_addr addr) -{ - struct in_addr *ap = clp->cl_addr; - int i; - - for (i = clp->cl_naddr; i--; ap++) - if (ap->s_addr == addr.s_addr) - return 1; - return 0; -} - #endif /* __KERNEL__ */ #endif /* NFSD_EXPORT_H */ diff --git a/include/linux/nfsd/nfsd.h b/include/linux/nfsd/nfsd.h index 42663e79b..26e8edd22 100644 --- a/include/linux/nfsd/nfsd.h +++ b/include/linux/nfsd/nfsd.h @@ -80,19 +80,19 @@ int nfsd_racache_init(int); void nfsd_racache_shutdown(void); int nfsd_lookup(struct svc_rqst *, struct svc_fh *, const char *, int, struct svc_fh *); -#ifdef CONFIG_NFSD_V3 -int nfsd_access(struct svc_rqst *, struct svc_fh *, u32 *); -#endif /* CONFIG_NFSD_V3 */ int nfsd_setattr(struct svc_rqst *, struct svc_fh *, struct iattr *); int nfsd_create(struct svc_rqst *, struct svc_fh *, char *name, int len, struct iattr *attrs, int type, dev_t rdev, struct svc_fh *res); #ifdef CONFIG_NFSD_V3 +int nfsd_access(struct svc_rqst *, struct svc_fh *, u32 *); int nfsd_create_v3(struct svc_rqst *, struct svc_fh *, char *name, int len, struct iattr *attrs, struct svc_fh *res, int createmode, u32 *verifier); +int nfsd_commit(struct svc_rqst *, struct svc_fh *, + off_t, unsigned long); #endif /* CONFIG_NFSD_V3 */ int nfsd_open(struct svc_rqst *, struct svc_fh *, int, int, struct file *); @@ -122,10 +122,7 @@ int nfsd_readdir(struct svc_rqst *, struct svc_fh *, u32 *buffer, int *countp, u32 *verf); int nfsd_statfs(struct svc_rqst *, struct svc_fh *, struct statfs *); -#ifdef CONFIG_NFSD_V3 -int nfsd_commit(struct svc_rqst *, struct svc_fh *, - off_t, unsigned long); -#endif /* CONFIG_NFSD_V3 */ + int nfsd_notify_change(struct inode *, struct iattr *); int nfsd_permission(struct svc_export *, struct dentry *, int); diff --git a/include/linux/nfsd/nfsfh.h b/include/linux/nfsd/nfsfh.h index 83320b810..39ab97f14 100644 --- a/include/linux/nfsd/nfsfh.h +++ b/include/linux/nfsd/nfsfh.h @@ -90,7 +90,7 @@ struct nfs_fhbase_new { }; struct knfsd_fh { - int fh_size; /* significant for NFSv3. + unsigned int fh_size; /* significant for NFSv3. * Points to the current size while building * a new file handle */ @@ -149,14 +149,13 @@ typedef struct svc_fh { struct dentry * fh_dentry; /* validated dentry */ struct svc_export * fh_export; /* export pointer */ int fh_maxsize; /* max size for fh_handle */ + + unsigned char fh_locked; /* inode locked by us */ + #ifdef CONFIG_NFSD_V3 unsigned char fh_post_saved; /* post-op attrs saved */ unsigned char fh_pre_saved; /* pre-op attrs saved */ -#endif /* CONFIG_NFSD_V3 */ - unsigned char fh_locked; /* inode locked by us */ - unsigned char fh_dverified; /* dentry has been checked */ -#ifdef CONFIG_NFSD_V3 /* Pre-op attributes saved during fh_lock */ __u64 fh_pre_size; /* size before operation */ time_t fh_pre_mtime; /* mtime before oper */ @@ -207,7 +206,7 @@ void fh_put(struct svc_fh *); static __inline__ struct svc_fh * fh_copy(struct svc_fh *dst, struct svc_fh *src) { - if (src->fh_dverified || src->fh_locked) { + if (src->fh_dentry || src->fh_locked) { struct dentry *dentry = src->fh_dentry; printk(KERN_ERR "fh_copy: copying %s/%s, already verified!\n", dentry->d_parent->d_name.name, dentry->d_name.name); @@ -241,7 +240,6 @@ fill_pre_wcc(struct svc_fh *fhp) fhp->fh_pre_size = inode->i_size; fhp->fh_pre_saved = 1; } - fhp->fh_locked = 1; } /* @@ -273,13 +271,18 @@ fill_post_wcc(struct svc_fh *fhp) fhp->fh_post_mtime = inode->i_mtime; fhp->fh_post_ctime = inode->i_ctime; fhp->fh_post_saved = 1; - fhp->fh_locked = 0; } +#else +#define fill_pre_wcc(ignored) +#define fill_post_wcc(notused) #endif /* CONFIG_NFSD_V3 */ /* * Lock a file handle/inode + * NOTE: both fh_lock and fh_unlock are done "by hand" in + * vfs.c:nfsd_rename as it needs to grab 2 i_sem's at once + * so, any changes here should be reflected there. */ static inline void fh_lock(struct svc_fh *fhp) @@ -290,7 +293,7 @@ fh_lock(struct svc_fh *fhp) dfprintk(FILEOP, "nfsd: fh_lock(%s) locked = %d\n", SVCFH_fmt(fhp), fhp->fh_locked); - if (!fhp->fh_dverified) { + if (!fhp->fh_dentry) { printk(KERN_ERR "fh_lock: fh not verified!\n"); return; } @@ -302,11 +305,8 @@ fh_lock(struct svc_fh *fhp) inode = dentry->d_inode; down(&inode->i_sem); -#ifdef CONFIG_NFSD_V3 fill_pre_wcc(fhp); -#else fhp->fh_locked = 1; -#endif /* CONFIG_NFSD_V3 */ } /* @@ -315,20 +315,13 @@ fh_lock(struct svc_fh *fhp) static inline void fh_unlock(struct svc_fh *fhp) { - if (!fhp->fh_dverified) + if (!fhp->fh_dentry) printk(KERN_ERR "fh_unlock: fh not verified!\n"); if (fhp->fh_locked) { -#ifdef CONFIG_NFSD_V3 fill_post_wcc(fhp); up(&fhp->fh_dentry->d_inode->i_sem); -#else - struct dentry *dentry = fhp->fh_dentry; - struct inode *inode = dentry->d_inode; - fhp->fh_locked = 0; - up(&inode->i_sem); -#endif /* CONFIG_NFSD_V3 */ } } #endif /* __KERNEL__ */ diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 5512d2a51..04ae938be 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -330,13 +330,14 @@ #define PCI_DEVICE_ID_SI_6205 0x0205 #define PCI_DEVICE_ID_SI_501 0x0406 #define PCI_DEVICE_ID_SI_496 0x0496 -#define PCI_DEVICE_ID_SI_300 0x0300 +#define PCI_DEVICE_ID_SI_300 0x0300 #define PCI_DEVICE_ID_SI_530 0x0530 -#define PCI_DEVICE_ID_SI_540 0x5300 +#define PCI_DEVICE_ID_SI_540 0x0540 #define PCI_DEVICE_ID_SI_601 0x0601 #define PCI_DEVICE_ID_SI_620 0x0620 -#define PCI_DEVICE_ID_SI_630 0x6300 +#define PCI_DEVICE_ID_SI_630 0x0630 #define PCI_DEVICE_ID_SI_5107 0x5107 +#define PCI_DEVICE_ID_SI_5300 0x5300 #define PCI_DEVICE_ID_SI_5511 0x5511 #define PCI_DEVICE_ID_SI_5513 0x5513 #define PCI_DEVICE_ID_SI_5571 0x5571 @@ -344,6 +345,7 @@ #define PCI_DEVICE_ID_SI_5597 0x5597 #define PCI_DEVICE_ID_SI_5598 0x5598 #define PCI_DEVICE_ID_SI_5600 0x5600 +#define PCI_DEVICE_ID_SI_6300 0x6300 #define PCI_DEVICE_ID_SI_6306 0x6306 #define PCI_DEVICE_ID_SI_6326 0x6326 #define PCI_DEVICE_ID_SI_7001 0x7001 diff --git a/include/linux/qnx4_fs.h b/include/linux/qnx4_fs.h index ad5ca5543..dd9b7cb6e 100644 --- a/include/linux/qnx4_fs.h +++ b/include/linux/qnx4_fs.h @@ -116,7 +116,7 @@ extern void qnx4_truncate(struct inode *inode); extern void qnx4_free_inode(struct inode *inode); extern int qnx4_unlink(struct inode *dir, struct dentry *dentry); extern int qnx4_rmdir(struct inode *dir, struct dentry *dentry); -extern int qnx4_sync_file(struct file *file, struct dentry *dentry); +extern int qnx4_sync_file(struct file *file, struct dentry *dentry, int); extern int qnx4_sync_inode(struct inode *inode); extern int qnx4_get_block(struct inode *inode, long iblock, struct buffer_head *bh, int create); diff --git a/include/linux/sysv_fs.h b/include/linux/sysv_fs.h index d9c2557e5..4cff4260c 100644 --- a/include/linux/sysv_fs.h +++ b/include/linux/sysv_fs.h @@ -377,9 +377,9 @@ extern unsigned long sysv_count_free_blocks(struct super_block *sb); extern struct buffer_head * sysv_file_bread(struct inode *, int, int); extern void sysv_truncate(struct inode *); -extern void sysv_write_inode(struct inode *); +extern void sysv_write_inode(struct inode *, int); extern int sysv_sync_inode(struct inode *); -extern int sysv_sync_file(struct file *, struct dentry *); +extern int sysv_sync_file(struct file *, struct dentry *, int); extern int sysv_notify_change(struct dentry *, struct iattr *); extern struct inode_operations sysv_file_inode_operations; diff --git a/include/linux/timer.h b/include/linux/timer.h index 2de8050ea..9d6b8c3a2 100644 --- a/include/linux/timer.h +++ b/include/linux/timer.h @@ -52,9 +52,10 @@ struct timer_list { unsigned long expires; unsigned long data; void (*function)(unsigned long); - volatile int running; + unsigned long sequence; }; +extern volatile unsigned long timer_sequence; extern void add_timer(struct timer_list * timer); extern int del_timer(struct timer_list * timer); @@ -71,7 +72,7 @@ static inline void init_timer(struct timer_list * timer) { timer->list.next = timer->list.prev = NULL; #ifdef CONFIG_SMP - timer->running = 0; + timer->sequence = timer_sequence-1; #endif } @@ -81,17 +82,17 @@ static inline int timer_pending (const struct timer_list * timer) } #ifdef CONFIG_SMP -#define timer_exit(t) do { (t)->running = 0; mb(); } while (0) -#define timer_set_running(t) do { (t)->running = 1; mb(); } while (0) -#define timer_is_running(t) ((t)->running != 0) +#define timer_enter(t) do { (t)->sequence = timer_sequence; mb(); } while (0) +#define timer_exit() do { timer_sequence++; } while (0) +#define timer_is_running(t) ((t)->sequence == timer_sequence) #define timer_synchronize(t) while (timer_is_running(t)) barrier() extern int del_timer_sync(struct timer_list * timer); #else -#define timer_exit(t) (void)(t) -#define timer_set_running(t) (void)(t) -#define timer_is_running(t) (0) -#define timer_synchronize(t) do { (void)(t); barrier(); } while(0) -#define del_timer_sync(t) del_timer(t) +#define timer_enter(t) do { } while (0) +#define timer_exit() do { } while (0) +#define timer_is_running(t) (0) +#define timer_synchronize(t) do { (void)(t); barrier(); } while(0) +#define del_timer_sync(t) del_timer(t) #endif /* diff --git a/include/linux/ufs_fs.h b/include/linux/ufs_fs.h index 96cb38e67..3c8f1d415 100644 --- a/include/linux/ufs_fs.h +++ b/include/linux/ufs_fs.h @@ -560,9 +560,8 @@ extern struct inode * ufs_new_inode (const struct inode *, int, int *); extern int ufs_frag_map (struct inode *, int); extern void ufs_read_inode (struct inode *); extern void ufs_put_inode (struct inode *); -extern void ufs_write_inode (struct inode *); +extern void ufs_write_inode (struct inode *, int); extern int ufs_sync_inode (struct inode *); -extern void ufs_write_inode (struct inode *); extern void ufs_delete_inode (struct inode *); extern struct buffer_head * ufs_getfrag (struct inode *, unsigned, int, int *); extern struct buffer_head * ufs_bread (struct inode *, unsigned, int, int *); diff --git a/include/linux/umsdos_fs.p b/include/linux/umsdos_fs.p index 76436a479..677bee22e 100644 --- a/include/linux/umsdos_fs.p +++ b/include/linux/umsdos_fs.p @@ -48,7 +48,7 @@ int umsdos_isempty (struct dentry *); /* inode.c 12/06/95 09.49.40 */ void fill_new_filp (struct file *filp, struct dentry *dentry); void UMSDOS_read_inode (struct inode *); -void UMSDOS_write_inode (struct inode *); +void UMSDOS_write_inode (struct inode *, int); int UMSDOS_notify_change (struct dentry *, struct iattr *attr); int umsdos_notify_change_locked(struct dentry *, struct iattr *attr); void UMSDOS_put_inode (struct inode *); |