summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-01-27 01:05:20 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-01-27 01:05:20 +0000
commit546db14ee74118296f425f3b91634fb767d67290 (patch)
tree22b613a3da8d4bf663eec5e155af01b87fdf9094 /include/linux
parent1e25e41c4f5474e14452094492dbc169b800e4c8 (diff)
Merge with Linux 2.3.23. The new bootmem stuff has broken various
platforms. At this time I've only verified that IP22 support compiles and IP27 actually works.
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/acpi.h4
-rw-r--r--include/linux/bigmem.h48
-rw-r--r--include/linux/binfmts.h2
-rw-r--r--include/linux/bootmem.h29
-rw-r--r--include/linux/cdrom.h84
-rw-r--r--include/linux/fs.h23
-rw-r--r--include/linux/hdreg.h2
-rw-r--r--include/linux/highmem.h77
-rw-r--r--include/linux/ide.h5
-rw-r--r--include/linux/iobuf.h1
-rw-r--r--include/linux/joystick.h14
-rw-r--r--include/linux/kernel.h7
-rw-r--r--include/linux/mm.h74
-rw-r--r--include/linux/nfs.h15
-rw-r--r--include/linux/nfs_fs.h20
-rw-r--r--include/linux/nfs_fs_i.h8
-rw-r--r--include/linux/pagemap.h47
-rw-r--r--include/linux/pci.h11
-rw-r--r--include/linux/pci_ids.h5
-rw-r--r--include/linux/proc_fs.h1
-rw-r--r--include/linux/sched.h5
-rw-r--r--include/linux/shm.h4
-rw-r--r--include/linux/slab.h2
-rw-r--r--include/linux/swap.h27
-rw-r--r--include/linux/sysv_fs.h1
-rw-r--r--include/linux/tty.h7
26 files changed, 351 insertions, 172 deletions
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index d6521ab67..1f5ec5f7a 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -28,8 +28,8 @@
#define ACPI_MINOR_DEV 167
/* RSDP location */
-#define ACPI_BIOS_ROM_BASE ((__u8*) 0xe0000)
-#define ACPI_BIOS_ROM_END ((__u8*) 0x100000)
+#define ACPI_BIOS_ROM_BASE (0x0e0000)
+#define ACPI_BIOS_ROM_END (0x100000)
/* Table signatures */
#define ACPI_RSDP1_SIG 0x20445352 /* 'RSD ' */
diff --git a/include/linux/bigmem.h b/include/linux/bigmem.h
deleted file mode 100644
index 289183bfe..000000000
--- a/include/linux/bigmem.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#ifndef _LINUX_BIGMEM_H
-#define _LINUX_BIGMEM_H
-
-#include <linux/config.h>
-
-#ifdef CONFIG_BIGMEM
-
-#include <asm/bigmem.h>
-
-/* declarations for linux/mm/bigmem.c */
-extern unsigned long bigmem_mapnr;
-extern int nr_free_bigpages;
-
-extern struct page * prepare_bigmem_swapout(struct page *);
-extern struct page * replace_with_bigmem(struct page *);
-
-#else /* CONFIG_BIGMEM */
-
-#define prepare_bigmem_swapout(page) page
-#define replace_with_bigmem(page) page
-#define kmap(kaddr, type) kaddr
-#define kunmap(vaddr, type) do { } while (0)
-#define nr_free_bigpages 0
-
-#endif /* CONFIG_BIGMEM */
-
-/* when CONFIG_BIGMEM is not set these will be plain clear/copy_page */
-extern inline void clear_bigpage(unsigned long kaddr)
-{
- unsigned long vaddr;
-
- vaddr = kmap(kaddr, KM_WRITE);
- clear_page(vaddr);
- kunmap(vaddr, KM_WRITE);
-}
-
-extern inline void copy_bigpage(unsigned long to, unsigned long from)
-{
- unsigned long vfrom, vto;
-
- vfrom = kmap(from, KM_READ);
- vto = kmap(to, KM_WRITE);
- copy_page(vto, vfrom);
- kunmap(vfrom, KM_READ);
- kunmap(vto, KM_WRITE);
-}
-
-#endif /* _LINUX_BIGMEM_H */
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
index 4f7fe13f7..31721c101 100644
--- a/include/linux/binfmts.h
+++ b/include/linux/binfmts.h
@@ -18,7 +18,7 @@
*/
struct linux_binprm{
char buf[128];
- unsigned long page[MAX_ARG_PAGES];
+ struct page *page[MAX_ARG_PAGES];
unsigned long p; /* current top of mem */
int sh_bang;
struct dentry * dentry;
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h
new file mode 100644
index 000000000..a0727169e
--- /dev/null
+++ b/include/linux/bootmem.h
@@ -0,0 +1,29 @@
+#ifndef _LINUX_BOOTMEM_H
+#define _LINUX_BOOTMEM_H
+
+#include <linux/config.h>
+#include <asm/pgtable.h>
+#include <asm/dma.h>
+
+/*
+ * simple boot-time physical memory area allocator.
+ */
+
+extern unsigned long max_low_pfn;
+
+extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend);
+extern void __init reserve_bootmem (unsigned long addr, unsigned long size);
+extern void __init free_bootmem (unsigned long addr, unsigned long size);
+extern void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal);
+#define alloc_bootmem(x) \
+ __alloc_bootmem((x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS))
+#define alloc_bootmem_pages(x) \
+ __alloc_bootmem((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS))
+#define alloc_bootmem_low_pages(x) \
+ __alloc_bootmem((x), PAGE_SIZE, 0)
+extern unsigned long __init free_all_bootmem (void);
+
+#endif /* _LINUX_BOOTMEM_H */
+
+
+
diff --git a/include/linux/cdrom.h b/include/linux/cdrom.h
index bf3796692..bfcce8e71 100644
--- a/include/linux/cdrom.h
+++ b/include/linux/cdrom.h
@@ -273,6 +273,7 @@ struct cdrom_generic_command
unsigned char *buffer;
unsigned int buflen;
int stat;
+ void *reserved[4];
};
@@ -655,6 +656,14 @@ typedef union {
} dvd_authinfo;
#ifdef __KERNEL__
+
+struct cdrom_write_settings {
+ unsigned char fpacket; /* fixed/variable packets */
+ unsigned long packet_size; /* write out this number of packets */
+ unsigned long nwa; /* next writeable address */
+ unsigned char writeable; /* cdrom is writeable */
+};
+
/* Uniform cdrom data structures for cdrom.c */
struct cdrom_device_info {
struct cdrom_device_ops *ops; /* link to device_ops */
@@ -673,6 +682,7 @@ struct cdrom_device_info {
/* per-device flags */
__u8 sanyo_slot : 2; /* Sanyo 3 CD changer support */
__u8 reserved : 6; /* not used yet */
+ struct cdrom_write_settings write;
};
struct cdrom_device_ops {
@@ -760,8 +770,6 @@ typedef struct {
__u8 uru : 1;
__u8 dbc_v : 1;
__u8 did_v : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
#endif
__u8 disc_type;
__u8 n_sessions_msb;
@@ -806,8 +814,6 @@ typedef struct {
__u8 nwa_v : 1;
__u8 lra_v : 1;
__u8 reserved3 : 6;
-#else
-#error "Please fix <asm/byteorder.h>"
#endif
__u32 track_start;
__u32 next_writable;
@@ -835,15 +841,12 @@ struct cdrom_mechstat_header {
__u8 reserved1 : 4;
__u8 door_open : 1;
__u8 mech_state : 3;
-#else
-#error "Please fix <asm/byteorder.h>"
#endif
__u8 curlba[3];
__u8 nslots;
__u8 short slot_tablelen;
};
-
struct cdrom_slot {
#if defined(__BIG_ENDIAN_BITFIELD)
__u8 disc_present : 1;
@@ -853,8 +856,6 @@ struct cdrom_slot {
__u8 change : 1;
__u8 reserved1 : 6;
__u8 disc_present : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
#endif
__u8 reserved2[3];
};
@@ -872,6 +873,71 @@ typedef enum {
mechtype_cartridge_changer = 5
} mechtype_t;
+struct mode_page_header {
+ __u16 mode_data_length;
+ __u8 medium_type;
+ __u8 reserved1;
+ __u8 reserved2;
+ __u8 reserved3;
+ __u16 desc_length;
+};
+
+typedef struct {
+ struct mode_page_header header;
+#if defined(__BIG_ENDIAN_BITFIELD)
+ __u8 ps : 1;
+ __u8 reserved1 : 1;
+ __u8 page_code : 6;
+ __u8 page_length;
+ __u8 reserved2 : 1;
+ __u8 bufe : 1;
+ __u8 ls_v : 1;
+ __u8 test_write : 1;
+ __u8 write_type : 4;
+ __u8 multi_session : 2; /* or border, DVD */
+ __u8 fp : 1;
+ __u8 copy : 1;
+ __u8 track_mode : 4;
+ __u8 reserved3 : 4;
+ __u8 data_block_type : 4;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+ __u8 page_code : 6;
+ __u8 reserved1 : 1;
+ __u8 ps : 1;
+ __u8 page_length;
+ __u8 write_type : 4;
+ __u8 test_write : 1;
+ __u8 ls_v : 1;
+ __u8 bufe : 1;
+ __u8 reserved2 : 1;
+ __u8 track_mode : 4;
+ __u8 copy : 1;
+ __u8 fp : 1;
+ __u8 multi_session : 2; /* or border, DVD */
+ __u8 data_block_type : 4;
+ __u8 reserved3 : 4;
+#endif
+ __u8 link_size;
+ __u8 reserved4;
+#if defined(__BIG_ENDIAN_BITFIELD)
+ __u8 reserved5 : 2;
+ __u8 app_code : 6;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+ __u8 app_code : 6;
+ __u8 reserved5 : 2;
+#endif
+ __u8 session_format;
+ __u8 reserved6;
+ __u32 packet_size;
+ __u16 audio_pause;
+ __u8 mcn[16];
+ __u8 isrc[16];
+ __u8 subhdr0;
+ __u8 subhdr1;
+ __u8 subhdr2;
+ __u8 subhdr3;
+} write_param_page __attribute__((packed));
+
#endif /* End of kernel only stuff */
#endif /* _LINUX_CDROM_H */
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 6d88414ea..c6c7d76d2 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -323,6 +323,11 @@ struct iattr {
#include <linux/quota.h>
#include <linux/mount.h>
+/*
+ * oh the beauties of C type declarations.
+ */
+struct page;
+
struct inode {
struct list_head i_hash;
struct list_head i_list;
@@ -350,7 +355,7 @@ struct inode {
wait_queue_head_t i_wait;
struct file_lock *i_flock;
struct vm_area_struct *i_mmap;
- struct page *i_pages;
+ struct list_head i_pages;
spinlock_t i_shared_lock;
struct dquot *i_dquot[MAXQUOTAS];
struct pipe_inode_info *i_pipe;
@@ -769,8 +774,6 @@ extern int fs_may_mount(kdev_t);
extern int try_to_free_buffers(struct page *);
extern void refile_buffer(struct buffer_head * buf);
-extern atomic_t buffermem;
-
#define BUF_CLEAN 0
#define BUF_LOCKED 1 /* Buffers scheduled for write */
#define BUF_DIRTY 2 /* Dirty buffers, not yet scheduled for write */
@@ -874,7 +877,7 @@ typedef struct {
int error;
} read_descriptor_t;
-typedef int (*read_actor_t)(read_descriptor_t *, const char *, unsigned long);
+typedef int (*read_actor_t)(read_descriptor_t *, struct page *, unsigned long, unsigned long);
extern struct dentry * lookup_dentry(const char *, struct dentry *, unsigned int);
@@ -886,7 +889,14 @@ extern struct dentry * __namei(const char *, unsigned int);
extern void iput(struct inode *);
extern struct inode * igrab(struct inode *);
extern ino_t iunique(struct super_block *, ino_t);
-extern struct inode * iget(struct super_block *, unsigned long);
+
+typedef int (*find_inode_t)(struct inode *, unsigned long, void *);
+extern struct inode * iget4(struct super_block *, unsigned long, find_inode_t, void *);
+static inline struct inode *iget(struct super_block *sb, unsigned long ino)
+{
+ return iget4(sb, ino, NULL, NULL);
+}
+
extern void clear_inode(struct inode *);
extern struct inode * get_empty_inode(void);
@@ -934,11 +944,14 @@ extern void do_generic_file_read(struct file * filp, loff_t *ppos, read_descript
extern struct super_block *get_super(kdev_t);
+struct super_block *get_empty_super(void);
+void remove_vfsmnt(kdev_t dev);
extern void put_super(kdev_t);
unsigned long generate_cluster(kdev_t, int b[], int);
unsigned long generate_cluster_swab32(kdev_t, int b[], int);
extern kdev_t ROOT_DEV;
+extern void show_buffers(void);
extern void mount_root(void);
#ifdef CONFIG_BLK_DEV_INITRD
diff --git a/include/linux/hdreg.h b/include/linux/hdreg.h
index 2fee75fec..df52d3ca9 100644
--- a/include/linux/hdreg.h
+++ b/include/linux/hdreg.h
@@ -81,6 +81,8 @@
#define WIN_SRST 0x08 /* ATAPI soft reset command */
#define WIN_PACKETCMD 0xa0 /* Send a packet command. */
+#define EXABYTE_ENABLE_NEST 0xf0
+
/* WIN_SMART sub-commands */
#define SMART_READ_VALUES 0xd0
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
new file mode 100644
index 000000000..3879d1e61
--- /dev/null
+++ b/include/linux/highmem.h
@@ -0,0 +1,77 @@
+#ifndef _LINUX_HIGHMEM_H
+#define _LINUX_HIGHMEM_H
+
+#include <linux/config.h>
+#include <asm/pgtable.h>
+
+#ifdef CONFIG_HIGHMEM
+
+extern struct page *highmem_start_page;
+
+#include <asm/highmem.h>
+
+/* declarations for linux/mm/highmem.c */
+extern unsigned long highmem_mapnr;
+extern unsigned long nr_free_highpages;
+
+extern struct page * prepare_highmem_swapout(struct page *);
+extern struct page * replace_with_highmem(struct page *);
+
+#else /* CONFIG_HIGHMEM */
+
+#define prepare_highmem_swapout(page) page
+#define replace_with_highmem(page) page
+#define kmap(page, type) page_address(page)
+#define kunmap(vaddr, type) do { } while (0)
+#define nr_free_highpages 0UL
+
+#endif /* CONFIG_HIGHMEM */
+
+/* when CONFIG_HIGHMEM is not set these will be plain clear/copy_page */
+extern inline void clear_highpage(struct page *page)
+{
+ unsigned long kaddr;
+
+ kaddr = kmap(page, KM_WRITE);
+ clear_page((void *)kaddr);
+ kunmap(kaddr, KM_WRITE);
+}
+
+extern inline void memclear_highpage(struct page *page, unsigned int offset, unsigned int size)
+{
+ unsigned long kaddr;
+
+ if (offset + size > PAGE_SIZE)
+ BUG();
+ kaddr = kmap(page, KM_WRITE);
+ memset((void *)(kaddr + offset), 0, size);
+ kunmap(kaddr, KM_WRITE);
+}
+
+/*
+ * Same but also flushes aliased cache contents to RAM.
+ */
+extern inline void memclear_highpage_flush(struct page *page, unsigned int offset, unsigned int size)
+{
+ unsigned long kaddr;
+
+ if (offset + size > PAGE_SIZE)
+ BUG();
+ kaddr = kmap(page, KM_WRITE);
+ memset((void *)(kaddr + offset), 0, size);
+ flush_page_to_ram(page);
+ kunmap(kaddr, KM_WRITE);
+}
+
+extern inline void copy_highpage(struct page *to, struct page *from)
+{
+ unsigned long vfrom, vto;
+
+ vfrom = kmap(from, KM_READ);
+ vto = kmap(to, KM_WRITE);
+ copy_page((void *)vto, (void *)vfrom);
+ kunmap(vfrom, KM_READ);
+ kunmap(vto, KM_WRITE);
+}
+
+#endif /* _LINUX_HIGHMEM_H */
diff --git a/include/linux/ide.h b/include/linux/ide.h
index 3ebe6c211..4af0cd253 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -236,6 +236,7 @@ typedef struct ide_drive_s {
unsigned long sleep; /* sleep until this time */
unsigned long service_start; /* time we started last request */
unsigned long service_time; /* service time of last request */
+ unsigned long timeout; /* max time to wait for irq */
special_t special; /* special action flags */
byte keep_settings; /* restore settings after drive reset */
byte using_dma; /* disk is using dma for read/write */
@@ -338,6 +339,7 @@ typedef void (ide_tuneproc_t)(ide_drive_t *, byte);
* This is used to provide support for strange interfaces
*/
typedef void (ide_selectproc_t) (ide_drive_t *);
+typedef void (ide_resetproc_t) (ide_drive_t *);
/*
* hwif_chipset_t is used to keep track of the specific hardware
@@ -367,6 +369,7 @@ typedef struct hwif_s {
struct gendisk *gd; /* gendisk structure */
ide_tuneproc_t *tuneproc; /* routine to tune PIO mode for drives */
ide_selectproc_t *selectproc; /* tweaks hardware to select drive */
+ ide_resetproc_t *resetproc; /* routine to reset controller after a disk reset */
ide_dmaproc_t *dmaproc; /* dma read/write/abort routine */
unsigned long *dmatable; /* dma physical region descriptor table */
struct hwif_s *mate; /* other hwif from same PCI chip */
@@ -581,7 +584,7 @@ void atapi_output_bytes (ide_drive_t *drive, void *buffer, unsigned int bytecoun
* This is used on exit from the driver, to designate the next irq handler
* and also to start the safety timer.
*/
-void ide_set_handler (ide_drive_t *drive, ide_handler_t *handler, unsigned int timeout);
+void ide_set_handler (ide_drive_t *drive, ide_handler_t *handler);
/*
* Error reporting, in human readable form (luxurious, but a memory hog).
diff --git a/include/linux/iobuf.h b/include/linux/iobuf.h
index 9418888f2..420285faf 100644
--- a/include/linux/iobuf.h
+++ b/include/linux/iobuf.h
@@ -41,7 +41,6 @@ struct kiobuf
* region, there won't necessarily be page structs defined for
* every address. */
- unsigned long * pagelist;
struct page ** maplist;
unsigned int locked : 1; /* If set, pages has been locked */
diff --git a/include/linux/joystick.h b/include/linux/joystick.h
index 996babd51..ce6923de5 100644
--- a/include/linux/joystick.h
+++ b/include/linux/joystick.h
@@ -173,26 +173,16 @@ typedef struct { int something; } spinlock_t;
* Parport stuff
*/
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
#define USE_PARPORT
-#endif
-#ifdef USE_PARPORT
#include <linux/parport.h>
+#include <linux/parport_pc.h>
#define JS_PAR_DATA_IN(y) parport_read_data(y->port)
#define JS_PAR_DATA_OUT(x,y) parport_write_data(y->port, x)
#define JS_PAR_STATUS(y) parport_read_status(y->port)
#define JS_PAR_CTRL_IN(y) parport_read_control(y->port)
#define JS_PAR_CTRL_OUT(x,y) parport_write_control(y->port, x)
-#define JS_PAR_ECTRL_OUT(x,y) parport_write_econtrol(y->port, x)
-#else
-#define JS_PAR_DATA_IN(y) inb(y)
-#define JS_PAR_DATA_OUT(x,y) outb(x,y)
-#define JS_PAR_STATUS(y) inb(y+1)
-#define JS_PAR_CTRL_IN(y) inb(y+2)
-#define JS_PAR_CTRL_OUT(x,y) outb(x,y+2)
-#define JS_PAR_ECTRL_OUT(x,y) outb(x,y+0x402)
-#endif
+#define JS_PAR_ECTRL_OUT(x,y) outb(x, ECONTROL(y->port))
#define JS_PAR_STATUS_INVERT (0x80)
#define JS_PAR_CTRL_INVERT (0x04)
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 89bea4477..d5b204c2c 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -94,9 +94,10 @@ struct sysinfo {
unsigned long totalswap; /* Total swap space size */
unsigned long freeswap; /* swap space still available */
unsigned short procs; /* Number of current processes */
- unsigned long totalbig; /* Total big memory size */
- unsigned long freebig; /* Available big memory size */
- char _f[20-2*sizeof(long)]; /* Padding: libc5 uses this.. */
+ unsigned long totalhigh; /* Total high memory size */
+ unsigned long freehigh; /* Available high memory size */
+ unsigned int mem_unit; /* Memory unit size in bytes */
+ char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */
};
#endif
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 281f6838e..778511f6f 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -8,6 +8,7 @@
#include <linux/config.h>
#include <linux/string.h>
+#include <linux/list.h>
extern unsigned long max_mapnr;
extern unsigned long num_physpages;
@@ -103,9 +104,8 @@ struct vm_operations_struct {
void (*protect)(struct vm_area_struct *area, unsigned long, size_t, unsigned int newprot);
int (*sync)(struct vm_area_struct *area, unsigned long, size_t, unsigned int flags);
void (*advise)(struct vm_area_struct *area, unsigned long, size_t, unsigned int advise);
- unsigned long (*nopage)(struct vm_area_struct * area, unsigned long address, int write_access);
- unsigned long (*wppage)(struct vm_area_struct * area, unsigned long address,
- unsigned long page);
+ 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 *);
};
@@ -119,8 +119,7 @@ struct vm_operations_struct {
*/
typedef struct page {
/* these must be first (free area handling) */
- struct page *next;
- struct page *prev;
+ struct list_head list;
struct inode *inode;
unsigned long offset;
struct page *next_hash;
@@ -149,11 +148,11 @@ typedef struct page {
#define PG_uptodate 3
#define PG_decr_after 5
#define PG_DMA 7
-#define PG_Slab 8
+#define PG_slab 8
#define PG_swap_cache 9
#define PG_skip 10
#define PG_swap_entry 11
-#define PG_BIGMEM 12
+#define PG_highmem 12
/* bits 21-30 unused */
#define PG_reserved 31
@@ -183,27 +182,32 @@ if (!test_and_clear_bit(PG_locked, &(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 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 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 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_BIGMEM
-#define PageBIGMEM(page) (test_bit(PG_BIGMEM, &(page)->flags))
+#ifdef CONFIG_HIGHMEM
+#define PageHighMem(page) (test_bit(PG_highmem, &(page)->flags))
#else
-#define PageBIGMEM(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)
+
+
/*
* Various page->flags bits:
*
@@ -224,7 +228,7 @@ if (!test_and_clear_bit(PG_locked, &(page)->flags)) { \
* (e.g. a private data page of one process).
*
* A page may be used for kmalloc() or anyone else who does a
- * get_free_page(). In this case the page->count is at least 1, and
+ * __get_free_page(). In this case the page->count is at least 1, and
* all other fields are unused but should be 0 or NULL. The
* management of this page is the responsibility of the one who uses
* it.
@@ -281,20 +285,27 @@ extern mem_map_t * mem_map;
* goes to clearing the page. If you want a page without the clearing
* overhead, just use __get_free_page() directly..
*/
+extern struct page * __get_pages(int gfp_mask, unsigned long order);
#define __get_free_page(gfp_mask) __get_free_pages((gfp_mask),0)
#define __get_dma_pages(gfp_mask, order) __get_free_pages((gfp_mask) | GFP_DMA,(order))
extern unsigned long FASTCALL(__get_free_pages(int gfp_mask, unsigned long gfp_order));
+extern struct page * get_free_highpage(int gfp_mask);
-extern inline unsigned long get_free_page(int gfp_mask)
+extern inline unsigned long get_zeroed_page(int gfp_mask)
{
unsigned long page;
page = __get_free_page(gfp_mask);
if (page)
- clear_page(page);
+ clear_page((void *)page);
return page;
}
+/*
+ * The old interface name will be removed in 2.5:
+ */
+#define get_free_page get_zeroed_page
+
/* memory.c & swap.c*/
#define free_page(addr) free_pages((addr),0)
@@ -302,7 +313,7 @@ extern int FASTCALL(free_pages(unsigned long addr, unsigned long order));
extern int FASTCALL(__free_page(struct page *));
extern void show_free_areas(void);
-extern unsigned long put_dirty_page(struct task_struct * tsk,unsigned long page,
+extern struct page * put_dirty_page(struct task_struct * tsk, struct page *page,
unsigned long address);
extern void clear_page_tables(struct mm_struct *, unsigned long, int);
@@ -322,12 +333,13 @@ extern int ptrace_writedata(struct task_struct *tsk, char * src, unsigned long d
extern int pgt_cache_water[2];
extern int check_pgt_cache(void);
-extern unsigned long paging_init(unsigned long start_mem, unsigned long end_mem);
-extern void mem_init(unsigned long start_mem, unsigned long end_mem);
+extern void paging_init(void);
+extern void free_area_init(unsigned long);
+extern void mem_init(void);
extern void show_mem(void);
extern void oom(struct task_struct * tsk);
extern void si_meminfo(struct sysinfo * val);
-extern void swapin_readahead(unsigned long);
+extern void swapin_readahead(pte_t);
/* mmap.c */
extern void vma_init(void);
@@ -359,19 +371,19 @@ extern void put_cached_page(unsigned long);
#define __GFP_HIGH 0x08
#define __GFP_IO 0x10
#define __GFP_SWAP 0x20
-#ifdef CONFIG_BIGMEM
-#define __GFP_BIGMEM 0x40
+#ifdef CONFIG_HIGHMEM
+#define __GFP_HIGHMEM 0x40
#else
-#define __GFP_BIGMEM 0x0 /* noop */
+#define __GFP_HIGHMEM 0x0 /* noop */
#endif
-#define __GFP_UNCACHED 0x40
#define __GFP_DMA 0x80
+#define __GFP_UNCACHED 0x100
#define GFP_BUFFER (__GFP_LOW | __GFP_WAIT)
#define GFP_ATOMIC (__GFP_HIGH)
-#define GFP_BIGUSER (__GFP_LOW | __GFP_WAIT | __GFP_IO | __GFP_BIGMEM)
#define GFP_USER (__GFP_LOW | __GFP_WAIT | __GFP_IO)
+#define GFP_HIGHUSER (GFP_USER | __GFP_HIGHMEM)
#define GFP_KERNEL (__GFP_MED | __GFP_WAIT | __GFP_IO)
#define GFP_NFS (__GFP_HIGH | __GFP_WAIT | __GFP_IO)
#define GFP_KSWAPD (__GFP_IO | __GFP_SWAP)
@@ -389,10 +401,10 @@ extern void put_cached_page(unsigned long);
#define GFP_DMA __GFP_DMA
-/* Flag - indicates that the buffer can be taken from big memory which is not
+/* Flag - indicates that the buffer can be taken from high memory which is not
directly addressable by the kernel */
-#define GFP_BIGMEM __GFP_BIGMEM
+#define GFP_HIGHMEM __GFP_HIGHMEM
/* vma is the first one with address < vma->vm_end,
* and even address < vma->vm_start. Have to extend vma. */
@@ -431,11 +443,17 @@ static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * m
extern struct vm_area_struct *find_extend_vma(struct task_struct *tsk, unsigned long addr);
-#define buffer_under_min() ((atomic_read(&buffermem) >> PAGE_SHIFT) * 100 < \
+#define buffer_under_min() (atomic_read(&buffermem_pages) * 100 < \
buffer_mem.min_percent * num_physpages)
#define pgcache_under_min() (atomic_read(&page_cache_size) * 100 < \
page_cache.min_percent * num_physpages)
+#define vmlist_access_lock(mm) spin_lock(&mm->page_table_lock)
+#define vmlist_access_unlock(mm) spin_unlock(&mm->page_table_lock)
+#define vmlist_modify_lock(mm) vmlist_access_lock(mm)
+#define vmlist_modify_unlock(mm) vmlist_access_unlock(mm)
+
+
#endif /* __KERNEL__ */
#endif
diff --git a/include/linux/nfs.h b/include/linux/nfs.h
index 4f7d3230e..c188fc808 100644
--- a/include/linux/nfs.h
+++ b/include/linux/nfs.h
@@ -122,15 +122,6 @@ struct nfs_fattr {
struct nfs_time ctime;
};
-struct nfs_sattr {
- __u32 mode;
- __u32 uid;
- __u32 gid;
- __u32 size;
- struct nfs_time atime;
- struct nfs_time mtime;
-};
-
struct nfs_fsinfo {
__u32 tsize;
__u32 bsize;
@@ -150,7 +141,7 @@ struct nfs_writeargs {
struct nfs_sattrargs {
struct nfs_fh * fh;
- struct nfs_sattr * sattr;
+ struct iattr * sattr;
};
struct nfs_diropargs {
@@ -173,7 +164,7 @@ struct nfs_readargs {
struct nfs_createargs {
struct nfs_fh * fh;
const char * name;
- struct nfs_sattr * sattr;
+ struct iattr * sattr;
};
struct nfs_renameargs {
@@ -193,7 +184,7 @@ struct nfs_symlinkargs {
struct nfs_fh * fromfh;
const char * fromname;
const char * topath;
- struct nfs_sattr * sattr;
+ struct iattr * sattr;
};
struct nfs_readdirargs {
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index d91a0b641..df6b7c8df 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -77,11 +77,14 @@ do { \
: NFS_SERVER(inode)->acregmax)
#define NFS_FLAGS(inode) ((inode)->u.nfs_i.flags)
-#define NFS_REVALIDATING(inode) (NFS_FLAGS(inode) & NFS_INO_REVALIDATE)
+#define NFS_REVALIDATING(inode) (NFS_FLAGS(inode) & NFS_INO_REVALIDATING)
#define NFS_WRITEBACK(inode) ((inode)->u.nfs_i.writeback)
#define NFS_COOKIES(inode) ((inode)->u.nfs_i.cookies)
#define NFS_DIREOF(inode) ((inode)->u.nfs_i.direof)
+#define NFS_FILEID(inode) ((inode)->u.nfs_i.fileid)
+#define NFS_FSID(inode) ((inode)->u.nfs_i.fsid)
+
/*
* These are the default flags for swap requests
*/
@@ -137,7 +140,7 @@ struct nfs_wreq {
extern int nfs_proc_getattr(struct nfs_server *server, struct nfs_fh *fhandle,
struct nfs_fattr *fattr);
extern int nfs_proc_setattr(struct nfs_server *server, struct nfs_fh *fhandle,
- struct nfs_sattr *sattr, struct nfs_fattr *fattr);
+ struct nfs_fattr *fattr, struct iattr *sattr);
extern int nfs_proc_lookup(struct nfs_server *server, struct nfs_fh *dir,
const char *name, struct nfs_fh *fhandle,
struct nfs_fattr *fattr);
@@ -148,7 +151,7 @@ extern int nfs_proc_write(struct nfs_server *server, struct nfs_fh *fhandle,
int swap, unsigned long offset, unsigned int count,
const void *buffer, struct nfs_fattr *fattr);
extern int nfs_proc_create(struct nfs_server *server, struct nfs_fh *dir,
- const char *name, struct nfs_sattr *sattr,
+ const char *name, struct iattr *sattr,
struct nfs_fh *fhandle, struct nfs_fattr *fattr);
extern int nfs_proc_remove(struct nfs_server *server, struct nfs_fh *dir,
const char *name);
@@ -159,9 +162,9 @@ extern int nfs_proc_link(struct nfs_server *server, struct nfs_fh *fhandle,
struct nfs_fh *dir, const char *name);
extern int nfs_proc_symlink(struct nfs_server *server, struct nfs_fh *dir,
const char *name, const char *path,
- struct nfs_sattr *sattr);
+ struct iattr *sattr);
extern int nfs_proc_mkdir(struct nfs_server *server, struct nfs_fh *dir,
- const char *name, struct nfs_sattr *sattr,
+ const char *name, struct iattr *sattr,
struct nfs_fh *fhandle, struct nfs_fattr *fattr);
extern int nfs_proc_rmdir(struct nfs_server *server, struct nfs_fh *dir,
const char *name);
@@ -174,13 +177,14 @@ extern int nfs_proc_statfs(struct nfs_server *server, struct nfs_fh *fhandle,
*/
extern struct super_block *nfs_read_super(struct super_block *, void *, int);
extern int init_nfs_fs(void);
+extern void nfs_zap_caches(struct inode *);
extern struct inode *nfs_fhget(struct dentry *, struct nfs_fh *,
struct nfs_fattr *);
extern int nfs_refresh_inode(struct inode *, struct nfs_fattr *);
extern int nfs_revalidate(struct dentry *);
extern int nfs_open(struct inode *, struct file *);
extern int nfs_release(struct inode *, struct file *);
-extern int _nfs_revalidate_inode(struct nfs_server *, struct dentry *);
+extern int __nfs_revalidate_inode(struct nfs_server *, struct dentry *);
/*
* linux/fs/nfs/file.c
@@ -244,9 +248,9 @@ static inline int
nfs_revalidate_inode(struct nfs_server *server, struct dentry *dentry)
{
struct inode *inode = dentry->d_inode;
- if (jiffies - NFS_READTIME(inode) < NFS_ATTRTIMEO(inode))
+ if (time_before(jiffies, NFS_READTIME(inode)+NFS_ATTRTIMEO(inode)))
return 0;
- return _nfs_revalidate_inode(server, dentry);
+ return __nfs_revalidate_inode(server, dentry);
}
/* NFS root */
diff --git a/include/linux/nfs_fs_i.h b/include/linux/nfs_fs_i.h
index 13bf610b6..22681be9d 100644
--- a/include/linux/nfs_fs_i.h
+++ b/include/linux/nfs_fs_i.h
@@ -9,6 +9,12 @@
*/
struct nfs_inode_info {
/*
+ * The 64bit 'inode number'
+ */
+ __u32 fsid;
+ __u32 fileid;
+
+ /*
* Various flags
*/
unsigned short flags;
@@ -49,7 +55,7 @@ struct nfs_inode_info {
/*
* Legal inode flag values
*/
-#define NFS_INO_REVALIDATE 0x0001 /* revalidating attrs */
+#define NFS_INO_REVALIDATING 0x0001 /* revalidating attrs */
#define NFS_IS_SNAPSHOT 0x0010 /* a snapshot file */
/*
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index 0aff25c29..6410d3d1e 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -11,10 +11,16 @@
#include <linux/mm.h>
#include <linux/fs.h>
+#include <linux/highmem.h>
+#include <linux/list.h>
-static inline unsigned long page_address(struct page * page)
+extern inline pte_t get_pagecache_pte(struct page *page)
{
- return PAGE_OFFSET + ((page - mem_map) << PAGE_SHIFT);
+ /*
+ * the pagecache is still machineword sized. The rest of the VM
+ * can deal with arbitrary sized ptes.
+ */
+ return __pte(page->offset);
}
/*
@@ -30,8 +36,8 @@ static inline unsigned long page_address(struct page * page)
#define PAGE_CACHE_MASK PAGE_MASK
#define PAGE_CACHE_ALIGN(addr) (((addr)+PAGE_CACHE_SIZE-1)&PAGE_CACHE_MASK)
-#define page_cache_alloc() __get_free_page(GFP_USER)
-#define page_cache_free(x) free_page(x)
+#define page_cache_alloc() __get_pages(GFP_USER, 0)
+#define page_cache_free(x) __free_page(x)
#define page_cache_release(x) __free_page(x)
/*
@@ -54,7 +60,7 @@ extern void page_cache_init(unsigned long);
* inode pointer and offsets are distributed (ie, we
* roughly know which bits are "significant")
*/
-static inline unsigned long _page_hashfn(struct inode * inode, unsigned long offset)
+extern inline unsigned long _page_hashfn(struct inode * inode, unsigned long offset)
{
#define i (((unsigned long) inode)/(sizeof(struct inode) & ~ (sizeof(struct inode) - 1)))
#define o (offset >> PAGE_SHIFT)
@@ -82,26 +88,37 @@ 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);
-static inline void add_page_to_hash_queue(struct page * page, struct inode * inode, unsigned long offset)
+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));
}
-static inline void add_page_to_inode_queue(struct inode * inode, struct page * page)
+extern inline void add_page_to_inode_queue(struct inode * inode, struct page * page)
{
- struct page **p = &inode->i_pages;
-
- inode->i_nrpages++;
+ struct list_head *head = &inode->i_pages;
+
+ if (!inode->i_nrpages++) {
+ if (!list_empty(head))
+ BUG();
+ } else {
+ if (list_empty(head))
+ BUG();
+ }
+ list_add(&page->list, head);
page->inode = inode;
- page->prev = NULL;
- if ((page->next = *p) != NULL)
- page->next->prev = page;
- *p = page;
+}
+
+extern inline void remove_page_from_inode_queue(struct page * page)
+{
+ struct inode * inode = page->inode;
+
+ inode->i_nrpages--;
+ list_del(&page->list);
}
extern void ___wait_on_page(struct page *);
-static inline void wait_on_page(struct page * page)
+extern inline void wait_on_page(struct page * page)
{
if (PageLocked(page))
___wait_on_page(page);
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 2fe52c2b4..a71f4c1be 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -406,6 +406,7 @@ struct pci_ops {
void pcibios_init(void);
void pcibios_fixup_bus(struct pci_bus *);
+int pcibios_enable_device(struct pci_dev *);
char *pcibios_setup (char *str);
void pcibios_update_resource(struct pci_dev *, struct resource *,
@@ -460,9 +461,11 @@ int pci_read_config_dword(struct pci_dev *dev, int where, u32 *val);
int pci_write_config_byte(struct pci_dev *dev, int where, u8 val);
int pci_write_config_word(struct pci_dev *dev, int where, u16 val);
int pci_write_config_dword(struct pci_dev *dev, int where, u32 val);
+int pci_enable_device(struct pci_dev *dev);
void pci_set_master(struct pci_dev *dev);
+int pci_set_power_state(struct pci_dev *dev, int state);
-/* Helper functions (drivers/pci/setup.c) */
+/* Helper functions for low-level code (drivers/pci/setup.c) */
int pci_claim_resource(struct pci_dev *, int);
void pci_assign_unassigned_resources(u32 min_io, u32 min_mem);
@@ -471,7 +474,7 @@ void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),
int (*)(struct pci_dev *, u8, u8));
/*
- * simple PCI probing for drivers
+ * simple PCI probing for drivers (drivers/pci/helper.c)
*/
struct pci_simple_probe_entry;
@@ -524,8 +527,8 @@ extern inline struct pci_dev *pci_find_subsys(unsigned int vendor, unsigned int
unsigned int ss_vendor, unsigned int ss_device, struct pci_dev *from)
{ return NULL; }
-extern inline void pci_set_master(struct pci_dev *dev)
-{ return; }
+extern inline void pci_set_master(struct pci_dev *dev) { }
+extern inline int pci_enable_device(struct pci_dev *dev) { return 0; }
extern inline int pci_simple_probe (struct pci_simple_probe_entry *list, size_t match_limit,
pci_simple_probe_callback cb, void *drvr_data)
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 062488c0d..e4bca6807 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -100,6 +100,7 @@
#define PCI_DEVICE_ID_COMPAQ_TOKENRING 0x0508
#define PCI_DEVICE_ID_COMPAQ_1280 0x3033
#define PCI_DEVICE_ID_COMPAQ_TRIFLEX 0x4000
+#define PCI_DEVICE_ID_COMPAQ_6010 0x6010
#define PCI_DEVICE_ID_COMPAQ_SMART2P 0xae10
#define PCI_DEVICE_ID_COMPAQ_NETEL100 0xae32
#define PCI_DEVICE_ID_COMPAQ_NETEL10 0xae34
@@ -729,6 +730,10 @@
#define PCI_DEVICE_ID_RENDITION_VERITE 0x0001
#define PCI_DEVICE_ID_RENDITION_VERITE2100 0x2000
+#define PCI_VENDOR_ID_RCC 0x1166
+#define PCI_DEVICE_ID_RCC_HE 0x0008
+#define PCI_DEVICE_ID_RCC_LE 0x0009
+
#define PCI_VENDOR_ID_TOSHIBA 0x1179
#define PCI_DEVICE_ID_TOSHIBA_601 0x0601
#define PCI_DEVICE_ID_TOSHIBA_TOPIC95 0x060a
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
index d863aaefe..35f730151 100644
--- a/include/linux/proc_fs.h
+++ b/include/linux/proc_fs.h
@@ -550,6 +550,7 @@ extern inline int proc_driver_register(const char *module_name)
return 0;
}
+extern struct proc_dir_entry proc_root;
#endif /* CONFIG_PROC_FS */
diff --git a/include/linux/sched.h b/include/linux/sched.h
index b568a7b7b..c198260e0 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -357,6 +357,10 @@ struct task_struct {
struct signal_queue *sigqueue, **sigqueue_tail;
unsigned long sas_ss_sp;
size_t sas_ss_size;
+
+/* Thread group tracking */
+ u32 parent_exec_id;
+ u32 self_exec_id;
};
/*
@@ -422,6 +426,7 @@ struct task_struct {
/* files */ &init_files, \
/* mm */ NULL, &init_mm, \
/* signals */ SPIN_LOCK_UNLOCKED, &init_signals, {{0}}, {{0}}, NULL, &init_task.sigqueue, 0, 0, \
+/* exec cts */ 0,0, \
}
#ifndef INIT_TASK_SIZE
diff --git a/include/linux/shm.h b/include/linux/shm.h
index d83787312..6ba237e92 100644
--- a/include/linux/shm.h
+++ b/include/linux/shm.h
@@ -24,7 +24,7 @@ struct shmid_kernel
struct shmid_ds u;
/* the following are private */
unsigned long shm_npages; /* size of segment (pages) */
- unsigned long *shm_pages; /* array of ptrs to frames -> SHMMAX */
+ pte_t *shm_pages; /* array of ptrs to frames -> SHMMAX */
struct vm_area_struct *attaches; /* descriptors for attaches */
};
@@ -72,7 +72,7 @@ asmlinkage long sys_shmget (key_t key, int size, int flag);
asmlinkage long sys_shmat (int shmid, char *shmaddr, int shmflg, unsigned long *addr);
asmlinkage long sys_shmdt (char *shmaddr);
asmlinkage long sys_shmctl (int shmid, int cmd, struct shmid_ds *buf);
-extern void shm_unuse(unsigned long entry, unsigned long page);
+extern void shm_unuse(pte_t entry, struct page *page);
#endif /* __KERNEL__ */
diff --git a/include/linux/slab.h b/include/linux/slab.h
index 3097a8db2..fa344d816 100644
--- a/include/linux/slab.h
+++ b/include/linux/slab.h
@@ -45,7 +45,7 @@ typedef struct kmem_cache_s kmem_cache_t;
#define SLAB_CTOR_VERIFY 0x004UL /* tell constructor it's a verify call */
/* prototypes */
-extern long kmem_cache_init(long, long);
+extern void kmem_cache_init(void);
extern void kmem_cache_sizes_init(void);
extern kmem_cache_t *kmem_find_general_cachep(size_t);
extern kmem_cache_t *kmem_cache_create(const char *, size_t, size_t, unsigned long,
diff --git a/include/linux/swap.h b/include/linux/swap.h
index 0b0baf1e8..7030b788d 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -35,8 +35,6 @@ union swap_header {
#define MAX_SWAP_BADPAGES \
((__swapoffset(magic.magic) - __swapoffset(info.badpages)) / sizeof(int))
-#undef DEBUG_SWAP
-
#include <asm/atomic.h>
#define SWP_USED 1
@@ -69,7 +67,7 @@ extern struct list_head lru_cache;
extern atomic_t nr_async_pages;
extern struct inode swapper_inode;
extern atomic_t page_cache_size;
-extern atomic_t buffermem;
+extern atomic_t buffermem_pages;
/* Incomplete types for prototype declarations: */
struct task_struct;
@@ -87,36 +85,35 @@ extern int try_to_free_pages(unsigned int gfp_mask);
/* linux/mm/page_io.c */
extern void rw_swap_page(int, struct page *, int);
-extern void rw_swap_page_nolock(int, unsigned long, char *, int);
-extern void swap_after_unlock_page (unsigned long entry);
+extern void rw_swap_page_nolock(int, pte_t, char *, int);
/* linux/mm/page_alloc.c */
/* linux/mm/swap_state.c */
extern void show_swap_cache_info(void);
-extern void add_to_swap_cache(struct page *, unsigned long);
-extern int swap_duplicate(unsigned long);
+extern void add_to_swap_cache(struct page *, pte_t);
+extern int swap_duplicate(pte_t);
extern int swap_check_entry(unsigned long);
-struct page * lookup_swap_cache(unsigned long);
-extern struct page * read_swap_cache_async(unsigned long, int);
+struct page * lookup_swap_cache(pte_t);
+extern struct page * read_swap_cache_async(pte_t, int);
#define read_swap_cache(entry) read_swap_cache_async(entry, 1);
-extern int FASTCALL(swap_count(unsigned long));
-extern unsigned long acquire_swap_entry(struct page *page);
+extern int swap_count(struct page *);
+extern pte_t acquire_swap_entry(struct page *page);
/*
* Make these inline later once they are working properly.
*/
extern void __delete_from_swap_cache(struct page *page);
extern void delete_from_swap_cache(struct page *page);
-extern void free_page_and_swap_cache(unsigned long addr);
+extern void free_page_and_swap_cache(struct page *page);
/* linux/mm/swapfile.c */
extern unsigned int nr_swapfiles;
extern struct swap_info_struct swap_info[];
extern int is_swap_partition(kdev_t);
void si_swapinfo(struct sysinfo *);
-unsigned long get_swap_page(void);
-extern void FASTCALL(swap_free(unsigned long));
+pte_t get_swap_page(void);
+extern void swap_free(pte_t);
struct swap_list_t {
int head; /* head of priority-ordered swapfile list */
int next; /* swapfile to be used next */
@@ -158,7 +155,7 @@ static inline int is_page_shared(struct page *page)
return 1;
count = page_count(page);
if (PageSwapCache(page))
- count += swap_count(page->offset) - 2;
+ count += swap_count(page) - 2;
return count > 1;
}
diff --git a/include/linux/sysv_fs.h b/include/linux/sysv_fs.h
index cf9cab749..5168218e0 100644
--- a/include/linux/sysv_fs.h
+++ b/include/linux/sysv_fs.h
@@ -384,7 +384,6 @@ extern int sysv_new_block(struct super_block * sb);
extern void sysv_free_block(struct super_block * sb, unsigned int block);
extern unsigned long sysv_count_free_blocks(struct super_block *sb);
-extern struct buffer_head * sysv_getblk(struct inode *, unsigned int, int);
extern int sysv_get_block(struct inode *, long, struct buffer_head *, int);
extern struct buffer_head * sysv_file_bread(struct inode *, int, int);
diff --git a/include/linux/tty.h b/include/linux/tty.h
index 6cb629d08..69050c8a8 100644
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -344,12 +344,13 @@ extern int fg_console, last_console, want_console;
extern int kmsg_redirect;
-extern unsigned long con_init(unsigned long);
+extern void con_init(void);
+extern void console_init(void);
extern int rs_init(void);
extern int lp_init(void);
extern int pty_init(void);
-extern int tty_init(void);
+extern void tty_init(void);
extern int ip2_init(void);
extern int pcxe_init(void);
extern int pc_init(void);
@@ -398,7 +399,7 @@ extern int n_tty_ioctl(struct tty_struct * tty, struct file * file,
/* serial.c */
-extern long serial_console_init(long kmem_start, long kmem_end);
+extern void serial_console_init(void);
/* pcxx.c */