+ */
diff -Naur -X ../exclude-files orig/arch/um/drivers/cow.h um/arch/um/drivers/cow.h
--- orig/arch/um/drivers/cow.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/drivers/cow.h 2004-01-16 03:45:20.000000000 -0500
++++ um/arch/um/drivers/cow.h 2003-12-15 00:32:23.000000000 -0500
@@ -0,0 +1,41 @@
+#ifndef __COW_H__
+#define __COW_H__
+ */
diff -Naur -X ../exclude-files orig/arch/um/drivers/cow_kern.c um/arch/um/drivers/cow_kern.c
--- orig/arch/um/drivers/cow_kern.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/drivers/cow_kern.c 2004-01-10 05:55:04.000000000 -0500
++++ um/arch/um/drivers/cow_kern.c 2003-10-21 03:26:06.000000000 -0400
@@ -0,0 +1,630 @@
+#define COW_MAJOR 60
+#define MAJOR_NR COW_MAJOR
+ unsigned long *bitmap;
+ unsigned long bitmap_len;
+ int bitmap_offset;
-+ int data_offset;
++ int data_offset;
+ devfs_handle_t devfs;
+ struct semaphore sem;
+ struct semaphore io_sem;
+static int cow_revalidate(kdev_t rdev);
+
+static struct block_device_operations cow_blops = {
-+ .open = cow_open,
-+ .release = cow_release,
-+ .ioctl = cow_ioctl,
-+ .revalidate = cow_revalidate,
++ .open = cow_open,
++ .release = cow_release,
++ .ioctl = cow_ioctl,
++ .revalidate = cow_revalidate,
+};
+
+/* Initialized in an initcall, and unchanged thereafter */
+ */
diff -Naur -X ../exclude-files orig/arch/um/drivers/cow_user.c um/arch/um/drivers/cow_user.c
--- orig/arch/um/drivers/cow_user.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/drivers/cow_user.c 2004-01-10 05:56:22.000000000 -0500
++++ um/arch/um/drivers/cow_user.c 2003-11-08 06:29:47.000000000 -0500
@@ -0,0 +1,375 @@
+#include <stddef.h>
+#include <string.h>
+int write_cow_header(char *cow_file, int fd, char *backing_file,
+ int sectorsize, int alignment, long long *size)
+{
-+ struct cow_header_v3 *header;
++ struct cow_header_v3 *header;
+ unsigned long modtime;
+ int err;
+
+ */
diff -Naur -X ../exclude-files orig/arch/um/drivers/hostaudio_kern.c um/arch/um/drivers/hostaudio_kern.c
--- orig/arch/um/drivers/hostaudio_kern.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/drivers/hostaudio_kern.c 2004-02-12 05:46:22.000000000 -0500
-@@ -0,0 +1,352 @@
++++ um/arch/um/drivers/hostaudio_kern.c 2003-11-10 00:04:23.000000000 -0500
+@@ -0,0 +1,339 @@
+/*
+ * Copyright (C) 2002 Steve Schmidtke
+ * Licensed under the GPL
+
+#include "linux/config.h"
+#include "linux/module.h"
++#include "linux/version.h"
+#include "linux/init.h"
+#include "linux/slab.h"
+#include "linux/fs.h"
+#include "asm/uaccess.h"
+#include "kern_util.h"
+#include "init.h"
-+#include "os.h"
-+
-+struct hostaudio_state {
-+ int fd;
-+};
-+
-+struct hostmixer_state {
-+ int fd;
-+};
-+
-+#define HOSTAUDIO_DEV_DSP "/dev/sound/dsp"
-+#define HOSTAUDIO_DEV_MIXER "/dev/sound/mixer"
++#include "hostaudio.h"
+
+/* Only changed from linux_main at boot time */
+char *dsp = HOSTAUDIO_DEV_DSP;
+ if(kbuf == NULL)
+ return(-ENOMEM);
+
-+ err = os_read_file(state->fd, kbuf, count);
++ err = hostaudio_read_user(state, kbuf, count, ppos);
+ if(err < 0)
+ goto out;
+
+ if(copy_from_user(kbuf, buffer, count))
+ goto out;
+
-+ err = os_write_file(state->fd, kbuf, count);
++ err = hostaudio_write_user(state, kbuf, count, ppos);
+ if(err < 0)
+ goto out;
-+ *ppos += err;
+
+ out:
+ kfree(kbuf);
+ break;
+ }
+
-+ err = os_ioctl_generic(state->fd, cmd, (unsigned long) &data);
++ err = hostaudio_ioctl_user(state, cmd, (unsigned long) &data);
+
+ switch(cmd){
+ case SNDCTL_DSP_SPEED:
+#endif
+
+ state = kmalloc(sizeof(struct hostaudio_state), GFP_KERNEL);
-+ if(state == NULL)
-+ return(-ENOMEM);
++ if(state == NULL) return(-ENOMEM);
+
+ if(file->f_mode & FMODE_READ) r = 1;
+ if(file->f_mode & FMODE_WRITE) w = 1;
+
-+ ret = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0);
++ ret = hostaudio_open_user(state, r, w, dsp);
+ if(ret < 0){
+ kfree(state);
+ return(ret);
+ }
+
-+ state->fd = ret;
+ file->private_data = state;
+ return(0);
+}
+static int hostaudio_release(struct inode *inode, struct file *file)
+{
+ struct hostaudio_state *state = file->private_data;
++ int ret;
+
+#ifdef DEBUG
+ printk("hostaudio: release called\n");
+#endif
+
-+ os_close_file(state->fd);
++ ret = hostaudio_release_user(state);
+ kfree(state);
+
-+ return(0);
++ return(ret);
+}
+
+/* /dev/mixer file operations */
+ printk("hostmixer: ioctl called\n");
+#endif
+
-+ return(os_ioctl_generic(state->fd, cmd, arg));
++ return(hostmixer_ioctl_mixdev_user(state, cmd, arg));
+}
+
+static int hostmixer_open_mixdev(struct inode *inode, struct file *file)
+ if(file->f_mode & FMODE_READ) r = 1;
+ if(file->f_mode & FMODE_WRITE) w = 1;
+
-+ ret = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0);
++ ret = hostmixer_open_mixdev_user(state, r, w, mixer);
+
+ if(ret < 0){
-+ printk("hostaudio_open_mixdev failed to open '%s', err = %d\n",
-+ dsp, -ret);
+ kfree(state);
+ return(ret);
+ }
+static int hostmixer_release(struct inode *inode, struct file *file)
+{
+ struct hostmixer_state *state = file->private_data;
++ int ret;
+
+#ifdef DEBUG
+ printk("hostmixer: release called\n");
+#endif
+
-+ os_close_file(state->fd);
++ ret = hostmixer_release_mixdev_user(state);
+ kfree(state);
+
-+ return(0);
++ return(ret);
+}
+
+
+ * c-file-style: "linux"
+ * End:
+ */
+diff -Naur -X ../exclude-files orig/arch/um/drivers/hostaudio_user.c um/arch/um/drivers/hostaudio_user.c
+--- orig/arch/um/drivers/hostaudio_user.c 1969-12-31 19:00:00.000000000 -0500
++++ um/arch/um/drivers/hostaudio_user.c 2003-10-21 03:26:06.000000000 -0400
+@@ -0,0 +1,134 @@
++/*
++ * Copyright (C) 2002 Steve Schmidtke
++ * Licensed under the GPL
++ */
++
++#include <sys/types.h>
++#include <unistd.h>
++#include <errno.h>
++#include "hostaudio.h"
++#include "user_util.h"
++#include "kern_util.h"
++#include "user.h"
++#include "os.h"
++
++/* /dev/dsp file operations */
++
++ssize_t hostaudio_read_user(struct hostaudio_state *state, char *buffer,
++ size_t count, loff_t *ppos)
++{
++#ifdef DEBUG
++ printk("hostaudio: read_user called, count = %d\n", count);
++#endif
++
++ return(os_read_file(state->fd, buffer, count));
++}
++
++ssize_t hostaudio_write_user(struct hostaudio_state *state, const char *buffer,
++ size_t count, loff_t *ppos)
++{
++ ssize_t ret;
++
++#ifdef DEBUG
++ printk("hostaudio: write_user called, count = %d\n", count);
++#endif
++
++ return(os_write_file(state->fd, buffer, count));
++
++ return(ret);
++}
++
++int hostaudio_ioctl_user(struct hostaudio_state *state, unsigned int cmd,
++ unsigned long arg)
++{
++#ifdef DEBUG
++ printk("hostaudio: ioctl_user called, cmd = %u\n", cmd);
++#endif
++
++ return(os_ioctl_generic(state->fd, cmd, arg));
++}
++
++int hostaudio_open_user(struct hostaudio_state *state, int r, int w, char *dsp)
++{
++#ifdef DEBUG
++ printk("hostaudio: open_user called\n");
++#endif
++
++ state->fd = os_open_file(dsp, of_set_rw(OPENFLAGS(), r, w), 0);
++
++ if(state->fd < 0) {
++ printk("hostaudio_open_user failed to open '%s', err = %d\n",
++ dsp, -state->fd);
++ return(state->fd);
++ }
++
++ return(0);
++}
++
++int hostaudio_release_user(struct hostaudio_state *state)
++{
++#ifdef DEBUG
++ printk("hostaudio: release called\n");
++#endif
++ if(state->fd >= 0){
++ os_close_file(state->fd);
++ state->fd = -1;
++ }
++
++ return(0);
++}
++
++/* /dev/mixer file operations */
++
++int hostmixer_ioctl_mixdev_user(struct hostmixer_state *state,
++ unsigned int cmd, unsigned long arg)
++{
++#ifdef DEBUG
++ printk("hostmixer: ioctl_user called cmd = %u\n",cmd);
++#endif
++
++ return(os_ioctl_generic(state->fd, cmd, arg));
++}
++
++int hostmixer_open_mixdev_user(struct hostmixer_state *state, int r, int w,
++ char *mixer)
++{
++#ifdef DEBUG
++ printk("hostmixer: open_user called\n");
++#endif
++
++ state->fd = os_open_file(mixer, of_set_rw(OPENFLAGS(), r, w), 0);
++
++ if(state->fd < 0) {
++ printk("hostaudio_open_mixdev_user failed to open '%s', "
++ "err = %d\n", mixer, state->fd);
++ return(state->fd);
++ }
++
++ return(0);
++}
++
++int hostmixer_release_mixdev_user(struct hostmixer_state *state)
++{
++#ifdef DEBUG
++ printk("hostmixer: release_user called\n");
++#endif
++
++ if(state->fd >= 0){
++ os_close_file(state->fd);
++ state->fd = -1;
++ }
++
++ return 0;
++}
++
++/*
++ * Overrides for Emacs so that we follow Linus's tabbing style.
++ * Emacs will notice this stuff at the end of the file and automatically
++ * adjust the settings for this buffer only. This must remain at the end
++ * of the file.
++ * ---------------------------------------------------------------------------
++ * Local variables:
++ * c-file-style: "linux"
++ * End:
++ */
diff -Naur -X ../exclude-files orig/arch/um/drivers/line.c um/arch/um/drivers/line.c
--- orig/arch/um/drivers/line.c 1969-12-31 19:00:00.000000000 -0500
+++ um/arch/um/drivers/line.c 2003-11-07 03:03:57.000000000 -0500
+ */
diff -Naur -X ../exclude-files orig/arch/um/drivers/Makefile um/arch/um/drivers/Makefile
--- orig/arch/um/drivers/Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/drivers/Makefile 2004-02-12 03:55:08.000000000 -0500
++++ um/arch/um/drivers/Makefile 2003-11-08 09:58:54.000000000 -0500
@@ -0,0 +1,97 @@
+#
+# Copyright (C) 2000, 2002, 2003 Jeff Dike (jdike@karaya.com)
+pcap-libs := -lpcap -L/usr/lib
+net-objs := net_kern.o net_user.o
+mconsole-objs := mconsole_kern.o mconsole_user.o
-+hostaudio-objs := hostaudio_kern.o
++hostaudio-objs := hostaudio_kern.o hostaudio_user.o
+ubd-objs := ubd_kern.o ubd_user.o
+port-objs := port_kern.o port_user.o
+harddog-objs := harddog_kern.o harddog_user.o
+ */
diff -Naur -X ../exclude-files orig/arch/um/drivers/mconsole_kern.c um/arch/um/drivers/mconsole_kern.c
--- orig/arch/um/drivers/mconsole_kern.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/drivers/mconsole_kern.c 2004-02-12 03:09:12.000000000 -0500
-@@ -0,0 +1,560 @@
++++ um/arch/um/drivers/mconsole_kern.c 2003-10-21 03:26:06.000000000 -0400
+@@ -0,0 +1,561 @@
+/*
+ * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org)
+ * Copyright (C) 2001 - 2003 Jeff Dike (jdike@addtoit.com)
+ int len;
+ char *ptr = req->request.data;
+
-+ ptr += strlen("log ");
++ ptr += strlen("log");
++ while(isspace(*ptr)) ptr++;
+
+ len = req->len - (ptr - req->request.data);
+ printk("%.*s", len, ptr);
+ ptr += strlen("sysrq");
+ while(isspace(*ptr)) ptr++;
+
-+ mconsole_reply(req, "", 0, 0);
+ handle_sysrq(*ptr, ¤t->thread.regs, NULL, NULL);
++ mconsole_reply(req, "", 0, 0);
+}
+#else
+void mconsole_sysrq(struct mc_request *req)
+ */
diff -Naur -X ../exclude-files orig/arch/um/drivers/port_kern.c um/arch/um/drivers/port_kern.c
--- orig/arch/um/drivers/port_kern.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/drivers/port_kern.c 2004-01-10 06:18:49.000000000 -0500
++++ um/arch/um/drivers/port_kern.c 2003-10-21 03:26:06.000000000 -0400
@@ -0,0 +1,303 @@
+/*
+ * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com)
+ int fd;
+
+ while(1){
-+ if(down_interruptible(&port->sem))
++ if(down_interruptible(&port->sem))
+ return(-ERESTARTSYS);
+
+ spin_lock(&port->lock);
+ */
diff -Naur -X ../exclude-files orig/arch/um/drivers/ssl.c um/arch/um/drivers/ssl.c
--- orig/arch/um/drivers/ssl.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/drivers/ssl.c 2004-01-10 06:20:17.000000000 -0500
-@@ -0,0 +1,300 @@
++++ um/arch/um/drivers/ssl.c 2003-11-08 02:57:02.000000000 -0500
+@@ -0,0 +1,306 @@
+/*
+ * Copyright (C) 2000, 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+
+static kdev_t ssl_console_device(struct console *c)
+{
++#if 0 /* This is the 2.5 implementation */
++static struct tty_driver *ssl_console_device(struct console *c, int *index)
++ *index = c->index;
++ return ssl_driver;
++#endif
++
+ return mk_kdev(TTY_MAJOR, c->index);
+}
+
+ */
diff -Naur -X ../exclude-files orig/arch/um/drivers/ubd_kern.c um/arch/um/drivers/ubd_kern.c
--- orig/arch/um/drivers/ubd_kern.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/drivers/ubd_kern.c 2004-01-21 01:28:43.000000000 -0500
-@@ -0,0 +1,1396 @@
++++ um/arch/um/drivers/ubd_kern.c 2003-12-17 10:48:17.000000000 -0500
+@@ -0,0 +1,1390 @@
+/*
+ * Copyright (C) 2000 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+ printk("ubd_handler - physmem_subst_mapping failed, "
+ "err = %d\n", -err);
+ }
-+
++
+ spin_lock(&io_request_lock);
+ ubd_finish(req.error);
+ reactivate_fd(thread_fd, UBD_IRQ);
+
+static void ubd_close(struct ubd *dev)
+{
-+ if(ubd_do_mmap)
-+ physmem_forget_descriptor(dev->fd);
+ os_close_file(dev->fd);
-+ if(dev->cow.file != NULL)
-+ return;
-+
-+ if(ubd_do_mmap)
-+ physmem_forget_descriptor(dev->cow.fd);
-+ os_close_file(dev->cow.fd);
-+ vfree(dev->cow.bitmap);
-+ dev->cow.bitmap = NULL;
++ if(dev->cow.file != NULL) {
++ os_close_file(dev->cow.fd);
++ vfree(dev->cow.bitmap);
++ dev->cow.bitmap = NULL;
++ }
+}
+
+static int ubd_open_dev(struct ubd *dev)
+ err = read_cow_bitmap(dev->fd, dev->cow.bitmap,
+ dev->cow.bitmap_offset,
+ dev->cow.bitmap_len);
-+ if(err < 0)
-+ goto error;
++ if(err < 0) goto error;
+
+ flags = dev->openflags;
+ flags.w = 0;
+ */
diff -Naur -X ../exclude-files orig/arch/um/drivers/ubd_user.c um/arch/um/drivers/ubd_user.c
--- orig/arch/um/drivers/ubd_user.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/drivers/ubd_user.c 2004-01-10 06:24:52.000000000 -0500
-@@ -0,0 +1,377 @@
++++ um/arch/um/drivers/ubd_user.c 2003-11-08 07:57:49.000000000 -0500
+@@ -0,0 +1,378 @@
+/*
+ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
+ * Copyright (C) 2001 Ridgerun,Inc (glonnon@ridgerun.com)
+#include <netinet/in.h>
+#include <sys/time.h>
+#include <sys/socket.h>
++#include <string.h>
+#include <sys/mman.h>
+#include <sys/param.h>
+#include "asm/types.h"
+ int err;
+
+ err = os_file_modtime(file, &modtime);
-+ if(err < 0){
++ if(err < 0){
+ printk("Failed to get modification time of backing file "
+ "\"%s\", err = %d\n", file, -err);
+ return(err);
+ __u64 size;
+ __u32 version, align;
+ char *backing_file;
-+ int fd, err, sectorsize, same, mode = 0644;
++ int fd, err, sectorsize, same, mode = 0644;
+
-+ fd = os_open_file(file, *openflags, mode);
-+ if(fd < 0){
++ fd = os_open_file(file, *openflags, mode);
++ if(fd < 0){
+ if((fd == -ENOENT) && (create_cow_out != NULL))
+ *create_cow_out = 1;
+ if(!openflags->w ||
+ ((errno != EROFS) && (errno != EACCES))) return(-errno);
+ openflags->w = 0;
-+ fd = os_open_file(file, *openflags, mode);
-+ if(fd < 0)
++ fd = os_open_file(file, *openflags, mode);
++ if(fd < 0)
+ return(fd);
+ }
+
+ */
diff -Naur -X ../exclude-files orig/arch/um/dyn_link.ld.in um/arch/um/dyn_link.ld.in
--- orig/arch/um/dyn_link.ld.in 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/dyn_link.ld.in 2004-01-10 04:28:44.000000000 -0500
-@@ -0,0 +1,171 @@
++++ um/arch/um/dyn_link.ld.in 2003-10-21 03:26:06.000000000 -0400
+@@ -0,0 +1,172 @@
+OUTPUT_FORMAT("ELF_FORMAT")
+OUTPUT_ARCH(ELF_ARCH)
+ENTRY(_start)
+{
+ . = START() + SIZEOF_HEADERS;
+ .interp : { *(.interp) }
++ . = ALIGN(4096);
+ __binary_start = .;
+ . = ALIGN(4096); /* Init code and data */
+ _stext = .;
+ $(CC) $(CFLAGS_$@) $(USER_CFLAGS) -c -o $@ $<
diff -Naur -X ../exclude-files orig/arch/um/fs/hppfs/hppfs_kern.c um/arch/um/fs/hppfs/hppfs_kern.c
--- orig/arch/um/fs/hppfs/hppfs_kern.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/fs/hppfs/hppfs_kern.c 2004-01-08 23:35:58.000000000 -0500
-@@ -0,0 +1,737 @@
++++ um/arch/um/fs/hppfs/hppfs_kern.c 2003-11-08 09:42:49.000000000 -0500
+@@ -0,0 +1,727 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+ ssize_t n;
+
+ read = file->f_dentry->d_inode->i_fop->read;
-+ if(read == NULL)
-+ return(-EOPNOTSUPP);
+
+ if(!is_user)
+ set_fs(KERNEL_DS);
+ int err;
+
+ write = proc_file->f_dentry->d_inode->i_fop->write;
-+ if(write == NULL)
-+ return(-EOPNOTSUPP);
+
+ proc_file->f_pos = file->f_pos;
+ err = (*write)(proc_file, buf, len, &proc_file->f_pos);
+ int err;
+
+ readdir = proc_file->f_dentry->d_inode->i_fop->readdir;
-+ if(readdir == NULL)
-+ return(-EOPNOTSUPP);
+
+ proc_file->f_pos = file->f_pos;
+ err = (*readdir)(proc_file, &dirent, hppfs_filldir);
+ return(err);
+
+ readlink = proc_dentry->d_inode->i_op->readlink;
-+ if(readlink == NULL)
-+ return(-EOPNOTSUPP);
+ n = (*readlink)(proc_dentry, buffer, buflen);
+
+ if(proc_file.f_op->release)
+ return(err);
+
+ follow_link = proc_dentry->d_inode->i_op->follow_link;
-+ if(follow_link == NULL)
-+ return(-EOPNOTSUPP);
+ n = (*follow_link)(proc_dentry, nd);
+
+ if(proc_file.f_op->release)
+ * c-file-style: "linux"
+ * End:
+ */
+diff -Naur -X ../exclude-files orig/arch/um/include/hostaudio.h um/arch/um/include/hostaudio.h
+--- orig/arch/um/include/hostaudio.h 1969-12-31 19:00:00.000000000 -0500
++++ um/arch/um/include/hostaudio.h 2003-10-21 03:26:06.000000000 -0400
+@@ -0,0 +1,48 @@
++/*
++ * Copyright (C) 2002 Steve Schmidtke
++ * Licensed under the GPL
++ */
++
++#ifndef HOSTAUDIO_H
++#define HOSTAUDIO_H
++
++#define HOSTAUDIO_DEV_DSP "/dev/sound/dsp"
++#define HOSTAUDIO_DEV_MIXER "/dev/sound/mixer"
++
++struct hostaudio_state {
++ int fd;
++};
++
++struct hostmixer_state {
++ int fd;
++};
++
++/* UML user-side protoypes */
++extern ssize_t hostaudio_read_user(struct hostaudio_state *state, char *buffer,
++ size_t count, loff_t *ppos);
++extern ssize_t hostaudio_write_user(struct hostaudio_state *state,
++ const char *buffer, size_t count,
++ loff_t *ppos);
++extern int hostaudio_ioctl_user(struct hostaudio_state *state,
++ unsigned int cmd, unsigned long arg);
++extern int hostaudio_open_user(struct hostaudio_state *state, int r, int w,
++ char *dsp);
++extern int hostaudio_release_user(struct hostaudio_state *state);
++extern int hostmixer_ioctl_mixdev_user(struct hostmixer_state *state,
++ unsigned int cmd, unsigned long arg);
++extern int hostmixer_open_mixdev_user(struct hostmixer_state *state, int r,
++ int w, char *mixer);
++extern int hostmixer_release_mixdev_user(struct hostmixer_state *state);
++
++#endif /* HOSTAUDIO_H */
++
++/*
++ * Overrides for Emacs so that we follow Linus's tabbing style.
++ * Emacs will notice this stuff at the end of the file and automatically
++ * adjust the settings for this buffer only. This must remain at the end
++ * of the file.
++ * ---------------------------------------------------------------------------
++ * Local variables:
++ * c-file-style: "linux"
++ * End:
++ */
diff -Naur -X ../exclude-files orig/arch/um/include/init.h um/arch/um/include/init.h
--- orig/arch/um/include/init.h 1969-12-31 19:00:00.000000000 -0500
+++ um/arch/um/include/init.h 2003-10-21 03:26:06.000000000 -0400
+ */
diff -Naur -X ../exclude-files orig/arch/um/include/mem.h um/arch/um/include/mem.h
--- orig/arch/um/include/mem.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/include/mem.h 2004-01-16 11:14:38.000000000 -0500
-@@ -0,0 +1,29 @@
++++ um/arch/um/include/mem.h 2003-10-21 03:26:06.000000000 -0400
+@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2002, 2003 Jeff Dike (jdike@addtoit.com)
+ * Licensed under the GPL
+extern int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w);
+extern int is_remapped(void *virt);
+extern int physmem_remove_mapping(void *virt);
-+extern void physmem_forget_descriptor(int fd);
+
+#endif
+
+ */
diff -Naur -X ../exclude-files orig/arch/um/include/mem_user.h um/arch/um/include/mem_user.h
--- orig/arch/um/include/mem_user.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/include/mem_user.h 2004-01-10 00:11:06.000000000 -0500
-@@ -0,0 +1,81 @@
++++ um/arch/um/include/mem_user.h 2003-12-14 11:16:03.000000000 -0500
+@@ -0,0 +1,82 @@
+/*
+ * arch/um/include/mem_user.h
+ *
+extern unsigned long host_task_size;
+extern unsigned long task_size;
+
++extern void check_devanon(void);
+extern int init_mem_user(void);
+extern int create_mem_file(unsigned long len);
+extern void setup_memory(void *entry);
+ */
diff -Naur -X ../exclude-files orig/arch/um/include/sysdep-i386/checksum.h um/arch/um/include/sysdep-i386/checksum.h
--- orig/arch/um/include/sysdep-i386/checksum.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/include/sysdep-i386/checksum.h 2004-01-13 23:40:05.000000000 -0500
-@@ -0,0 +1,218 @@
++++ um/arch/um/include/sysdep-i386/checksum.h 2003-10-21 03:26:06.000000000 -0400
+@@ -0,0 +1,217 @@
+/*
+ * Licensed under the GPL
+ */
+#define __UM_SYSDEP_CHECKSUM_H
+
+#include "linux/string.h"
-+#include "asm/uaccess.h"
+
+/*
+ * computes the checksum of a memory block at buff, length len,
+
+/*
+ * These are the old (and unsafe) way of doing checksums, a warning message
-+ * will be printed if they are used and an exception occurs.
++ * will be printed if they are used and an exeption occurs.
+ *
+ * these functions should go away after some time.
+ */
+ */
diff -Naur -X ../exclude-files orig/arch/um/include/sysdep-i386/frame_user.h um/arch/um/include/sysdep-i386/frame_user.h
--- orig/arch/um/include/sysdep-i386/frame_user.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/include/sysdep-i386/frame_user.h 2004-01-14 03:54:47.000000000 -0500
++++ um/arch/um/include/sysdep-i386/frame_user.h 2003-10-21 03:26:06.000000000 -0400
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+ * it would have to be __builtin_frame_address(1).
+ */
+
-+#define frame_restorer() \
-+({ \
-+ unsigned long *fp; \
-+\
-+ fp = __builtin_frame_address(0); \
-+ ((unsigned long) (fp + 1)); \
-+})
++static inline unsigned long frame_restorer(void)
++{
++ unsigned long *fp;
++
++ fp = __builtin_frame_address(0);
++ return((unsigned long) (fp + 1));
++}
+
+/* Similarly, this returns the value of sp when the handler was first
+ * entered. This is used to calculate the proper sp when delivering
+ * signals.
+ */
+
-+#define frame_sp() \
-+({ \
-+ unsigned long *fp; \
-+\
-+ fp = __builtin_frame_address(0); \
-+ ((unsigned long) (fp + 1)); \
-+})
++static inline unsigned long frame_sp(void)
++{
++ unsigned long *fp;
++
++ fp = __builtin_frame_address(0);
++ return((unsigned long) (fp + 1));
++}
+
+#endif
+
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/ksyms.c um/arch/um/kernel/ksyms.c
--- orig/arch/um/kernel/ksyms.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/ksyms.c 2004-01-23 00:44:09.000000000 -0500
-@@ -0,0 +1,120 @@
++++ um/arch/um/kernel/ksyms.c 2003-12-17 03:22:37.000000000 -0500
+@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2001 - 2003 Jeff Dike (jdike@addtoit.com)
+ * Licensed under the GPL
+EXPORT_SYMBOL(os_create_unix_socket);
+EXPORT_SYMBOL(os_connect_socket);
+EXPORT_SYMBOL(os_accept_connection);
-+EXPORT_SYMBOL(os_ioctl_generic);
+EXPORT_SYMBOL(os_rcv_fd);
+EXPORT_SYMBOL(run_helper);
+EXPORT_SYMBOL(start_thread);
+archmrproper: clean
diff -Naur -X ../exclude-files orig/arch/um/kernel/mem.c um/arch/um/kernel/mem.c
--- orig/arch/um/kernel/mem.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/mem.c 2003-12-22 01:25:00.000000000 -0500
++++ um/arch/um/kernel/mem.c 2003-11-13 23:26:35.000000000 -0500
@@ -0,0 +1,336 @@
+/*
+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
+ start = (unsigned long) &__binary_start;
+ if(uml_physmem != start){
+ map_memory(uml_physmem, __pa(uml_physmem), start - uml_physmem,
-+ 1, 1, 0);
++ 1, 1, 0);
+ }
+
+ /* this will put all low memory onto the freelists */
+ }
+}
+
-+#ifdef CONFIG_HIGHMEM
++#if CONFIG_HIGHMEM
+pte_t *kmap_pte;
+pgprot_t kmap_prot;
+
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/mem_user.c um/arch/um/kernel/mem_user.c
--- orig/arch/um/kernel/mem_user.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/mem_user.c 2004-01-10 00:19:09.000000000 -0500
-@@ -0,0 +1,216 @@
++++ um/arch/um/kernel/mem_user.c 2003-12-14 11:30:57.000000000 -0500
+@@ -0,0 +1,217 @@
+/*
+ * arch/um/kernel/mem_user.c
+ *
+ return(fd);
+}
+
-+static int have_devanon(void)
++static int have_devanon = 0;
++
++void check_devanon(void)
+{
+ int fd;
+
+ fd = open("/dev/anon", O_RDWR);
+ if(fd < 0){
+ printk("Not available (open failed with errno %d)\n", errno);
-+ return(0);
++ return;
+ }
+
+ printk("OK\n");
-+ return(1);
++ have_devanon = 1;
+}
+
+static int create_anon_file(unsigned long len)
+{
+ int err, fd;
+
-+ if(have_devanon())
++ if(have_devanon)
+ fd = create_anon_file(len);
+ else fd = create_tmp_file(len);
+
+ os_print_error(fd, "parse_iomem - Couldn't open io file");
+ goto out;
+ }
-+
+ err = os_stat_fd(fd, &buf);
+ if(err < 0){
+ os_print_error(err, "parse_iomem - cannot stat_fd file");
+#endif
diff -Naur -X ../exclude-files orig/arch/um/kernel/physmem.c um/arch/um/kernel/physmem.c
--- orig/arch/um/kernel/physmem.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/physmem.c 2004-01-16 23:38:02.000000000 -0500
-@@ -0,0 +1,446 @@
++++ um/arch/um/kernel/physmem.c 2003-11-14 02:59:20.000000000 -0500
+@@ -0,0 +1,349 @@
+/*
+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
+ * Licensed under the GPL
+ __u64 offset;
+ void *virt;
+ unsigned long phys;
-+ struct list_head list;
+};
+
+struct virtmem_table virtmem_hash;
+DEF_HASH(static, virtmem, struct phys_desc, virt_ptrs, void *, virt, virt_cmp,
+ virt_hash);
+
-+LIST_HEAD(descriptor_mappings);
-+
-+struct desc_mapping {
-+ int fd;
-+ struct list_head list;
-+ struct list_head pages;
-+};
-+
-+static struct desc_mapping *find_mapping(int fd)
-+{
-+ struct desc_mapping *desc;
-+ struct list_head *ele;
-+
-+ list_for_each(ele, &descriptor_mappings){
-+ desc = list_entry(ele, struct desc_mapping, list);
-+ if(desc->fd == fd)
-+ return(desc);
-+ }
-+
-+ return(NULL);
-+}
-+
-+static struct desc_mapping *descriptor_mapping(int fd)
-+{
-+ struct desc_mapping *desc;
-+
-+ desc = find_mapping(fd);
-+ if(desc != NULL)
-+ return(desc);
-+
-+ desc = kmalloc(sizeof(*desc), GFP_ATOMIC);
-+ if(desc == NULL)
-+ return(NULL);
-+
-+ *desc = ((struct desc_mapping)
-+ { .fd = fd,
-+ .list = LIST_HEAD_INIT(desc->list),
-+ .pages = LIST_HEAD_INIT(desc->pages) });
-+ list_add(&desc->list, &descriptor_mappings);
-+
-+ return(desc);
-+}
-+
+int physmem_subst_mapping(void *virt, int fd, __u64 offset, int w)
+{
-+ struct desc_mapping *fd_maps;
+ struct phys_desc *desc;
+ unsigned long phys;
+ int err;
+
-+ fd_maps = descriptor_mapping(fd);
-+ if(fd_maps == NULL)
-+ return(-ENOMEM);
++ virt = (void *) ((unsigned long) virt & PAGE_MASK);
++ err = os_map_memory(virt, fd, offset, PAGE_SIZE, 1, w, 0);
++ if(err)
++ goto out;
+
+ phys = __pa(virt);
+ if(find_virtmem_hash(&virtmem_hash, virt) != NULL)
+ if(desc == NULL)
+ goto out;
+
-+ *desc = ((struct phys_desc)
-+ { .virt_ptrs = { NULL, NULL },
-+ .fd = fd,
-+ .offset = offset,
-+ .virt = virt,
-+ .phys = __pa(virt),
-+ .list = LIST_HEAD_INIT(desc->list) });
++ *desc = ((struct phys_desc) { .virt_ptrs = { NULL, NULL },
++ .fd = fd,
++ .offset = offset,
++ .virt = virt,
++ .phys = __pa(virt) });
+ insert_virtmem_hash(&virtmem_hash, desc);
-+
-+ list_add(&desc->list, &fd_maps->pages);
-+
-+ virt = (void *) ((unsigned long) virt & PAGE_MASK);
-+ err = os_map_memory(virt, fd, offset, PAGE_SIZE, 1, w, 0);
-+ if(!err)
-+ goto out;
-+
-+ remove_virtmem_hash(&virtmem_hash, desc);
-+ kfree(desc);
++ err = 0;
+ out:
+ return(err);
+}
+
+static int physmem_fd = -1;
+
-+static void remove_mapping(struct phys_desc *desc)
++int physmem_remove_mapping(void *virt)
+{
-+ void *virt = desc->virt;
++ struct phys_desc *desc;
+ int err;
+
++ virt = (void *) ((unsigned long) virt & PAGE_MASK);
++ desc = find_virtmem_hash(&virtmem_hash, virt);
++ if(desc == NULL)
++ return(0);
++
+ remove_virtmem_hash(&virtmem_hash, desc);
-+ list_del(&desc->list);
+ kfree(desc);
+
+ err = os_map_memory(virt, physmem_fd, __pa(virt), PAGE_SIZE, 1, 1, 0);
+ if(err)
+ panic("Failed to unmap block device page from physical memory, "
+ "errno = %d", -err);
-+}
-+
-+int physmem_remove_mapping(void *virt)
-+{
-+ struct phys_desc *desc;
-+
-+ virt = (void *) ((unsigned long) virt & PAGE_MASK);
-+ desc = find_virtmem_hash(&virtmem_hash, virt);
-+ if(desc == NULL)
-+ return(0);
-+
-+ remove_mapping(desc);
+ return(1);
+}
+
-+void physmem_forget_descriptor(int fd)
-+{
-+ struct desc_mapping *desc;
-+ struct phys_desc *page;
-+ struct list_head *ele, *next;
-+ __u64 offset;
-+ void *addr;
-+ int err;
-+
-+ desc = find_mapping(fd);
-+ if(desc == NULL)
-+ return;
-+
-+ list_for_each_safe(ele, next, &desc->pages){
-+ page = list_entry(ele, struct phys_desc, list);
-+ offset = page->offset;
-+ addr = page->virt;
-+ remove_mapping(page);
-+ err = os_seek_file(fd, offset);
-+ if(err)
-+ panic("physmem_forget_descriptor - failed to seek "
-+ "to %lld in fd %d, error = %d\n",
-+ offset, fd, -err);
-+ err = os_read_file(fd, addr, PAGE_SIZE);
-+ if(err < 0)
-+ panic("physmem_forget_descriptor - failed to read "
-+ "from fd %d to 0x%p, error = %d\n",
-+ fd, addr, -err);
-+ }
-+
-+ list_del(&desc->list);
-+ kfree(desc);
-+}
-+
+void arch_free_page(struct page *page, int order)
+{
+ void *virt;
+ int i;
+
-+ for(i = 0; i < (1 << order); i++){
++ for(i = 0; i < 1 << order; i++){
+ virt = __va(page_to_phys(page + i));
+ physmem_remove_mapping(virt);
+ }
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/process.c um/arch/um/kernel/process.c
--- orig/arch/um/kernel/process.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/process.c 2004-01-31 02:47:57.000000000 -0500
-@@ -0,0 +1,289 @@
++++ um/arch/um/kernel/process.c 2003-11-07 02:09:21.000000000 -0500
+@@ -0,0 +1,288 @@
+/*
+ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+ if(err < 0) panic("Waiting for outer trampoline failed - errno = %d",
+ errno);
+ if(!WIFSIGNALED(status) || (WTERMSIG(status) != SIGKILL))
-+ panic("outer trampoline didn't exit with SIGKILL, "
-+ "status = %d", status);
++ panic("outer trampoline didn't exit with SIGKILL");
+
+ return(arg.pid);
+}
+
+int run_kernel_thread(int (*fn)(void *), void *arg, void **jmp_ptr)
+{
-+ sigjmp_buf buf;
++ jmp_buf buf;
+ int n;
+
+ *jmp_ptr = &buf;
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/skas/include/uaccess.h um/arch/um/kernel/skas/include/uaccess.h
--- orig/arch/um/kernel/skas/include/uaccess.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/skas/include/uaccess.h 2004-01-17 06:35:41.000000000 -0500
-@@ -0,0 +1,40 @@
++++ um/arch/um/kernel/skas/include/uaccess.h 2003-12-17 01:19:45.000000000 -0500
+@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+#ifndef __SKAS_UACCESS_H
+#define __SKAS_UACCESS_H
+
-+#include "asm/errno.h"
-+
+#define access_ok_skas(type, addr, size) \
+ ((segment_eq(get_fs(), KERNEL_DS)) || \
+ (((unsigned long) (addr) < TASK_SIZE) && \
+ return(access_ok_skas(type, addr, size) ? 0 : -EFAULT);
+}
+
++#endif
++
+extern int copy_from_user_skas(void *to, const void *from, int n);
+extern int copy_to_user_skas(void *to, const void *from, int n);
+extern int strncpy_from_user_skas(char *dst, const char *src, int count);
+extern int clear_user_skas(void *mem, int len);
+extern int strnlen_user_skas(const void *str, int len);
+
-+#endif
-+
+/*
+ * Overrides for Emacs so that we follow Linus's tabbing style.
+ * Emacs will notice this stuff at the end of the file and automatically
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/skas/process.c um/arch/um/kernel/skas/process.c
--- orig/arch/um/kernel/skas/process.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/skas/process.c 2004-01-31 02:49:36.000000000 -0500
++++ um/arch/um/kernel/skas/process.c 2003-11-19 03:00:01.000000000 -0500
@@ -0,0 +1,417 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+void new_thread(void *stack, void **switch_buf_ptr, void **fork_buf_ptr,
+ void (*handler)(int))
+{
-+ sigjmp_buf switch_buf, fork_buf;
++ jmp_buf switch_buf, fork_buf;
+
+ *switch_buf_ptr = &switch_buf;
+ *fork_buf_ptr = &fork_buf;
+
+void thread_wait(void *sw, void *fb)
+{
-+ sigjmp_buf buf, **switch_buf = sw, *fork_buf;
++ jmp_buf buf, **switch_buf = sw, *fork_buf;
+
+ *switch_buf = &buf;
+ fork_buf = fb;
+
+void switch_threads(void *me, void *next)
+{
-+ sigjmp_buf my_buf, **me_ptr = me, *next_buf = next;
++ jmp_buf my_buf, **me_ptr = me, *next_buf = next;
+
+ *me_ptr = &my_buf;
+ if(sigsetjmp(my_buf, 1) == 0)
+ siglongjmp(*next_buf, 1);
+}
+
-+static sigjmp_buf initial_jmpbuf;
++static jmp_buf initial_jmpbuf;
+
+/* XXX Make these percpu */
+static void (*cb_proc)(void *arg);
+static void *cb_arg;
-+static sigjmp_buf *cb_back;
++static jmp_buf *cb_back;
+
+int start_idle_thread(void *stack, void *switch_buf_ptr, void **fork_buf_ptr)
+{
-+ sigjmp_buf **switch_buf = switch_buf_ptr;
++ jmp_buf **switch_buf = switch_buf_ptr;
+ int n;
+
+ *fork_buf_ptr = &initial_jmpbuf;
+
+void initial_thread_cb_skas(void (*proc)(void *), void *arg)
+{
-+ sigjmp_buf here;
++ jmp_buf here;
+
+ cb_proc = proc;
+ cb_arg = arg;
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/skas/syscall_kern.c um/arch/um/kernel/skas/syscall_kern.c
--- orig/arch/um/kernel/skas/syscall_kern.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/skas/syscall_kern.c 2004-01-04 08:20:29.000000000 -0500
++++ um/arch/um/kernel/skas/syscall_kern.c 2003-10-21 03:26:07.000000000 -0400
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2002 - 2003 Jeff Dike (jdike@addtoit.com)
+ nsyscalls++;
+ syscall = UPT_SYSCALL_NR(®s->regs);
+
-+ if((syscall >= NR_syscalls) || (syscall < 1))
++ if((syscall >= NR_syscalls) || (syscall < 0))
+ res = -ENOSYS;
+ else res = EXECUTE_SYSCALL(syscall, regs);
+
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/skas/trap_user.c um/arch/um/kernel/skas/trap_user.c
--- orig/arch/um/kernel/skas/trap_user.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/skas/trap_user.c 2004-01-21 01:17:05.000000000 -0500
-@@ -0,0 +1,66 @@
++++ um/arch/um/kernel/skas/trap_user.c 2003-12-14 11:17:37.000000000 -0500
+@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2002 - 2003 Jeff Dike (jdike@addtoit.com)
+ * Licensed under the GPL
+ struct skas_regs *r;
+ struct signal_info *info;
+ int save_errno = errno;
-+ int save_user;
+
+ r = &TASK_REGS(get_current())->skas;
-+ save_user = r->is_user;
+ r->is_user = 0;
+ r->fault_addr = SC_FAULT_ADDR(sc);
+ r->fault_type = SC_FAULT_TYPE(sc);
+ (*info->handler)(sig, (union uml_pt_regs *) r);
+
+ errno = save_errno;
-+ r->is_user = save_user;
+}
+
+extern int missed_ticks[];
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/skas/uaccess.c um/arch/um/kernel/skas/uaccess.c
--- orig/arch/um/kernel/skas/uaccess.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/skas/uaccess.c 2003-12-22 01:30:09.000000000 -0500
++++ um/arch/um/kernel/skas/uaccess.c 2003-11-11 11:11:26.000000000 -0500
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2002 - 2003 Jeff Dike (jdike@addtoit.com)
+
+static int strncpy_chunk_from_user(unsigned long from, int len, void *arg)
+{
-+ char **to_ptr = arg, *to = *to_ptr;
++ char **to_ptr = arg, *to = *to_ptr;
+ int n;
+
+ strncpy(to, (void *) from, len);
+ $(RM) -f mk_ptregs *.o *~
diff -Naur -X ../exclude-files orig/arch/um/kernel/skas/util/mk_ptregs.c um/arch/um/kernel/skas/util/mk_ptregs.c
--- orig/arch/um/kernel/skas/util/mk_ptregs.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/skas/util/mk_ptregs.c 2003-12-22 01:31:11.000000000 -0500
-@@ -0,0 +1,51 @@
-+#include <stdio.h>
++++ um/arch/um/kernel/skas/util/mk_ptregs.c 2003-10-21 03:26:07.000000000 -0400
+@@ -0,0 +1,50 @@
+#include <asm/ptrace.h>
+#include <asm/user.h>
+
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/syscall_kern.c um/arch/um/kernel/syscall_kern.c
--- orig/arch/um/kernel/syscall_kern.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/syscall_kern.c 2004-01-10 06:37:46.000000000 -0500
++++ um/arch/um/kernel/syscall_kern.c 2003-11-07 01:41:13.000000000 -0500
@@ -0,0 +1,343 @@
+/*
+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
+
+ error = do_pipe(fd);
+ if (!error) {
-+ if (copy_to_user(fildes, fd, sizeof(fd)))
++ if (copy_to_user(fildes, fd, sizeof(fd)))
+ error = -EFAULT;
+ }
+ return error;
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/syscall_user.c um/arch/um/kernel/syscall_user.c
--- orig/arch/um/kernel/syscall_user.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/syscall_user.c 2003-12-22 01:32:48.000000000 -0500
++++ um/arch/um/kernel/syscall_user.c 2003-10-21 03:26:07.000000000 -0400
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+int record_syscall_start(int syscall)
+{
+ int max, index;
-+
++
+ max = sizeof(syscall_record)/sizeof(syscall_record[0]);
+ index = next_syscall_index(max);
+
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/tempfile.c um/arch/um/kernel/tempfile.c
--- orig/arch/um/kernel/tempfile.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/tempfile.c 2003-12-22 01:33:38.000000000 -0500
++++ um/arch/um/kernel/tempfile.c 2003-10-21 03:26:07.000000000 -0400
@@ -0,0 +1,82 @@
-+/*
++/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+ */
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/time.c um/arch/um/kernel/time.c
--- orig/arch/um/kernel/time.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/time.c 2004-02-12 07:09:48.000000000 -0500
-@@ -0,0 +1,172 @@
++++ um/arch/um/kernel/time.c 2003-12-17 01:08:27.000000000 -0500
+@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+static unsigned long long get_host_hz(void)
+{
+ char mhzline[16], *end;
-+ unsigned long long mhz;
-+ int ret, mult, rest, len;
++ int ret, mult, mhz, rest, len;
+
+ ret = cpu_feature("cpu MHz", mhzline,
+ sizeof(mhzline) / sizeof(mhzline[0]));
+
+void time_init(void)
+{
-+ /* XXX This is to fill xtime with something real - otherwise by the
-+ * time /proc is mounted, no timers have fired, and xtime is still 0,
-+ * meaning it shows times of Jan 1 1970. The real fix is to figure
-+ * out why no timers have happened by then.
-+ */
-+ timer();
-+
+ host_hz = get_host_hz();
+ if(signal(SIGVTALRM, boot_timer_handler) == SIG_ERR)
+ panic("Couldn't set SIGVTALRM handler");
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/time_kern.c um/arch/um/kernel/time_kern.c
--- orig/arch/um/kernel/time_kern.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/time_kern.c 2004-02-14 06:51:31.000000000 -0500
++++ um/arch/um/kernel/time_kern.c 2003-12-17 01:07:51.000000000 -0500
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2000 Jeff Dike (jdike@karaya.com)
+{
+ unsigned long long ticks = 0;
+
-+ if(!timer_irq_inited){
++ if(!timer_irq_inited){
+ /* This is to ensure that ticks don't pile up when
+ * the timer handler is suspended */
+ first_tick = 0;
+ return;
+ }
-+
++
+ if(first_tick){
+#if defined(CONFIG_UML_REAL_TIME_CLOCK)
+ unsigned long long tsc;
-+ /* We've had 1 tick */
++ /* We've had 1 tick */
+ tsc = time_stamp();
+
+ delta += tsc - prev_tsc;
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/trap_kern.c um/arch/um/kernel/trap_kern.c
--- orig/arch/um/kernel/trap_kern.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/trap_kern.c 2003-12-22 22:48:41.000000000 -0500
++++ um/arch/um/kernel/trap_kern.c 2003-12-14 11:18:05.000000000 -0500
@@ -0,0 +1,220 @@
+/*
+ * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com)
+ pgd = pgd_offset(mm, page);
+ pmd = pmd_offset(pgd, page);
+ do {
-+ survive:
++ survive:
+ switch (handle_mm_fault(mm, vma, address, is_write)) {
+ case 1:
+ current->min_flt++;
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/trap_user.c um/arch/um/kernel/trap_user.c
--- orig/arch/um/kernel/trap_user.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/trap_user.c 2004-01-31 02:47:39.000000000 -0500
++++ um/arch/um/kernel/trap_user.c 2003-10-21 03:26:07.000000000 -0400
@@ -0,0 +1,138 @@
+/*
+ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
+
+void do_longjmp(void *b, int val)
+{
-+ sigjmp_buf *buf = b;
++ jmp_buf *buf = b;
+
+ siglongjmp(*buf, val);
+}
+clean :
diff -Naur -X ../exclude-files orig/arch/um/kernel/tt/mem.c um/arch/um/kernel/tt/mem.c
--- orig/arch/um/kernel/tt/mem.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/tt/mem.c 2004-01-31 02:38:28.000000000 -0500
++++ um/arch/um/kernel/tt/mem.c 2003-10-21 03:26:07.000000000 -0400
@@ -0,0 +1,51 @@
+/*
-+ * Copyright (C) 2002 - 2004 Jeff Dike (jdike@karaya.com)
++ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+ */
+
+ if(!jail || debug)
+ remap_data(UML_ROUND_DOWN(&_stext), UML_ROUND_UP(&_etext), 1);
+ remap_data(UML_ROUND_DOWN(&_sdata), UML_ROUND_UP(&_edata), 1);
-+ remap_data(UML_ROUND_DOWN(&__bss_start), UML_ROUND_UP(&_end), 1);
++ remap_data(UML_ROUND_DOWN(&__bss_start), UML_ROUND_UP(brk_start), 1);
+}
+
+#ifdef CONFIG_HOST_2G_2G
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/tt/process_kern.c um/arch/um/kernel/tt/process_kern.c
--- orig/arch/um/kernel/tt/process_kern.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/tt/process_kern.c 2004-01-31 02:39:08.000000000 -0500
-@@ -0,0 +1,535 @@
++++ um/arch/um/kernel/tt/process_kern.c 2003-10-21 03:26:07.000000000 -0400
+@@ -0,0 +1,537 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+{
+ current->thread.request.op = OP_REBOOT;
+ os_usr1_process(os_getpid());
++ os_kill_process(os_getpid(), 0);
+}
+
+void halt_tt(void)
+{
+ current->thread.request.op = OP_HALT;
+ os_usr1_process(os_getpid());
++ os_kill_process(os_getpid(), 0);
+}
+
+void kill_off_processes_tt(void)
+ protect_memory(start, end - start, 1, w, 1, 1);
+
+ start = (unsigned long) UML_ROUND_DOWN(&__bss_start);
-+ end = (unsigned long) UML_ROUND_UP(&_end);
++ end = (unsigned long) UML_ROUND_UP(brk_start);
+ protect_memory(start, end - start, 1, w, 1, 1);
+
+ mprotect_kernel_vm(w);
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/tt/ptproxy/wait.c um/arch/um/kernel/tt/ptproxy/wait.c
--- orig/arch/um/kernel/tt/ptproxy/wait.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/tt/ptproxy/wait.c 2004-01-17 05:27:18.000000000 -0500
++++ um/arch/um/kernel/tt/ptproxy/wait.c 2003-10-21 03:26:07.000000000 -0400
@@ -0,0 +1,88 @@
+/**********************************************************************
+wait.c
+ pid = debugger->pid;
+
+ ip = ptrace(PTRACE_PEEKUSER, pid, PT_IP_OFFSET, 0);
-+ IP_RESTART_SYSCALL(ip);
++ ip = IP_RESTART_SYSCALL(ip);
+
+ if(ptrace(PTRACE_POKEUSER, pid, PT_IP_OFFSET, ip) < 0)
+ tracer_panic("real_wait_return : Failed to restart system "
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/tt/uaccess_user.c um/arch/um/kernel/tt/uaccess_user.c
--- orig/arch/um/kernel/tt/uaccess_user.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/tt/uaccess_user.c 2004-01-31 02:48:29.000000000 -0500
++++ um/arch/um/kernel/tt/uaccess_user.c 2003-11-12 08:51:13.000000000 -0500
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2001 Chris Emerson (cemerson@chiark.greenend.org.uk)
+ struct tt_regs save = TASK_REGS(get_current())->tt;
+ int ret;
+ unsigned long *faddrp = (unsigned long *)fault_addr;
-+ sigjmp_buf jbuf;
++ jmp_buf jbuf;
+
+ *fault_catcher = &jbuf;
+ if(sigsetjmp(jbuf, 1) == 0)
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/uaccess_user.c um/arch/um/kernel/uaccess_user.c
--- orig/arch/um/kernel/uaccess_user.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/uaccess_user.c 2004-01-31 02:48:08.000000000 -0500
++++ um/arch/um/kernel/uaccess_user.c 2003-10-21 03:26:07.000000000 -0400
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2001 Chris Emerson (cemerson@chiark.greenend.org.uk)
+{
+ unsigned long *faddrp = (unsigned long *) fault_addr, ret;
+
-+ sigjmp_buf jbuf;
++ jmp_buf jbuf;
+ *fault_catcher = &jbuf;
+ if(sigsetjmp(jbuf, 1) == 0){
+ (*op)(to, from, n);
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/um_arch.c um/arch/um/kernel/um_arch.c
--- orig/arch/um/kernel/um_arch.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/um_arch.c 2004-01-10 00:11:09.000000000 -0500
-@@ -0,0 +1,431 @@
++++ um/arch/um/kernel/um_arch.c 2003-12-14 11:19:59.000000000 -0500
+@@ -0,0 +1,432 @@
+/*
+ * Copyright (C) 2000, 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+ arch_check_bugs();
+ check_ptrace();
+ check_sigio();
++ check_devanon();
+}
+
+/*
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/umid.c um/arch/um/kernel/umid.c
--- orig/arch/um/kernel/umid.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/umid.c 2004-01-26 10:13:01.000000000 -0500
-@@ -0,0 +1,327 @@
++++ um/arch/um/kernel/umid.c 2003-10-21 03:26:07.000000000 -0400
+@@ -0,0 +1,324 @@
+/*
+ * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+ printf("Failed to malloc uml_dir - error = %d\n",
+ errno);
+ uml_dir = name;
-+ /* Return 0 here because do_initcalls doesn't look at
-+ * the return value.
-+ */
+ return(0);
+ }
+ sprintf(uml_dir, "%s/", name);
+ }
+ else uml_dir = name;
-+ return(0);
++ return 0;
+}
+
+static int __init make_uml_dir(void)
+ */
diff -Naur -X ../exclude-files orig/arch/um/kernel/user_syms.c um/arch/um/kernel/user_syms.c
--- orig/arch/um/kernel/user_syms.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/kernel/user_syms.c 2004-01-23 00:44:09.000000000 -0500
-@@ -0,0 +1,118 @@
++++ um/arch/um/kernel/user_syms.c 2003-10-21 03:26:07.000000000 -0400
+@@ -0,0 +1,116 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <dirent.h>
+
+EXPORT_SYMBOL(memset);
+EXPORT_SYMBOL(strstr);
-+EXPORT_SYMBOL(strlen);
-+EXPORT_SYMBOL(printf);
+
+EXPORT_SYMBOL(find_iomem);
diff -Naur -X ../exclude-files orig/arch/um/kernel/user_util.c um/arch/um/kernel/user_util.c
+}
diff -Naur -X ../exclude-files orig/arch/um/main.c um/arch/um/main.c
--- orig/arch/um/main.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/main.c 2004-01-29 00:48:42.000000000 -0500
-@@ -0,0 +1,199 @@
++++ um/arch/um/main.c 2003-10-21 03:26:07.000000000 -0400
+@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+ /* Reboot */
+ if(ret){
+ printf("\n");
-+
+ execvp(new_argv[0], new_argv);
+ perror("Failed to exec kernel");
+ ret = 1;
+ */
diff -Naur -X ../exclude-files orig/arch/um/Makefile um/arch/um/Makefile
--- orig/arch/um/Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/Makefile 2004-02-14 06:26:41.000000000 -0500
++++ um/arch/um/Makefile 2003-12-17 03:02:28.000000000 -0500
@@ -0,0 +1,174 @@
+#
+# Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+ -DELF_FORMAT=$(ELF_FORMAT) $(M4_MODE_TT) \
+ -DKERNEL_STACK_SIZE=$$(( 4096 * $$pages )) $< > $@
+
-+SYMLINK_HEADERS = archparam.h system.h sigcontext.h processor.h ptrace.h \
-+ arch-signal.h
-+SYMLINK_HEADERS := $(foreach header,$(SYMLINK_HEADERS),include/asm-um/$(header))
++SYMLINK_HEADERS = include/asm-um/archparam.h include/asm-um/system.h \
++ include/asm-um/sigcontext.h include/asm-um/processor.h \
++ include/asm-um/ptrace.h include/asm-um/arch-signal.h
+
+ARCH_SYMLINKS = include/asm-um/arch arch/um/include/sysdep arch/um/os \
+ $(SYMLINK_HEADERS) $(ARCH_DIR)/include/uml-config.h
+ */
diff -Naur -X ../exclude-files orig/arch/um/os-Linux/file.c um/arch/um/os-Linux/file.c
--- orig/arch/um/os-Linux/file.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/os-Linux/file.c 2004-01-10 06:52:24.000000000 -0500
-@@ -0,0 +1,668 @@
++++ um/arch/um/os-Linux/file.c 2003-11-30 20:18:39.000000000 -0500
+@@ -0,0 +1,669 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+ sencap = 0;
+ if(ioctl(fd, SIOCSIFENCAP, &sencap) < 0){
+ printk("Failed to set slip encapsulation - "
-+ "errno = %d\n", errno);
++ "errno = %d\n", errno);
+ return(-errno);
+ }
+
+ if(fcntl(fd, F_SETOWN, pid) < 0){
+ int save_errno = errno;
+
-+ if(fcntl(fd, F_GETOWN, 0) != pid)
++ if(fcntl(fd, F_GETOWN, 0) != pid){
+ return(-save_errno);
-+ }
++ }
++ }
+
+ return(0);
+}
+ return(-errno);
+ }
+
-+ if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) ||
-+ (fcntl(master, F_SETOWN, os_getpid()) < 0)){
-+ printk("fcntl F_SETFL or F_SETOWN failed, errno = %d\n", errno);
++ if((fcntl(master, F_SETFL, flags | O_NONBLOCK | O_ASYNC) < 0) ||
++ (fcntl(master, F_SETOWN, os_getpid()) < 0)){
++ printk("fcntl F_SETFL or F_SETOWN failed, errno = %d\n", errno);
+ return(-errno);
+ }
+
-+ if((fcntl(slave, F_SETFL, flags | O_NONBLOCK) < 0)){
-+ printk("fcntl F_SETFL failed, errno = %d\n", errno);
++ if((fcntl(slave, F_SETFL, flags | O_NONBLOCK) < 0)){
++ printk("fcntl F_SETFL failed, errno = %d\n", errno);
+ return(-errno);
+ }
+
+ *modtime = buf.ust_mtime;
+ return(0);
+}
-+
++
+int os_get_exec_close(int fd, int* close_on_exec)
+{
+ int ret;
+ err = -errno;
+ goto out;
+ }
-+
++
+ printk("F_SETLK failed, file already locked by pid %d\n", lock.l_pid);
+ err = save;
+ out:
+archmrproper:
diff -Naur -X ../exclude-files orig/arch/um/os-Linux/process.c um/arch/um/os-Linux/process.c
--- orig/arch/um/os-Linux/process.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/os-Linux/process.c 2004-01-10 06:53:44.000000000 -0500
++++ um/arch/um/os-Linux/process.c 2003-12-18 03:08:34.000000000 -0500
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@addtoit.com)
+ int err;
+
+ err = munmap(addr, len);
-+ if(err < 0)
++ if(err < 0)
+ return(-errno);
+ return(0);
+}
+ */
diff -Naur -X ../exclude-files orig/arch/um/sys-i386/bugs.c um/arch/um/sys-i386/bugs.c
--- orig/arch/um/sys-i386/bugs.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/sys-i386/bugs.c 2004-01-21 22:42:39.000000000 -0500
-@@ -0,0 +1,222 @@
++++ um/arch/um/sys-i386/bugs.c 2003-11-15 02:54:48.000000000 -0500
+@@ -0,0 +1,221 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+#define MAXTOKEN 64
+
+/* Set during early boot */
-+int host_has_cmov = 1;
-+int host_has_xmm = 0;
++int cpu_has_cmov = 1;
++int cpu_has_xmm = 0;
+
+static char token(int fd, char *buf, int len, char stop)
+{
+ return;
+ }
+ if(check_cpu_flag("cmov", &have_it))
-+ host_has_cmov = have_it;
++ cpu_has_cmov = have_it;
+ if(check_cpu_flag("xmm", &have_it))
-+ host_has_xmm = have_it;
++ cpu_has_xmm = have_it;
+}
+
+int arch_handle_signal(int sig, union uml_pt_regs *regs)
+{
-+ unsigned char tmp[2];
++ unsigned long ip;
+
+ /* This is testing for a cmov (0x0f 0x4x) instruction causing a
+ * SIGILL in init.
+ */
+ if((sig != SIGILL) || (TASK_PID(get_current()) != 1)) return(0);
+
-+ if (copy_from_user_proc(tmp, (void *) UPT_IP(regs), 2))
-+ panic("SIGILL in init, could not read instructions!\n");
-+ if((tmp[0] != 0x0f) || ((tmp[1] & 0xf0) != 0x40))
++ ip = UPT_IP(regs);
++ if((*((char *) ip) != 0x0f) || ((*((char *) (ip + 1)) & 0xf0) != 0x40))
+ return(0);
+
-+ if(host_has_cmov == 0)
++ if(cpu_has_cmov == 0)
+ panic("SIGILL caused by cmov, which this processor doesn't "
+ "implement, boot a filesystem compiled for older "
+ "processors");
-+ else if(host_has_cmov == 1)
++ else if(cpu_has_cmov == 1)
+ panic("SIGILL caused by cmov, which this processor claims to "
+ "implement");
-+ else if(host_has_cmov == -1)
++ else if(cpu_has_cmov == -1)
+ panic("SIGILL caused by cmov, couldn't tell if this processor "
+ "implements it, boot a filesystem compiled for older "
+ "processors");
-+ else panic("Bad value for host_has_cmov (%d)", host_has_cmov);
++ else panic("Bad value for cpu_has_cmov (%d)", cpu_has_cmov);
+ return(0);
+}
+
+EXPORT_SYMBOL(csum_partial_copy_to);
diff -Naur -X ../exclude-files orig/arch/um/sys-i386/ldt.c um/arch/um/sys-i386/ldt.c
--- orig/arch/um/sys-i386/ldt.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/sys-i386/ldt.c 2004-01-19 04:01:11.000000000 -0500
-@@ -0,0 +1,94 @@
++++ um/arch/um/sys-i386/ldt.c 2003-10-21 03:26:07.000000000 -0400
+@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com)
+ * Licensed under the GPL
+#ifdef CONFIG_MODE_TT
+extern int modify_ldt(int func, void *ptr, unsigned long bytecount);
+
-+/* XXX this needs copy_to_user and copy_from_user */
-+
+int sys_modify_ldt_tt(int func, void *ptr, unsigned long bytecount)
+{
+ if(verify_area(VERIFY_READ, ptr, bytecount)) return(-EFAULT);
+archmrproper : clean
diff -Naur -X ../exclude-files orig/arch/um/util/mk_constants_kern.c um/arch/um/util/mk_constants_kern.c
--- orig/arch/um/util/mk_constants_kern.c 1969-12-31 19:00:00.000000000 -0500
-+++ um/arch/um/util/mk_constants_kern.c 2004-01-10 06:54:51.000000000 -0500
-@@ -0,0 +1,25 @@
++++ um/arch/um/util/mk_constants_kern.c 2003-10-21 03:26:07.000000000 -0400
+@@ -0,0 +1,24 @@
+#include "linux/kernel.h"
+#include "linux/stringify.h"
+#include "asm/page.h"
+{
+ print_head();
+ print_constant_int("UM_KERN_PAGE_SIZE", PAGE_SIZE);
-+
+ print_constant_str("UM_KERN_EMERG", KERN_EMERG);
+ print_constant_str("UM_KERN_ALERT", KERN_ALERT);
+ print_constant_str("UM_KERN_CRIT", KERN_CRIT);
KEYBD =
diff -Naur -X ../exclude-files orig/drivers/char/mem.c um/drivers/char/mem.c
--- orig/drivers/char/mem.c 2003-12-16 22:16:27.000000000 -0500
-+++ um/drivers/char/mem.c 2004-01-05 11:23:32.000000000 -0500
++++ um/drivers/char/mem.c 2003-12-16 22:17:25.000000000 -0500
@@ -220,7 +220,8 @@
ssize_t read = 0;
ssize_t virtr = 0;
inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
inode->i_op = &bad_inode_ops;
diff -Naur -X ../exclude-files orig/include/asm-i386/hardirq.h um/include/asm-i386/hardirq.h
---- orig/include/asm-i386/hardirq.h 2004-01-11 22:46:12.000000000 -0500
-+++ um/include/asm-i386/hardirq.h 2004-02-14 06:28:59.000000000 -0500
+--- orig/include/asm-i386/hardirq.h 2003-12-16 22:16:35.000000000 -0500
++++ um/include/asm-i386/hardirq.h 2003-12-17 02:16:13.000000000 -0500
@@ -4,6 +4,7 @@
#include <linux/config.h>
#include <linux/threads.h>
+ */
diff -Naur -X ../exclude-files orig/include/asm-um/atomic.h um/include/asm-um/atomic.h
--- orig/include/asm-um/atomic.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/atomic.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/atomic.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,6 @@
+#ifndef __UM_ATOMIC_H
+#define __UM_ATOMIC_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/bitops.h um/include/asm-um/bitops.h
--- orig/include/asm-um/bitops.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/bitops.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/bitops.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,6 @@
+#ifndef __UM_BITOPS_H
+#define __UM_BITOPS_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/byteorder.h um/include/asm-um/byteorder.h
--- orig/include/asm-um/byteorder.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/byteorder.h 2004-01-16 03:32:58.000000000 -0500
++++ um/include/asm-um/byteorder.h 2003-12-16 22:26:55.000000000 -0500
@@ -0,0 +1,6 @@
+#ifndef __UM_BYTEORDER_H
+#define __UM_BYTEORDER_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/current.h um/include/asm-um/current.h
--- orig/include/asm-um/current.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/current.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/current.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2000 Jeff Dike (jdike@karaya.com)
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/dma.h um/include/asm-um/dma.h
--- orig/include/asm-um/dma.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/dma.h 2004-01-16 03:32:59.000000000 -0500
++++ um/include/asm-um/dma.h 2003-12-15 00:26:39.000000000 -0500
@@ -0,0 +1,10 @@
+#ifndef __UM_DMA_H
+#define __UM_DMA_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/fixmap.h um/include/asm-um/fixmap.h
--- orig/include/asm-um/fixmap.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/fixmap.h 2004-02-14 06:29:00.000000000 -0500
++++ um/include/asm-um/fixmap.h 2003-12-17 02:16:14.000000000 -0500
@@ -0,0 +1,89 @@
+#ifndef __UM_FIXMAP_H
+#define __UM_FIXMAP_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/hardirq.h um/include/asm-um/hardirq.h
--- orig/include/asm-um/hardirq.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/hardirq.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/hardirq.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,6 @@
+#ifndef __UM_HARDIRQ_H
+#define __UM_HARDIRQ_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/highmem.h um/include/asm-um/highmem.h
--- orig/include/asm-um/highmem.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/highmem.h 2004-02-14 06:29:00.000000000 -0500
++++ um/include/asm-um/highmem.h 2003-12-17 02:16:14.000000000 -0500
@@ -0,0 +1,12 @@
+#ifndef __UM_HIGHMEM_H
+#define __UM_HIGHMEM_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/ide.h um/include/asm-um/ide.h
--- orig/include/asm-um/ide.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/ide.h 2004-01-16 23:40:52.000000000 -0500
++++ um/include/asm-um/ide.h 2003-12-15 00:29:05.000000000 -0500
@@ -0,0 +1,6 @@
+#ifndef __UM_IDE_H
+#define __UM_IDE_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/io.h um/include/asm-um/io.h
--- orig/include/asm-um/io.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/io.h 2004-01-16 03:32:59.000000000 -0500
++++ um/include/asm-um/io.h 2003-12-15 00:26:39.000000000 -0500
@@ -0,0 +1,25 @@
+#ifndef __UM_IO_H
+#define __UM_IO_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/mmu_context.h um/include/asm-um/mmu_context.h
--- orig/include/asm-um/mmu_context.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/mmu_context.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/mmu_context.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/mtrr.h um/include/asm-um/mtrr.h
--- orig/include/asm-um/mtrr.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/mtrr.h 2004-02-12 05:46:29.000000000 -0500
++++ um/include/asm-um/mtrr.h 2003-12-17 10:48:33.000000000 -0500
@@ -0,0 +1,6 @@
+#ifndef __UM_MTRR_H
+#define __UM_MTRR_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/page.h um/include/asm-um/page.h
--- orig/include/asm-um/page.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/page.h 2004-01-16 03:32:58.000000000 -0500
++++ um/include/asm-um/page.h 2003-12-15 00:26:37.000000000 -0500
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
+#define PAGE_OFFSET_RAW (uml_physmem)
diff -Naur -X ../exclude-files orig/include/asm-um/param.h um/include/asm-um/param.h
--- orig/include/asm-um/param.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/param.h 2004-02-13 02:26:52.000000000 -0500
-@@ -0,0 +1,22 @@
++++ um/include/asm-um/param.h 2003-10-21 03:26:07.000000000 -0400
+@@ -0,0 +1,24 @@
+#ifndef _UM_PARAM_H
+#define _UM_PARAM_H
+
-+#define HZ 100
++#ifndef HZ
++#define HZ 52
++#endif
+
+#define EXEC_PAGESIZE 4096
+
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/pgalloc.h um/include/asm-um/pgalloc.h
--- orig/include/asm-um/pgalloc.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/pgalloc.h 2004-02-14 06:29:00.000000000 -0500
++++ um/include/asm-um/pgalloc.h 2003-12-17 02:16:14.000000000 -0500
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
+ */
diff -Naur -X ../exclude-files orig/include/asm-um/pgtable.h um/include/asm-um/pgtable.h
--- orig/include/asm-um/pgtable.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/pgtable.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/pgtable.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,413 @@
+/*
+ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/processor-generic.h um/include/asm-um/processor-generic.h
--- orig/include/asm-um/processor-generic.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/processor-generic.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/processor-generic.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
+ */
diff -Naur -X ../exclude-files orig/include/asm-um/processor-i386.h um/include/asm-um/processor-i386.h
--- orig/include/asm-um/processor-i386.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/processor-i386.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/processor-i386.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/ptrace-generic.h um/include/asm-um/ptrace-generic.h
--- orig/include/asm-um/ptrace-generic.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/ptrace-generic.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/ptrace-generic.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
+ */
diff -Naur -X ../exclude-files orig/include/asm-um/ptrace-i386.h um/include/asm-um/ptrace-i386.h
--- orig/include/asm-um/ptrace-i386.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/ptrace-i386.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/ptrace-i386.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/rwsem.h um/include/asm-um/rwsem.h
--- orig/include/asm-um/rwsem.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/rwsem.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/rwsem.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,10 @@
+#ifndef __UM_RWSEM_H__
+#define __UM_RWSEM_H__
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/semaphore.h um/include/asm-um/semaphore.h
--- orig/include/asm-um/semaphore.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/semaphore.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/semaphore.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,6 @@
+#ifndef __UM_SEMAPHORE_H
+#define __UM_SEMAPHORE_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/siginfo.h um/include/asm-um/siginfo.h
--- orig/include/asm-um/siginfo.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/siginfo.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/siginfo.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,6 @@
+#ifndef __UM_SIGINFO_H
+#define __UM_SIGINFO_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/signal.h um/include/asm-um/signal.h
--- orig/include/asm-um/signal.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/signal.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/signal.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+ */
diff -Naur -X ../exclude-files orig/include/asm-um/smp.h um/include/asm-um/smp.h
--- orig/include/asm-um/smp.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/smp.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/smp.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,19 @@
+#ifndef __UM_SMP_H
+#define __UM_SMP_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/smplock.h um/include/asm-um/smplock.h
--- orig/include/asm-um/smplock.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/smplock.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/smplock.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,6 @@
+#ifndef __UM_SMPLOCK_H
+#define __UM_SMPLOCK_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/softirq.h um/include/asm-um/softirq.h
--- orig/include/asm-um/softirq.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/softirq.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/softirq.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,13 @@
+#ifndef __UM_SOFTIRQ_H
+#define __UM_SOFTIRQ_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/spinlock.h um/include/asm-um/spinlock.h
--- orig/include/asm-um/spinlock.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/spinlock.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/spinlock.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,10 @@
+#ifndef __UM_SPINLOCK_H
+#define __UM_SPINLOCK_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/statfs.h um/include/asm-um/statfs.h
--- orig/include/asm-um/statfs.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/statfs.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/statfs.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,6 @@
+#ifndef _UM_STATFS_H
+#define _UM_STATFS_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/string.h um/include/asm-um/string.h
--- orig/include/asm-um/string.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/string.h 2004-01-16 03:32:58.000000000 -0500
++++ um/include/asm-um/string.h 2003-12-16 22:26:55.000000000 -0500
@@ -0,0 +1,7 @@
+#ifndef __UM_STRING_H
+#define __UM_STRING_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/system-generic.h um/include/asm-um/system-generic.h
--- orig/include/asm-um/system-generic.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/system-generic.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/system-generic.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,50 @@
+#ifndef __UM_SYSTEM_GENERIC_H
+#define __UM_SYSTEM_GENERIC_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/system-i386.h um/include/asm-um/system-i386.h
--- orig/include/asm-um/system-i386.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/system-i386.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/system-i386.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,39 @@
+#ifndef __UM_SYSTEM_I386_H
+#define __UM_SYSTEM_I386_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/timex.h um/include/asm-um/timex.h
--- orig/include/asm-um/timex.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/timex.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/timex.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,18 @@
+#ifndef __UM_TIMEX_H
+#define __UM_TIMEX_H
+#include <asm-generic/tlb.h>
diff -Naur -X ../exclude-files orig/include/asm-um/types.h um/include/asm-um/types.h
--- orig/include/asm-um/types.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/types.h 2004-01-16 03:32:58.000000000 -0500
++++ um/include/asm-um/types.h 2003-12-15 00:26:37.000000000 -0500
@@ -0,0 +1,6 @@
+#ifndef __UM_TYPES_H
+#define __UM_TYPES_H
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/uaccess.h um/include/asm-um/uaccess.h
--- orig/include/asm-um/uaccess.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/uaccess.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/asm-um/uaccess.h 2003-12-17 02:16:13.000000000 -0500
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
+#endif
diff -Naur -X ../exclude-files orig/include/asm-um/unistd.h um/include/asm-um/unistd.h
--- orig/include/asm-um/unistd.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/unistd.h 2004-02-14 06:29:00.000000000 -0500
++++ um/include/asm-um/unistd.h 2003-12-17 02:16:14.000000000 -0500
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com)
+ */
diff -Naur -X ../exclude-files orig/include/asm-um/user.h um/include/asm-um/user.h
--- orig/include/asm-um/user.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/asm-um/user.h 2004-02-14 06:31:38.000000000 -0500
++++ um/include/asm-um/user.h 2003-12-17 02:18:31.000000000 -0500
@@ -0,0 +1,6 @@
+#ifndef __UM_USER_H
+#define __UM_USER_H
+
+#endif
diff -Naur -X ../exclude-files orig/include/linux/blk.h um/include/linux/blk.h
---- orig/include/linux/blk.h 2004-01-11 22:46:30.000000000 -0500
-+++ um/include/linux/blk.h 2004-02-14 06:29:18.000000000 -0500
+--- orig/include/linux/blk.h 2002-09-15 12:13:19.000000000 -0400
++++ um/include/linux/blk.h 2003-12-17 02:16:30.000000000 -0500
@@ -320,6 +320,24 @@
#define DEVICE_REQUEST do_ida_request
#define DEVICE_NR(device) (MINOR(device) >> 4)
/* provide DEVICE_xxx defaults, if not explicitly defined
diff -Naur -X ../exclude-files orig/include/linux/fs.h um/include/linux/fs.h
--- orig/include/linux/fs.h 2003-12-16 22:16:36.000000000 -0500
-+++ um/include/linux/fs.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/linux/fs.h 2003-12-17 02:16:13.000000000 -0500
@@ -320,6 +320,8 @@
#include <linux/ncp_fs_i.h>
#include <linux/proc_fs_i.h>
+ * End:
+ */
diff -Naur -X ../exclude-files orig/include/linux/kernel.h um/include/linux/kernel.h
---- orig/include/linux/kernel.h 2004-01-11 22:46:12.000000000 -0500
-+++ um/include/linux/kernel.h 2004-02-14 06:28:59.000000000 -0500
+--- orig/include/linux/kernel.h 2003-02-27 13:04:27.000000000 -0500
++++ um/include/linux/kernel.h 2003-12-17 02:16:13.000000000 -0500
@@ -49,7 +49,7 @@
# define ATTRIB_NORET __attribute__((noreturn))
# define NORET_AND noreturn,
#else
#define FASTCALL(x) x
diff -Naur -X ../exclude-files orig/include/linux/kernel_stat.h um/include/linux/kernel_stat.h
---- orig/include/linux/kernel_stat.h 2004-01-11 22:46:12.000000000 -0500
-+++ um/include/linux/kernel_stat.h 2004-02-14 06:28:59.000000000 -0500
+--- orig/include/linux/kernel_stat.h 2003-08-29 17:26:25.000000000 -0400
++++ um/include/linux/kernel_stat.h 2003-12-17 02:16:13.000000000 -0500
@@ -12,7 +12,7 @@
* used by rstatd/perfmeter
*/
struct kernel_stat {
diff -Naur -X ../exclude-files orig/include/linux/mm.h um/include/linux/mm.h
--- orig/include/linux/mm.h 2003-12-16 22:16:36.000000000 -0500
-+++ um/include/linux/mm.h 2004-02-14 06:28:59.000000000 -0500
++++ um/include/linux/mm.h 2003-12-17 02:16:13.000000000 -0500
@@ -438,6 +438,18 @@
extern struct page * FASTCALL(__alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_t *zonelist));
extern struct page * alloc_pages_node(int nid, unsigned int gfp_mask, unsigned int order);
}
diff -Naur -X ../exclude-files orig/include/linux/proc_mm.h um/include/linux/proc_mm.h
--- orig/include/linux/proc_mm.h 1969-12-31 19:00:00.000000000 -0500
-+++ um/include/linux/proc_mm.h 2004-02-14 06:30:22.000000000 -0500
++++ um/include/linux/proc_mm.h 2003-12-17 02:17:30.000000000 -0500
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
unsigned long flags;
struct list_head list;
diff -Naur -X ../exclude-files orig/include/linux/tty.h um/include/linux/tty.h
---- orig/include/linux/tty.h 2004-01-11 22:46:12.000000000 -0500
-+++ um/include/linux/tty.h 2004-02-14 06:28:59.000000000 -0500
+--- orig/include/linux/tty.h 2003-08-29 17:26:26.000000000 -0400
++++ um/include/linux/tty.h 2003-12-17 02:16:13.000000000 -0500
@@ -309,6 +309,9 @@
spinlock_t read_lock;
/* If the tty has a pending do_SAK, queue it here - akpm */
USB "USBNET" DRIVER
P: David Brownell
diff -Naur -X ../exclude-files orig/Makefile um/Makefile
---- orig/Makefile 2004-02-14 06:26:12.000000000 -0500
-+++ um/Makefile 2004-02-14 06:26:19.000000000 -0500
+--- orig/Makefile 2003-12-16 22:16:23.000000000 -0500
++++ um/Makefile 2003-12-16 22:17:22.000000000 -0500
@@ -5,7 +5,15 @@
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)