Commit 2ff1ae4e authored by Linus Torvalds's avatar Linus Torvalds

Import 1.3.49

parent 97d32f33
......@@ -483,6 +483,14 @@ S: Hoefbladhof 27
S: 2215 DV Voorhout
S: The Netherlands
N: Karl Keyte
E: kkeyte@koft.rhein-main.de
E: kkeyte@esoc.esa.de
D: Disk usage statistics and modifications to line printer driver
S: Erbacher Strasse 6
S: D-64283 Darmstadt
S: Germany
N: Olaf Kirch
E: okir@monad.swb.de
D: Author of the Linux Network Administrators' Guide
......
This diff is collapsed.
VERSION = 1
PATCHLEVEL = 3
SUBLEVEL = 48
SUBLEVEL = 49
ARCH = i386
......
......@@ -175,7 +175,7 @@ void setup_arch(char **cmdline_p,
static const char * i486model(unsigned int nr)
{
static const char *model[] = {
"0", "DX","SX","DX/2","4","SX/2","6","DX/2-WB","DX/4"
"0", "DX","SX","DX/2","4","SX/2","6","DX/2-WB","DX/4","DX/4-WB"
};
if (nr < sizeof(model)/sizeof(char *))
return model[nr];
......
......@@ -27,6 +27,7 @@
#include <linux/delay.h>
#include <asm/i82489.h>
#include <linux/smp.h>
#include <asm/pgtable.h>
#include <asm/bitops.h>
#include <asm/smp.h>
......
// 950913: note -- I will upload the new version 1.9a to ftp.ucsd.edu
// as soon as possible...
//
// ******
// ****** The driver has a n e w MAJOR number (34) now! ******
// ******
//
// please remake /dev/sc*:
//
// mknod /dev/scc0 c 34 0
// mknod /dev/scc1 c 34 1
// mknod /dev/scc2 c 34 2
// mknod /dev/scc3 c 34 3
//
// (and so on...)
//
// If you want to use the old device naming scheme use:
//
// ln -f /dev/scc0 /dev/sc1
// ln -f /dev/scc1 /dev/sc2
// ln -f /dev/scc2 /dev/sc3
// ln -f /dev/scc3 /dev/sc4
//
// (you get the idea...)
//
// -dl1bke-
You will find subset of the documentation in
......@@ -33,11 +6,11 @@ You will find subset of the documentation in
To use this driver you MUST have the full package from
ftp.ucsd.edu:/hamradio/packet/tcpip/incoming/z8530drv-1.9a.dl1bke.tar.gz
ftp.ucsd.edu:/hamradio/packet/tcpip/incoming/z8530drv-2.01.dl1bke.real.tar.gz
[
if you can't find it there, try:
.../tcpip/linux/z8530drv-1.9a.dl1bke.tar.gz
.../tcpip/linux/z8530drv-2.01.dl1bke.tar.gz
]
......
This diff is collapsed.
#include <linux/scc.h>
/********* CONFIGURATION PARAMATERES; PLEASE CHANGE THIS TO YOUR OWN SITUATION **********/
/* SCC hardware parameters */
/* use the following board types:
*
* PA0HZP OptoSCC (PA0HZP)
* EAGLE EAGLE
* PC100 PC100
* PRIMUS PRIMUS-PC (DG9BL)
* DRSI DRSI PC*Packet
* BAYCOM BayCom (U)SCC
*
*/
int Nchips = 2 ; /* number of chips */
io_port Vector_Latch = 0 ; /* addr. of INTACK-Latch (0 for poll mode) */
int Ivec = 7 ; /* interrupt vector */
long Clock = 4915200 ; /* frequency of the scc clock */
char Board = BAYCOM ; /* what type of SCC card do you use? */
int Option = 0 ; /* command for extra hardware */
io_port Special_Port = 0 ; /* port address for special hardware */
/* (for EAGLE, PC100, PRIMUS, DRSI) */
/* ^ never remove the semicolon !! */
/* Channel A B Chip */
/* ============ ======== */
/* Control ports: */
io_port SCC_ctrl[MAXSCC * 2] = {0x304, 0x305, /* ...one... */
0x306, 0x307, /* ...two... */
0, 0, /* ...three... */
0, 0}; /* ...four... */
/* Data ports: */
io_port SCC_data[MAXSCC * 2] = {0x300, 0x301, /* ...one... */
0x302, 0x303, /* ...two... */
0, 0, /* ...three... */
0, 0}; /* ...four... */
/* set to '1' if you have and want ESCC chip (8580/85180/85280) support */
/* Chip */
/* ======== */
int SCC_Enhanced[MAXSCC] = {0, /* ...one... */
0, /* ...two... */
0, /* ...three... */
0}; /* ...four... */
/* some useful #defines. You might need them or not */
#define VERBOSE_BOOTMSG 1
#undef SCC_DELAY /* perhaps a 486DX2 is a *bit* too fast */
#undef SCC_LDELAY /* slow it even a bit more down */
#undef DONT_CHECK /* don't look if the SCCs you specified are available */
#define DO_FAST_RX /* experimental timer routine called immediateley */
/* after every received frame */
/* The external clocking, nrz and fullduplex divider configuration is gone */
/* you can set these parameters in /etc/z8530drv.rc and initialize the */
/* driver with sccinit */
......@@ -475,6 +475,7 @@ el2_get_8390_hdr(struct device *dev, struct e8390_pkt_hdr *hdr, int ring_page)
{
unsigned int i;
unsigned long hdr_start = dev->mem_start + ((ring_page - EL2_MB1_START_PG)<<8);
unsigned long fifo_watchdog;
if (dev->mem_start) { /* Use the shared memory. */
#ifdef notdef
......@@ -492,7 +493,15 @@ el2_get_8390_hdr(struct device *dev, struct e8390_pkt_hdr *hdr, int ring_page)
outb_p((ei_status.interface_num == 0 ? ECNTRL_THIN : ECNTRL_AUI) | ECNTRL_INPUT
| ECNTRL_START, E33G_CNTRL);
/* Header is less than 8 bytes, so we can ignore the FIFO. */
/* Header is < 8 bytes, so only check the FIFO at the beginning. */
fifo_watchdog = jiffies;
while ((inb(E33G_STATUS) & ESTAT_DPRDY) == 0) {
if (jiffies - fifo_watchdog > 2*HZ/100) {
printk("%s: FIFO blocked in el2_get_8390_hdr.\n", dev->name);
break;
}
}
for(i = 0; i < sizeof(struct e8390_pkt_hdr); i++)
((char *)(hdr))[i] = inb_p(E33G_FIFOH);
......
......@@ -10,7 +10,7 @@
* be here without 3C505 technical reference provided by
* 3Com.
*
* Version: @(#)3c505.c 0.8.3 12-Nov-95
* Version: @(#)3c505.c 0.8.4 17-Dec-95
*
* Authors: Linux 3c505 device driver by
* Craig Southeren, <craigs@ineluki.apana.org.au>
......@@ -103,7 +103,7 @@ static int elp_debug = 0;
* 3 = messages when interrupts received
*/
#define ELP_VERSION "0.8.3"
#define ELP_VERSION "0.8.4"
/*****************************************************************
*
......@@ -1284,9 +1284,13 @@ elp_sense (struct device * dev)
int addr=dev->base_addr;
const char *name=dev->name;
long flags;
byte orig_HCR, orig_HSR;
byte orig_HCR=inb_control(addr),
orig_HSR=inb_status(addr);
if (check_region(addr, 0xf))
return -1;
orig_HCR=inb_control(addr);
orig_HSR=inb_status(addr);
if (elp_debug > 0)
printk(search_msg, name, addr);
......@@ -1472,6 +1476,7 @@ elplus_probe (struct device *dev)
elp_init(dev);
return 0;
}
#ifdef MODULE
static char devicename[9] = { 0, };
static struct device dev_3c505 = {
......
......@@ -174,9 +174,12 @@ struct pci_dev_info dev_info[] = {
DEVICE( ADAPTEC, ADAPTEC_7871, "AIC-7871"),
DEVICE( ADAPTEC, ADAPTEC_7872, "AIC-7872"),
DEVICE( ADAPTEC, ADAPTEC_7873, "AIC-7873"),
DEVICE( ADAPTEC, ADAPTEC_7874, "AIC-7874"),
DEVICE( ADAPTEC, ADAPTEC_7880, "AIC-7880U"),
DEVICE( ADAPTEC, ADAPTEC_7881, "AIC-7881U"),
DEVICE( ADAPTEC, ADAPTEC_7882, "AIC-7882U"),
DEVICE( ADAPTEC, ADAPTEC_7883, "AIC-7883U"),
DEVICE( ADAPTEC, ADAPTEC_7884, "AIC-7884U"),
DEVICE( ATRONICS, ATRONICS_2015, "IDE-2015PL"),
DEVICE( HER, HER_STING, "Stingray"),
DEVICE( HER, HER_STINGARK, "Stingray ARK 2000PV")
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -2,13 +2,13 @@
#undef A_NCR53c7xx_msg_reject
#undef A_NCR53c7xx_sink
#undef A_NCR53c7xx_zero
#undef A_NOP_insn
#undef A_addr_reconnect_dsa_head
#undef A_addr_scratch
#undef A_addr_sfbr
#undef A_addr_temp
#undef A_dmode_memory_to_memory
#undef A_dmode_memory_to_ncr
#undef A_dmode_ncr_to_memory
#undef A_dmode_ncr_to_ncr
#undef A_dsa_check_reselect
#undef A_dsa_cmdout
#undef A_dsa_cmnd
......@@ -20,19 +20,23 @@
#undef A_dsa_msgout
#undef A_dsa_msgout_other
#undef A_dsa_next
#undef A_dsa_restore_pointers
#undef A_dsa_save_data_pointer
#undef A_dsa_select
#undef A_dsa_status
#undef A_dsa_temp_dsa_next
#undef A_dsa_temp_jump_resume
#undef A_dsa_temp_addr_array_value
#undef A_dsa_temp_addr_dsa_value
#undef A_dsa_temp_addr_new_value
#undef A_dsa_temp_addr_next
#undef A_dsa_temp_addr_residual
#undef A_dsa_temp_addr_saved_pointer
#undef A_dsa_temp_addr_saved_residual
#undef A_dsa_temp_lun
#undef A_dsa_temp_next
#undef A_dsa_temp_sync
#undef A_dsa_temp_target
#undef A_int_debug_break
#undef A_int_debug_dsa_loaded
#undef A_int_debug_head
#undef A_int_debug_idle
#undef A_int_debug_reselected
#undef A_int_debug_scheduled
#undef A_int_debug_panic
#undef A_int_err_check_condition
#undef A_int_err_no_phase
#undef A_int_err_selected
......@@ -50,34 +54,44 @@
#undef A_int_test_1
#undef A_int_test_2
#undef A_int_test_3
#undef A_issue_dsa_head
#undef A_msg_buf
#undef A_reconnect_dsa_head
#undef A_reselected_identify
#undef A_reselected_tag
#undef A_schedule
#undef A_test_dest
#undef A_test_src
#undef Ent_accept_message
#undef Ent_cmdout_cmdout
#undef Ent_command_complete
#undef Ent_command_complete_msgin
#undef Ent_data_transfer
#undef Ent_datain_to_jump
#undef Ent_debug_break
#undef Ent_dsa_code_begin
#undef Ent_dsa_code_check_reselect
#undef Ent_dsa_code_fix_jump
#undef Ent_dsa_code_restore_pointers
#undef Ent_dsa_code_save_data_pointer
#undef Ent_dsa_code_template
#undef Ent_dsa_code_template_end
#undef Ent_dsa_jump_resume
#undef Ent_dsa_schedule
#undef Ent_dsa_zero
#undef Ent_end_data_transfer
#undef Ent_initiator_abort
#undef Ent_msg_in
#undef Ent_msg_in_restart
#undef Ent_other_in
#undef Ent_other_out
#undef Ent_other_transfer
#undef Ent_reject_message
#undef Ent_reselected_check_next
#undef Ent_reselected_ok
#undef Ent_respond_message
#undef Ent_schedule
#undef Ent_select
#undef Ent_select_msgout
#undef Ent_target_abort
#undef Ent_test_1
#undef Ent_test_2
#undef Ent_test_2_msgout
#undef Ent_wait_reselect
This diff is collapsed.
......@@ -2,7 +2,7 @@
#define _AHA152X_H
/*
* $Id: aha152x.h,v 1.11 1995/12/07 01:03:20 fischer Exp root $
* $Id: aha152x.h,v 1.12 1995/12/07 01:03:48 fischer Exp fischer $
*/
#if defined(__KERNEL__)
......@@ -23,7 +23,7 @@ int aha152x_proc_info(char *buffer, char **start, off_t offset, int length, int
(unless we support more than 1 cmd_per_lun this should do) */
#define AHA152X_MAXQUEUE 7
#define AHA152X_REVID "Adaptec 152x SCSI driver; $Revision: 1.11 $"
#define AHA152X_REVID "Adaptec 152x SCSI driver; $Revision: 1.12 $"
extern struct proc_dir_entry proc_scsi_aha152x;
......
This diff is collapsed.
......@@ -24,7 +24,7 @@
*
* Dean W. Gehnert, deang@ims.com, 08/30/95
*
* $Id: aic7xxx_proc.c,v 2.2 1995/09/12 05:24:37 deang Exp $
* $Id: aic7xxx_proc.c,v 2.5 1995/12/16 23:11:55 deang Exp $
*-M*************************************************************************/
#define BLS buffer + len + size
......@@ -82,7 +82,6 @@ aic7xxx_proc_info(char *buffer, char **start, off_t offset, int length,
int len = 0;
off_t begin = 0;
off_t pos = 0;
static char *board_name[] = {"None", "274x", "284x", "7870", "7850", "7872"};
static char *bus_name[] = {"Single", "Twin", "Wide"};
HBAptr = NULL;
......@@ -157,23 +156,18 @@ aic7xxx_proc_info(char *buffer, char **start, off_t offset, int length,
size += sprintf(BLS, " AIC7XXX_PROC_STATS : Enabled\n");
#else
size += sprintf(BLS, " AIC7XXX_PROC_STATS : Disabled\n");
#endif
#ifdef AIC7XXX_POLL
size += sprintf(BLS, " AIC7XXX_POLL : Enabled\n");
#else
size += sprintf(BLS, " AIC7XXX_POLL : Disabled\n");
#endif
len += size; pos = begin + len; size = 0;
size += sprintf(BLS, "\n");
size += sprintf(BLS, "Adapter Configuration:\n");
size += sprintf(BLS, " SCSI Adapter: %s\n", board_name[p->type]);
size += sprintf(BLS, " SCSI Adapter: %s\n", board_names[p->type]);
size += sprintf(BLS, " Host Bus: %s\n", bus_name[p->bus_type]);
size += sprintf(BLS, " Base IO: %#.4x\n", p->base);
size += sprintf(BLS, " IRQ: %d\n", HBAptr->irq);
size += sprintf(BLS, " SCB: %d (%d)\n", p->numscb, p->maxscb);
size += sprintf(BLS, " Interrupts: %d", p->isr_count);
if ((p->type == AIC_274x) || (p->type == AIC_284x))
if (p->chip_type == AIC_777x)
{
size += sprintf(BLS, " %s\n",
(p->pause & IRQMS) ? "(Level Sensitive)" : "(Edge Triggered)");
......@@ -190,6 +184,8 @@ aic7xxx_proc_info(char *buffer, char **start, off_t offset, int length,
p->extended ? "En" : "Dis");
size += sprintf(BLS, " SCSI Bus Reset: %sabled\n",
aic7xxx_no_reset ? "Dis" : "En");
size += sprintf(BLS, " Ultra SCSI: %sabled\n",
p->ultra_enabled ? "En" : "Dis");
len += size; pos = begin + len; size = 0;
#ifdef AIC7XXX_PROC_STATS
......
......@@ -662,7 +662,7 @@ void refill_freelist(int size)
continue;
};
if (bh->b_count || bh->b_size != size)
if (bh->b_count || buffer_protected(bh) || bh->b_size != size)
continue;
/* Buffers are written in the order they are
......@@ -840,10 +840,6 @@ void __bforget(struct buffer_head * buf)
printk("Aieee... bforget(): shared buffer\n");
return;
}
if (buffer_protected(buf)) {
printk("Aieee... bforget(): protected buffer\n");
return;
}
mark_buffer_clean(buf);
buf->b_count = 0;
remove_from_queues(buf);
......
......@@ -33,7 +33,6 @@
#include <linux/mount.h>
#include <asm/segment.h>
#include <sys/sysmacros.h>
#define __DQUOT_VERSION__ "dquot_5.6.0"
......
......@@ -50,14 +50,14 @@
#include <linux/nfs.h>
#include <linux/nfs_fs.h>
#include <linux/nfs_mount.h>
#include <netinet/in.h>
#include <linux/in.h>
#include <net/route.h>
/* Range of privileged ports */
#define STARTPORT 600
#define ENDPORT (IPPORT_RESERVED - 1)
#define NPORTS (ENDPORT - STARTPORT + 1)
#define STARTPORT 600
#define ENDPORT 1023
#define NPORTS (ENDPORT - STARTPORT + 1)
......
......@@ -463,9 +463,12 @@
#define PCI_DEVICE_ID_ADAPTEC_7871 0x7178
#define PCI_DEVICE_ID_ADAPTEC_7872 0x7278
#define PCI_DEVICE_ID_ADAPTEC_7873 0x7378
#define PCI_DEVICE_ID_ADAPTEC_7874 0x7478
#define PCI_DEVICE_ID_ADAPTEC_7880 0x8078
#define PCI_DEVICE_ID_ADAPTEC_7881 0x8178
#define PCI_DEVICE_ID_ADAPTEC_7882 0x8278
#define PCI_DEVICE_ID_ADAPTEC_7883 0x8378
#define PCI_DEVICE_ID_ADAPTEC_7884 0x8478
#define PCI_VENDOR_ID_ATRONICS 0x907f
#define PCI_DEVICE_ID_ATRONICS_2015 0x2015
......
/* $Id: scc.h,v 1.11 1995/08/24 21:06:24 jreuter Exp jreuter $ */
/* $Id: scc.h,v 1.15 1995/11/16 20:19:26 jreuter Exp jreuter $ */
#ifndef _SCC_H
#define _SCC_H
......@@ -12,28 +12,22 @@
#define DRSI 0x08 /* hardware type for DRSI PC*Packet card */
#define BAYCOM 0x10 /* hardware type for BayCom (U)SCC */
/* Constants */
#define MAXSCC 4 /* number of max. supported chips */
#define MAX_IBUFS 200 /* change this if you run out of memory */
#define BUFSIZE 128 /* must not exceed 4096 */
#define TPS 25 /* scc_timer(): Ticks Per Second */
#define SCC_TIMER 3
/* Paranoia check... */
#define SCC_PARANOIA_CHECK /* tell the user if something is going wrong */
/* ioctl() commands */
/* !!! NEW VALUES !!! */
#define TIOCSCCCFG 0x2200 /* set hardware parameters */
#define TIOCSCCINI 0x2201 /* init driver */
#define TIOCCHANINI 0x2202 /* init channel */
#define TIOCSCCINI 0x5470 /* init driver */
#define TIOCCHANINI 0x5471 /* init channel */
#define TIOCCHANMEM 0x2210 /* adjust buffer pools */
#define TIOCGKISS 0x5472 /* get kiss parameter */
#define TIOCSKISS 0x5473 /* set kiss parameter */
#define TIOCGKISS 0x2282 /* get kiss parameter */
#define TIOCSKISS 0x2283 /* set kiss parameter */
#define TIOCSCCSTAT 0x5474 /* get scc status */
#define TIOCSCCSTAT 0x2284 /* get scc status */
/* magic number */
......@@ -106,9 +100,6 @@
#define BT_RECEIVE 1 /* buffer allocated by receive */
#define BT_TRANSMIT 2 /* buffer allocated by transmit */
#define QUEUE_THRES MAX_IBUFS/20 /* maximum amount of packets being queued */
#define QUEUE_HYST 3 /* leave QUEUE_HYST packets untouched */
#define NULLBUF (struct mbuf *)0
#define NULLBUFP (struct mbuf **)0
......@@ -134,30 +125,15 @@ typedef unsigned short ioaddr; /* old def */
/* Basic message buffer structure */
/* looks familiar? Hmm, yes... */
struct mbuf {
struct mbuf *next; /* Links mbufs belonging to single packets */
struct mbuf *anext; /* Links packets on queues */
char type; /* who allocated this buffer? */
int time_out; /* unimplemented yet */
struct mbuf *next; /* Link to next buffer */
struct mbuf *prev; /* Link to previous buffer */
int size; /* Size of associated data buffer */
int refcnt; /* Reference count */
struct mbuf *dup; /* Pointer to duplicated mbuf */
char data[BUFSIZE]; /* Active working pointers */
int cnt;
int in_use;
int cnt; /* Number of bytes stored in buffer */
unsigned char *rw_ptr; /* read-write pointer */
unsigned char data[0]; /* anchor for allocated buffer */
};
struct sccbuf {
struct mbuf *bp;
int inuse;
};
/* SCC channel control structure for KISS */
struct scc_kiss {
......@@ -203,9 +179,9 @@ struct scc_stat {
int tx_queued; /* tx frames enqueued */
int rx_queued; /* rx frames enqueued */
unsigned int rx_alloc; /* allocated rx_buffers */
unsigned int tx_alloc; /* allocated tx_buffers */
unsigned int used_buf; /* used buffers (should be rx_alloc+tx_alloc) */
unsigned int rxbuffers; /* allocated rx_buffers */
unsigned int txbuffers; /* allocated tx_buffers */
unsigned int bufsize; /* used buffersize */
};
......@@ -220,6 +196,33 @@ struct ioctl_command {
unsigned param; /* KISS-Param */
};
/* currently unused */
struct scc_hw_config {
io_port data_a; /* data port channel A */
io_port ctrl_a; /* control port channel A */
io_port data_b; /* data port channel B */
io_port ctrl_b; /* control port channel B */
io_port vector_latch; /* INTACK-Latch (#) */
io_port special; /* special function port */
int irq; /* irq */
long clock; /* clock */
char option; /* command for function port */
char brand; /* hardware type */
char escc; /* use ext. features of a 8580/85180/85280 */
};
struct scc_mem_config {
unsigned int rxbuffers;
unsigned int txbuffers;
unsigned int bufsize;
};
/* (#) only one INTACK latch allowed. */
/* SCC channel structure */
struct scc_channel {
......@@ -227,10 +230,17 @@ struct scc_channel {
int init; /* channel exists? */
struct tty_struct *tty; /* link to tty control structure */
unsigned char tty_opened;
char tty_opened; /* No. of open() calls... */
char throttled; /* driver is throttled */
char brand; /* manufacturer of the board */
long clock; /* used clock */
io_port ctrl; /* I/O address of CONTROL register */
io_port data; /* I/O address of DATA register */
io_port special; /* I/O address of special function port */
char option;
char enhanced; /* Enhanced SCC support */
unsigned char wreg[16]; /* Copy of last written value in WRx */
......@@ -239,20 +249,25 @@ struct scc_channel {
struct scc_kiss kiss; /* control structure for KISS params */
struct scc_stat stat; /* statistical information */
struct scc_modem modem; /* modem information */
struct mbuf *rbp; /* rx: Head of mbuf chain being filled */
struct mbuf *rbp1; /* rx: Pointer to mbuf currently being written */
struct mbuf *rcvq; /* Pointer to mbuf packets currently received */
struct mbuf *sndq; /* tx: Packets awaiting transmission */
struct mbuf *tbp; /* tx: Transmit mbuf being sent */
struct mbuf *sndq1; /* Pointer to mbuf currently under construction */
struct mbuf *sndq2; /* Pointer to mbuf currently under construction */
struct mbuf *rx_buffer_pool; /* free buffers for rx/tx frames are */
struct mbuf *tx_buffer_pool; /* linked in these ring chains */
struct mbuf *rx_queue; /* chain of received frames */
struct mbuf *tx_queue; /* chain of frames due to transmit */
struct mbuf *rx_bp; /* pointer to frame currently received */
struct mbuf *tx_bp; /* pointer to frame currently transmitted */
struct mbuf *kiss_decode_bp; /* frame we are receiving from tty */
struct mbuf *kiss_encode_bp; /* frame we are sending to tty */
/* Timer */
struct timer_list tx_t; /* tx timer for this channel */
struct timer_list rx_t; /* rx timer */
/* rx timer counters */
unsigned int t_dwait; /* wait time (DWAIT) */
unsigned int t_slot; /* channel sample frequency */
unsigned int t_txdel; /* TX delay */
......@@ -263,14 +278,6 @@ struct scc_channel {
unsigned int t_mbusy; /* time until defer if channel busy */
};
/* some variables for scc_rx_timer() bound together in a struct */
struct rx_timer_CB {
char lock;
unsigned long expires;
struct scc_channel *scc;
};
/* 8530 Serial Communications Controller Register definitions */
#define FLAG 0x7e
......@@ -557,4 +564,8 @@ struct rx_timer_CB {
/* global functions */
#ifdef PREV_LINUX_1_3_33
extern long scc_init(long kmem_start);
#else
extern int scc_init(void);
#endif
......@@ -36,6 +36,7 @@
#include <linux/sem.h>
#include <linux/minix_fs.h>
#include <linux/ext2_fs.h>
#include <linux/random.h>
#ifdef __alpha__
# include <asm/io.h>
......@@ -241,6 +242,7 @@ struct symbol_table symbol_table = {
X(dcache_lookup),
X(dcache_add),
X(aout_core_dump),
X(add_blkdev_randomness),
/* device registration */
X(register_chrdev),
......@@ -388,6 +390,7 @@ struct symbol_table symbol_table = {
X(rarp_ioctl_hook),
X(init_etherdev),
X(ip_rt_route),
X(ip_rt_put),
X(arp_send),
#ifdef CONFIG_IP_FORWARD
X(ip_forward),
......@@ -549,6 +552,8 @@ struct symbol_table symbol_table = {
X(generate_cluster),
X(proc_scsi),
X(proc_scsi_inode_operations),
X(proc_net_inode_operations),
X(proc_net),
#endif
/********************************************************
* Do not add anything below this line,
......
......@@ -309,9 +309,10 @@ static inline void forget_pte(pte_t page)
if (pte_none(page))
return;
if (pte_present(page)) {
free_page(pte_page(page));
if (mem_map[MAP_NR(pte_page(page))].reserved)
unsigned long addr = pte_page(page);
if (addr >= high_memory || mem_map[MAP_NR(addr)].reserved)
return;
free_page(addr);
if (current->mm->rss <= 0)
return;
current->mm->rss--;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment