Commit 27c44f56 authored by Linus Torvalds's avatar Linus Torvalds

Import 1.2.0

parent 39331b15
......@@ -315,13 +315,8 @@ S: Atlanta, Georgia 30332
S: USA
N: Andrew Haylett
E: ajh@gec-mrc.co.uk
E: ajh@primag.co.uk
D: Selection mechanism
S: GEC-Marconi Research Centre
S: West Hanningfield Road
S: Great Baddow
S: CM2 8HN
S: United Kingdom
N: Jochen Hein
E: Hein@Informatik.TU-Clausthal.de
......
VERSION = 1
PATCHLEVEL = 1
SUBLEVEL = 95
PATCHLEVEL = 2
SUBLEVEL = 0
ARCH = i386
......
......@@ -664,7 +664,7 @@ is_sun4c: ! OK, this is a sun4c, yippie
*/
/* paul@sfe.com.au */
/* V3 doesnt have printf.. And I dont really feel like doing the formatting
/* V3 doesn't have printf.. And I don't really feel like doing the formatting
* myself.. So we miss out on some messages (for now).
*/
ld [%g7 + 0x4], %o0
......@@ -808,7 +808,7 @@ rest_of_boot:
WRITE_PAUSE ! see above
/* I keep the timer interrupt on so that BogoMIPS works and the prom
* keeps updating it's "jiffies" counter. 100HZ clock on sparcstations.
* keeps updating its "jiffies" counter. 100HZ clock on sparcstations.
*/
/* If gas wasn't so dumb, I could use or'd macros in this next
......
......@@ -53,7 +53,7 @@ unsigned long bios32_init(unsigned long memory_start, unsigned long memory_end)
/* Lame prom console routines, gets registered below. Thanks for the
* tip Linus. First comes the V0 prom routine, then the V3 version
* writen by Paul Hatchman (paul@sfe.com.au).
* written by Paul Hatchman (paul@sfe.com.au).
*/
void sparc_console_print(const char * p)
......@@ -89,7 +89,7 @@ void sparc_console_print_v3 (const char *p)
/* This routine will in the future do all the nasty prom stuff
* to probe for the mmu type and it's parameters, etc. This will
* to probe for the mmu type and its parameters, etc. This will
* also be where SMP things happen plus the Sparc specific memory
* physical memory probe as on the alpha.
*/
......
......@@ -58,7 +58,7 @@ Up to 4 drives per interface card, and up to 4 interface cards are supported.
All supported drive families can be mixed, but the CR-521 drives are
hard-wired to drive ID 0. The drives have to use different drive IDs, and each
drive has to get a unique minor number (0...3), corresponding indirectly to
it's drive ID.
its drive ID.
The drive IDs may be selected freely from 0 to 3 - they do not have to be in
consecutive order.
......@@ -132,7 +132,7 @@ To install:
The "no-sound" board from OmniCd needs the "SBPRO 1" setup.
All other "no-sound" boards need the "SBPRO 0" setup.
The Spea Media FX sound card needs "SBPRO 2".
sbpcd.c holds some examples in it's auto-probe list.
sbpcd.c holds some examples in its auto-probe list.
If you configure "SBPRO" wrong, the playing of audio CDs will work,
but you will not be able to mount a data CD.
a2. Tell the address of your CDROM_PORT (not of the sound port).
......@@ -165,7 +165,7 @@ To install:
The driver no longer uses the "AT bus style" device numbering; the SCSI
scheme is used now; that means, the "first found" drive gets MINOR 0
(regardless to it's jumpered ID), the "next found" (at the same cable)
(regardless to its jumpered ID), the "next found" (at the same cable)
gets MINOR 1, ...
For a second interface board, you have to make nodes like
......
......@@ -1384,7 +1384,7 @@ do_cdu31a_request(void)
cdu31a_request_startover:
/*
* The beginning here is stolen from the hard disk driver. I hope
* its right.
* it's right.
*/
if (!(CURRENT) || CURRENT->dev < 0)
{
......@@ -2570,7 +2570,7 @@ scd_open(struct inode *inode,
it. It seems to mean the drive has already done the operation. */
if ((res_size < 2) || ((res_reg[0] != 0) && (res_reg[1] != 0)))
{
/* If the drive is already playing, its ok. */
/* If the drive is already playing, it's ok. */
if ((res_reg[1] == SONY_AUDIO_PLAYING_ERR) || (res_reg[1] == 0))
{
goto drive_spinning;
......@@ -2725,7 +2725,7 @@ get_drive_configuration(unsigned short base_io,
if (read_status_register() != 0xff)
{
/*
* Reset the drive and wait for attention from it (to say its reset).
* Reset the drive and wait for attention from it (to say it's reset).
* If you don't wait, the next operation will probably fail.
*/
reset_drive();
......
......@@ -2325,6 +2325,7 @@ static int make_raw_rw_request(void)
/* claim buffer track if needed */
if (buffer_track != raw_cmd.track || /* bad track */
buffer_drive !=current_drive || /* bad drive */
sector_t > buffer_max ||
sector_t < buffer_min ||
((CT(COMMAND) == FD_READ ||
(aligned_sector_t == sector_t && CURRENT->nr_sectors >= ssize ))&&
......
......@@ -715,7 +715,7 @@ spin_up_drive(Byte status[2])
if (do_sony_cmd(&cmd, 1, status, NULL, 0, 0) != 0)
return TIME_OUT;
if ((status[0] & SONY535_STATUS1_NOT_SPINNING) == 0)
return 0; /* its already spinning */
return 0; /* it's already spinning */
/* otherwise, give the spin-up command */
cmd = SONY535_SPIN_UP;
......@@ -818,7 +818,7 @@ do_cdu535_request(void)
while (1) {
/*
* The beginning here is stolen from the hard disk driver. I hope
* its right.
* it's right.
*/
if (!(CURRENT) || CURRENT->dev < 0) {
return;
......
......@@ -277,7 +277,7 @@ Fri Sep 16 08:13:25 1994 Theodore Y. Ts'o (tytso@rt-11)
until after block_til_ready has returned successfully.
Modify block_til_ready to check the normal_termios
structure directly, so it doesn't rely on termios being
set before its called.
set before it's called.
Thu Sep 15 23:34:01 1994 Theodore Y. Ts'o (tytso@rt-11)
......
......@@ -1005,6 +1005,7 @@ void invert_screen(int currcons, int offset, int count, int viewed)
unsigned short old = scr_readw(p);
scr_writew(old ^ (((old & 0x0700) == 0x0100)
? 0x7000 : 0x7700), p);
p++;
}
}
......
......@@ -19,6 +19,7 @@
#include <asm/segment.h>
#include <asm/io.h>
#include <asm/pgtable.h>
#ifdef CONFIG_SOUND
extern long soundcard_init(long mem_start);
......@@ -88,15 +89,15 @@ static int mmap_mem(struct inode * inode, struct file * file, struct vm_area_str
{
if (vma->vm_offset & ~PAGE_MASK)
return -ENXIO;
#if 0 && defined(__i386__)
#if defined(__i386__)
/*
* hmm.. This disables high-memory caching, as the XFree86 team wondered
* about that at one time. It doesn't seem to make a difference, though:
* the surround logic should disable caching for the high device addresses
* anyway.
* hmm.. This disables high-memory caching, as the XFree86 team
* wondered about that at one time.
* The surround logic should disable caching for the high device
* addresses anyway, but right now this seems still needed.
*/
if (x86 > 3 && vma->vm_offset >= high_memory)
vma->vm_page_prot |= PAGE_PCD;
pgprot_val(vma->vm_page_prot) |= _PAGE_PCD;
#endif
if (remap_page_range(vma->vm_start, vma->vm_offset, vma->vm_end - vma->vm_start, vma->vm_page_prot))
return -EAGAIN;
......
......@@ -29,7 +29,7 @@
transmit a packet. A third command mode exists when you are setting
things up.
3] If its transmitting its not receiving and vice versa. In fact the
3] If it's transmitting it's not receiving and vice versa. In fact the
time to get the board back into useful state after an operation is
quite large.
......
......@@ -721,7 +721,7 @@ int SK_probe(struct device *dev, short ioaddr)
outb(SK_ROM_RAM_OFF, SK_POS2); /* Boot_ROM + RAM off */
/* We found a Boot_ROM and its gone. Set RAM address on
/* We found a Boot_ROM and it's gone. Set RAM address on
* Boot_ROM address.
*/
......
......@@ -44,7 +44,7 @@
* Use ip_fast_csum from ip.h
*
*
* This module is a difficult issue. Its clearly inet code but its also clearly
* This module is a difficult issue. It's clearly inet code but it's also clearly
* driver code belonging close to PPP and SLIP
*/
......
......@@ -233,7 +233,7 @@ ABSOLUTE msg_buf = 0
ABSOLUTE reselected_identify = 0
ABSOLUTE reselected_tag = 0
; Request sense command pointer, its a 6 byte command, should
; Request sense command pointer, it's a 6 byte command, should
; be constant for all commands since we always want 16 bytes of
; sense and we don't need to change any fields as we did under
; SCSI-I when we actually cared about the LUN field.
......@@ -830,7 +830,7 @@ reselected_not_end:
; XXX the ALU is only eight bits wide, and the assembler
; wont do the dirt work for us. As long as dsa_check_reselect
; is negative, we need to sign extend with 1 bits to the full
; 32 bit width os the address.
; 32 bit width of the address.
;
; A potential work around would be to have a known alignment
; of the DSA structure such that the base address plus
......
......@@ -295,8 +295,8 @@ ABSOLUTE msg_buf = 0
ABSOLUTE reselected_identify = 0
ABSOLUTE reselected_tag = 0
; Request sense command pointer, its a 6 byte command, should
; be constant for all commands since we allays want 16 bytes of
; Request sense command pointer, it's a 6 byte command, should
; be constant for all commands since we always want 16 bytes of
; sense and we don't need to change any fields as we did under
; SCSI-I when we actually cared about the LUN field.
;EXTERNAL NCR53c7xx_sense ; Request sense command
......@@ -314,7 +314,7 @@ ABSOLUTE reselected_tag = 0
;
; MODIFIES : SCRATCH, reconnect_dsa_head
;
; EXITS : allays passes control to schedule
; EXITS : always passes control to schedule
ENTRY dsa_schedule
dsa_schedule:
......
......@@ -3,7 +3,7 @@
#
# Note! Dependencies are done automagically by 'make dep', which also
# removes any old dependencies. DON'T put your own dependencies here
# unless its something special (ie not a .c file).
# unless it's something special (ie not a .c file).
#
.c.s:
......
......@@ -428,7 +428,7 @@ int in2000_queuecommand(Scsi_Cmnd * SCpnt, void (*done)(Scsi_Cmnd *))
bufflen = 0;
/*
* What it looks like. Boy did I get tired of reading it's output.
* What it looks like. Boy did I get tired of reading its output.
*/
if (*cmd == READ_10 || *cmd == WRITE_10) {
i = xscsi2int((cmd+1));
......
......@@ -82,7 +82,7 @@
/* This is the sync transfer divisor, XTALFREQ/X will be the maximum
achievable data rate (assuming the rest of the system is capable
and set properly) */
#define SYNCXFRPD 4
#define SYNCXFRPD 5
/*(XTALFREQ/5)*/
/*****/
......@@ -99,11 +99,19 @@
the assertion delay, also in 1/2 clocks (FASTCLK is ignored here). */
/*----------------------------------------------------------------*/
#if defined(MODULE) || defined(PCMCIA)
#ifdef PCMCIA
#define MODULE
#endif
#if defined(MODULE)
#include <linux/config.h>
#include <linux/module.h>
#endif
#ifdef PCMCIA
#undef MODULE
#endif
#include "../block/blk.h" /* to get disk capacity */
#include <linux/kernel.h>
#include <linux/string.h>
......
......@@ -392,8 +392,8 @@ struct scatterlist {
code does not need to do anything special to keep the commands alive. */
#define SCSI_RESET_SUCCESS 2
/* We called for an reset of this bus, and we should get an interrupt
when this succeeds. Each command should get it's own status
/* We called for a reset of this bus, and we should get an interrupt
when this succeeds. Each command should get its own status
passed up to scsi_done, but this has not happened yet. */
#define SCSI_RESET_PENDING 3
......
......@@ -91,7 +91,7 @@ Since 2.2
Since 2.1
- Preliminary support for SB16.
- The SB16 mixer is supported in it's native mode.
- The SB16 mixer is supported in its native mode.
- Digitized voice capability up to 44.1 kHz/8 bit/mono
(16 bit and stereo support coming in the next release).
- Fixed some bugs in the digitized voice driver for PAS16.
......
......@@ -138,7 +138,7 @@ distribute binaries compiled with soundcard.h of v3.X.
- The basic API usage is similar to the current one. There are some new
macros but the older ones should work as earlier. The most important
incompatibility is that the /dev/sequencer2 driver allocates voices itself.
The other one is that the application must send SEQ_START_TIMER() as it's
The other one is that the application must send SEQ_START_TIMER() as its
first event. Otherwise the timer is not started and the application waits
infinitely.
......
......@@ -683,7 +683,7 @@ ad1848_detect (int io_base)
* Check that the I/O address is in use.
*
* The bit 0x80 of the base I/O port is known to be 0 after the
* chip has performed it's power on initialization. Just assume
* chip has performed its power on initialization. Just assume
* this has happened before the OS is starting.
*
* If the I/O address is unused, it typically returns 0xff.
......
......@@ -740,7 +740,7 @@ DMAbuf_outputintr (int dev, int event_type)
* buffer.
* 1 = DMA transfer done. Device doesn't have local buffer or it's
* empty now.
* 2 = No DMA transfer but the device has now more space in it's local
* 2 = No DMA transfer but the device has now more space in its local
* buffer.
*/
......
......@@ -127,7 +127,7 @@ less, depending on how much it needs time to do other things. The maximum
delay between writing a byte and the time when it finally plays is
at most 3 times the 'fragment_time'.
The delay depends on how much time the program needs to do it's
The delay depends on how much time the program needs to do its
computations for the next sample (updating screen etc). If it's about
80% of the 'fragment_time' the game will run almost without delays. If it
uses more time, there is a risk that the audio buffer gets empty.
......
......@@ -1209,7 +1209,7 @@ clocks2ticks (unsigned long clocks)
/*
* The MPU-401 supports just a limited set of possible timebase values.
* Since the applications require more choices, the driver has to
* program the HW to do it's best and to convert between the HW and
* program the HW to do its best and to convert between the HW and
* actual timebases.
*/
......
......@@ -159,7 +159,7 @@ pss_setaddr (int addr, int configAddr)
/*_____ pss_checkint
This function tests an interrupt number to see if
it is available. It takes the interrupt button
as it's argument and returns TRUE if the interrupt
as its argument and returns TRUE if the interrupt
is ok.
*/
static int
......
......@@ -714,7 +714,7 @@ struct buffer_head * getblk(dev_t dev, int block, int size)
bh = free_list[isize];
remove_from_free_list(bh);
/* OK, FINALLY we know that this buffer is the only one of it's kind, */
/* OK, FINALLY we know that this buffer is the only one of its kind, */
/* and that it's unused (b_count=0), unlocked (b_lock=0), and clean */
bh->b_count=1;
bh->b_dirt=0;
......
......@@ -358,7 +358,7 @@ struct inode * ext2_new_inode (const struct inode * dir, int mode)
else
{
/*
* Try to place the inode in it's parent directory
* Try to place the inode in its parent directory
*/
i = dir->u.ext2_i.i_block_group;
tmp = get_group_desc (sb, i, &bh2);
......
......@@ -259,7 +259,7 @@ struct hpfs_dirent {
unsigned char locality; /* 0=unk 1=seq 2=random 3=both */
unsigned char namelen, name[1]; /* file name */
/* dnode_secno down; btree down pointer, if present,
follows name on next word boundary, or maybe it's
follows name on next word boundary, or maybe it
precedes next dirent, which is on a word boundary. */
};
......
......@@ -305,7 +305,18 @@ int parse_rock_ridge_inode(struct iso_directory_record * de,
{ int high, low;
high = isonum_733(rr->u.PN.dev_high);
low = isonum_733(rr->u.PN.dev_low);
inode->i_rdev = ((high << 8) | (low & 0xff)) & 0xffff;
/*
* The Rock Ridge standard specifies that if sizeof(dev_t) <=4,
* then the high field is unused, and the device number is completely
* stored in the low field. Some writers may ignore this subtlety,
* and as a result we test to see if the entire device number is
* stored in the low field, and use that.
*/
if(MINOR(low) != low && high == 0) {
inode->i_rdev = low;
} else {
inode->i_rdev = MKDEV(high, low);
}
};
break;
case SIG('T','F'):
......
......@@ -161,7 +161,7 @@ void nfs_statfs(struct super_block *sb, struct statfs *buf)
put_fs_long(0, &buf->f_files);
put_fs_long(0, &buf->f_ffree);
/* We should really try to interrogate the remote server to find
it's maximum name length here */
its maximum name length here */
put_fs_long(NAME_MAX, &buf->f_namelen);
}
......
......@@ -43,6 +43,7 @@
#define _PAGE_PRESENT 0x001
#define _PAGE_RW 0x002
#define _PAGE_USER 0x004
#define _PAGE_PCD 0x010
#define _PAGE_ACCESSED 0x020
#define _PAGE_DIRTY 0x040
#define _PAGE_COW 0x200 /* implemented in software (one of the AVL bits) */
......
/* psr.h: This file holds the macros for masking off various parts of
the processor status register on the Sparc. This is valid
for Version 8. On the V9 this is renamed to the PSTATE
register and it's members are accessed as fields like
register and its members are accessed as fields like
PSTATE.PRIV for the current CPU privilege level.
Copyright (C) 1994 David S. Miller (davem@caip.rutgers.edu)
......
......@@ -22,7 +22,7 @@
'rett' instruction. Privileged software is responsible for
updating this on trap fills/spills etc. Therefore if a 'save'
instruction is executed and it causes the Current Window
Pointer to equal a register window which has it's bit set in
Pointer to equal a register window which has its bit set in
%wim we get a 'overflow' trap, a restore into such a register
invokes a window 'spill' trap.
*/
......
......@@ -15,6 +15,8 @@
#ifndef _LINUX_EXT2_FS_H
#define _LINUX_EXT2_FS_H
#include <linux/types.h>
/*
* The second extended filesystem constants/structures
*/
......
......@@ -8,9 +8,9 @@
* Ported from BSD to Linux,
* Alan Cox 22/Nov/1994.
* Merged and included the FreeBSD-Current changes at Ugen's request
* (but hey its a lot cleaner now). Ugen would prefer in some ways
* (but hey it's a lot cleaner now). Ugen would prefer in some ways
* we waited for his final product but since Linux 1.2.0 is about to
* appear its not practical - Read: It works, its not clean but please
* appear it's not practical - Read: It works, it's not clean but please
* don't consider it to be his standard of finished work.
* Alan.
*
......
......@@ -238,6 +238,8 @@ struct pci_class_type {
#define PCI_DEVICE_ID_INTEL_82375 0x0482
#define PCI_DEVICE_ID_INTEL_82434 0x04a3
#define PCI_DEVICE_ID_INTEL_82430 0x0486
#define PCI_DEVICE_ID_INTEL_82437 0x122d
#define PCI_DEVICE_ID_INTEL_82371 0x122e
#define PCI_VENDOR_ID_SMC 0x1042
#define PCI_DEVICE_ID_SMC_37C665 0x1000
......@@ -267,6 +269,7 @@ struct pci_class_type {
#define PCI_VENDOR_ID_AL 0x10b9
#define PCI_DEVICE_ID_AL_M1449 0x1449
#define PCI_DEVICE_ID_AL_M1451 0x1451
#define PCI_DEVICE_ID_AL_M4803 0x5215
#define PCI_VENDOR_ID_TSENG 0x100c
#define PCI_DEVICE_ID_TSENG_W32P_2 0x3202
......@@ -326,13 +329,19 @@ struct pci_class_type {
#define PCI_VENDOR_ID_HER 0xedd8
#define PCI_DEVICE_ID_HER_STING 0xa091
#define PCI_VENDOR_ID_ATRONICS 0x907f
#define PCI_DEVICE_ID_ATRONICS_2015 0x2015
#define PCI_VENDOR_ID_CT 0x102c
#define PCI_DEVICE_ID_CT_65545 0x00d8
struct pci_vendor_type {
unsigned short vendor_id;
char *vendor_name;
};
#define PCI_VENDOR_NUM 34
#define PCI_VENDOR_NUM 36
#define PCI_VENDOR_TYPE { \
{PCI_VENDOR_ID_NCR, "NCR"}, \
{PCI_VENDOR_ID_ADAPTEC, "Adaptec"}, \
......@@ -367,7 +376,9 @@ struct pci_vendor_type {
{PCI_VENDOR_ID_IMS, "IMS"}, \
{PCI_VENDOR_ID_ZEINET, "ZeiNet"}, \
{PCI_VENDOR_ID_EF, "Efficient Networks"}, \
{PCI_VENDOR_ID_HER, "Hercules"} \
{PCI_VENDOR_ID_HER, "Hercules"}, \
{PCI_VENDOR_ID_ATRONICS, "Atronics"}, \
{PCI_VENDOR_ID_CT, "Chips & Technologies"} \
}
......@@ -386,7 +397,7 @@ struct pci_device_type {
char *device_name;
};
#define PCI_DEVICE_NUM 66
#define PCI_DEVICE_NUM 71
#define PCI_DEVICE_TYPE { \
{0xff, PCI_VENDOR_ID_NCR, PCI_DEVICE_ID_NCR_53C810, "53c810"}, \
{0xff, PCI_VENDOR_ID_NCR, PCI_DEVICE_ID_NCR_53C815, "53c815"}, \
......@@ -417,6 +428,8 @@ struct pci_device_type {
{0xff, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82375, "82375EB"}, \
{0x00, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82434, "82434LX Mercury/Neptune"}, \
{0xff, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82430, "82430ZX Aries"}, \
{0xff, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82437, "82437FX Triton"}, \
{0xff, PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371, "82371FB"}, \
{0xff, PCI_VENDOR_ID_SMC, PCI_DEVICE_ID_SMC_37C665, "FDC 37C665"}, \
{0xff, PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_M32, "Mach 32"}, \
{0xff, PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_M64, "Mach 64"}, \
......@@ -430,6 +443,7 @@ struct pci_device_type {
{0xff, PCI_VENDOR_ID_AI, PCI_DEVICE_ID_AI_M1435, "M1435"}, \
{0xff, PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1449, "M1449"}, \
{0xff, PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M1451, "M1451"}, \
{0xff, PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M4803, "MS4803"}, \
{0xff, PCI_VENDOR_ID_TSENG, PCI_DEVICE_ID_TSENG_W32P_2, "ET4000W32P"}, \
{0xff, PCI_VENDOR_ID_TSENG, PCI_DEVICE_ID_TSENG_W32P_b, "ET4000W32P rev B"}, \
{0xff, PCI_VENDOR_ID_TSENG, PCI_DEVICE_ID_TSENG_W32P_c, "ET4000W32P rev C"}, \
......@@ -453,7 +467,9 @@ struct pci_device_type {
{0xff, PCI_VENDOR_ID_IMS, PCI_DEVICE_ID_IMS_8849, "8849"}, \
{0xff, PCI_VENDOR_ID_ZEINET, PCI_DEVICE_ID_ZEINET_1221, "1221"}, \
{0xff, PCI_VENDOR_ID_EF, PCI_DEVICE_ID_EF_ATM, "155P-MF1"}, \
{0xff, PCI_VENDOR_ID_HER, PCI_DEVICE_ID_HER_STING, "Stingray"} \
{0xff, PCI_VENDOR_ID_HER, PCI_DEVICE_ID_HER_STING, "Stingray"}, \
{0xff, PCI_VENDOR_ID_ATRONICS, PCI_DEVICE_ID_ATRONICS_2015, "IDE-2015PL"}, \
{0xff, PCI_VENDOR_ID_CT, PCI_DEVICE_ID_CT_65545, "65545"} \
}
/* An item of this structure has the following meaning */
......
......@@ -199,6 +199,9 @@ struct task_struct {
#define PF_PTRACED 0x00000010 /* set if ptrace (0) has been called. */
#define PF_TRACESYS 0x00000020 /* tracing system calls */
#define PF_STARTING 0x00000100 /* being created */
#define PF_EXITING 0x00000200 /* getting shut down */
/*
* cloning flags:
*/
......
......@@ -348,7 +348,7 @@ struct patmgr_info { /* Note! size must be < 4k since kmalloc() is used */
*
* This driver uses just the numbers 0 to 31 to store both
* the LSB and MSB. The controller value is a unsigned short
* and it's valid range is between 0 and 16383 (0x0000 to 0x3fff).
* and its valid range is between 0 and 16383 (0x0000 to 0x3fff).
* The driver sends the controller value using two messages when
* necessary.
*/
......
......@@ -380,6 +380,7 @@ NORET_TYPE void do_exit(long code)
intr_count = 0;
}
fake_volatile:
current->flags |= PF_EXITING;
sem_exit();
exit_mmap(current);
free_page_tables(current);
......
......@@ -172,12 +172,8 @@ void ctrl_alt_del(void)
{
if (C_A_D)
hard_reset_now();
else {
int i;
else
send_sig(SIGINT,task[1],1);
for (i = 2; i < NR_TASKS; i++)
send_sig(SIGHUP,task[i],1);
}
}
......
......@@ -340,12 +340,13 @@ static inline int try_to_swap_out(struct vm_area_struct* vma, unsigned long addr
if (pte_dirty(pte)) {
if (mem_map[MAP_NR(page)] != 1)
return 0;
vma->vm_task->mm->rss--;
if (vma->vm_ops && vma->vm_ops->swapout)
if (vma->vm_ops && vma->vm_ops->swapout) {
vma->vm_task->mm->rss--;
vma->vm_ops->swapout(vma, address-vma->vm_start, page_table);
else {
} else {
if (!(entry = get_swap_page()))
return 0;
vma->vm_task->mm->rss--;
pte_val(*page_table) = entry;
invalidate();
write_swap_page(entry, (char *) page);
......
......@@ -270,7 +270,7 @@ void destroy_sock(struct sock *sk)
sk->inuse = 1; /* just to be safe. */
/* Incase it's sleeping somewhere. */
/* In case it's sleeping somewhere. */
if (!sk->dead)
sk->write_space(sk);
......@@ -778,9 +778,12 @@ static int inet_release(struct socket *sock, struct socket *peer)
* If linger is set, we don't return until the close
* is complete. Other wise we return immediately. The
* actually closing is done the same either way.
*
* If the close is due to the process exiting, we never
* linger..
*/
if (sk->linger == 0)
if (sk->linger == 0 || (current->flags & PF_EXITING))
{
sk->prot->close(sk,0);
sk->dead = 1;
......@@ -1019,7 +1022,7 @@ static int inet_accept(struct socket *sock, struct socket *newsock, int flags)
/*
* We've been passed an extra socket.
* We need to free it up because the tcp module creates
* it's own when it accepts one.
* its own when it accepts one.
*/
if (newsock->data)
{
......
......@@ -155,7 +155,7 @@ void skb_free_datagram(struct sk_buff *skb)
return;
}
/* See if it needs destroying */
if(!skb->next && !skb->prev) /* Been dequeued by someone - ie its read */
if(!skb->next && !skb->prev) /* Been dequeued by someone - ie it's read */
kfree_skb(skb,FREE_READ);
restore_flags(flags);
}
......
......@@ -417,7 +417,7 @@ void dev_queue_xmit(struct sk_buff *skb, struct device *dev, int pri)
}
/*
* Transmission failed, put skb back into a list. Once on the list its safe and
* Transmission failed, put skb back into a list. Once on the list it's safe and
* no longer device locked (it can be freed safely from the device queue)
*/
cli();
......
......@@ -181,7 +181,7 @@ unsigned long ip_my_addr(void)
/*
* Find an interface that can handle addresses for a certain address.
*
* This needs optimising, since its relatively trivial to collapse
* This needs optimising, since it's relatively trivial to collapse
* the two loops into one.
*/
......
......@@ -742,7 +742,7 @@ int icmp_rcv(struct sk_buff *skb1, struct device *dev, struct options *opt,
case ICMP_ADDRESSREPLY:
/*
* We ought to set our netmask on receiving this, but
* experience shows its a waste of effort.
* experience shows it's a waste of effort.
*/
icmp_statistics.IcmpInAddrMaskReps++;
kfree_skb(skb1, FREE_READ);
......
......@@ -1133,7 +1133,7 @@ void ip_fragment(struct sock *sk, struct sk_buff *skb, struct device *dev, int i
if(mtu<8)
{
/* It's wrong but its better than nothing */
/* It's wrong but it's better than nothing */
icmp_send(skb,ICMP_DEST_UNREACH,ICMP_FRAG_NEEDED,dev->mtu, dev);
ip_statistics.IpFragFails++;
return;
......@@ -1145,7 +1145,7 @@ void ip_fragment(struct sock *sk, struct sk_buff *skb, struct device *dev, int i
/*
* The initial offset is 0 for a complete frame. When
* fragmenting fragments its wherever this one starts.
* fragmenting fragments it's wherever this one starts.
*/
if (is_frag & 2)
......@@ -1434,7 +1434,7 @@ static void ip_forward(struct sk_buff *skb, struct device *dev, int is_frag)
/*
* Map service types to priority. We lie about
* throughput being low priority, but its a good
* throughput being low priority, but it's a good
* choice to help improve general usage.
*/
if(iph->tos & IPTOS_LOWDELAY)
......
......@@ -11,9 +11,9 @@
* Zeroing /proc and other additions
* Jos Vos 4/Feb/1995.
* Merged and included the FreeBSD-Current changes at Ugen's request
* (but hey its a lot cleaner now). Ugen would prefer in some ways
* (but hey it's a lot cleaner now). Ugen would prefer in some ways
* we waited for his final product but since Linux 1.2.0 is about to
* appear its not practical - Read: It works, its not clean but please
* appear it's not practical - Read: It works, it's not clean but please
* don't consider it to be his standard of finished work.
* Alan Cox 12/Feb/1995
*
......@@ -193,7 +193,7 @@ int ip_fw_chk(struct iphdr *ip, struct device *rif, struct ip_fw *chain, int pol
dprintf1("TCP ");
src_port=ntohs(tcp->source);
dst_port=ntohs(tcp->dest);
if(tcp->syn)
if(tcp->syn && !tcp->ack)
notcpsyn=0; /* We *DO* have SYN, value FALSE */
prt=IP_FW_F_TCP;
break;
......@@ -930,38 +930,23 @@ static int ip_chain_procinfo(int stage, char *buffer, char **start,
#ifdef CONFIG_IP_ACCT
int ip_acct_procinfo(char *buffer, char **start, off_t offset, int length)
int ip_acct_procinfo(char *buffer, char **start, off_t offset, int length, int reset)
{
return ip_chain_procinfo(IP_INFO_ACCT, buffer,start,offset,length,0);
}
int ip_acct0_procinfo(char *buffer, char **start, off_t offset, int length)
{
return ip_chain_procinfo(IP_INFO_ACCT, buffer,start,offset,length,1);
return ip_chain_procinfo(IP_INFO_ACCT, buffer,start,offset,length,reset);
}
#endif
#ifdef CONFIG_IP_FIREWALL
int ip_fw_blk_procinfo(char *buffer, char **start, off_t offset, int length)
{
return ip_chain_procinfo(IP_INFO_BLK, buffer,start,offset,length,0);
}
int ip_fw_blk0_procinfo(char *buffer, char **start, off_t offset, int length)
{
return ip_chain_procinfo(IP_INFO_BLK, buffer,start,offset,length,1);
}
int ip_fw_fwd_procinfo(char *buffer, char **start, off_t offset, int length)
int ip_fw_blk_procinfo(char *buffer, char **start, off_t offset, int length, int reset)
{
return ip_chain_procinfo(IP_INFO_FWD, buffer,start,offset,length,0);
return ip_chain_procinfo(IP_INFO_BLK, buffer,start,offset,length,reset);
}
int ip_fw_fwd0_procinfo(char *buffer, char **start, off_t offset, int length)
int ip_fw_fwd_procinfo(char *buffer, char **start, off_t offset, int length, int reset)
{
return ip_chain_procinfo(IP_INFO_FWD, buffer,start,offset,length,1);
return ip_chain_procinfo(IP_INFO_FWD, buffer,start,offset,length,reset);
}
#endif
......@@ -115,7 +115,7 @@ get__netinfo(struct proto *pro, char *buffer, int format, char **start, off_t of
break;
}
sti(); /* We only turn interrupts back on for a moment, but because the interrupt queues anything built up
before this will clear before we jump back and cli, so its not as bad as it looks */
before this will clear before we jump back and cli, so it's not as bad as it looks */
if(pos>offset+length)
break;
}
......
......@@ -152,7 +152,7 @@ int rarp_rcv(struct sk_buff *skb, struct device *dev, struct packet_type *pt)
unsigned char *sha,*tha; /* s for "source", t for "target" */
/*
* If this test doesn't pass, its not IP, or we should ignore it anyway
* If this test doesn't pass, it's not IP, or we should ignore it anyway
*/
if (rarp->ar_hln != dev->addr_len || dev->type != ntohs(rarp->ar_hrd)
......
......@@ -107,7 +107,7 @@
* Alan Cox : Spurious resets on shutdown.
* Alan Cox : Giant 15 minute/60 second timer error
* Alan Cox : Small whoops in selecting before an accept.
* Alan Cox : Kept the state trace facility since its
* Alan Cox : Kept the state trace facility since it's
* handy for debugging.
* Alan Cox : More reset handler fixes.
* Alan Cox : Started rewriting the code based on the RFC's
......@@ -272,7 +272,7 @@ static __inline__ void tcp_set_state(struct sock *sk, int state)
if(sk->debug)
printk("TCP sk=%p, State %s -> %s\n",sk, statename[sk->state],statename[state]);
#endif
/* This is a hack but it doesn't occur often and its going to
/* This is a hack but it doesn't occur often and it's going to
be a real to fix nicely */
if(state==TCP_ESTABLISHED && sk->state==TCP_SYN_RECV)
......@@ -1138,7 +1138,7 @@ static void tcp_send_skb(struct sock *sk, struct sk_buff *skb)
if (size == sizeof(struct tcphdr))
{
/* If its got a syn or fin its notionally included in the size..*/
/* If it's got a syn or fin it's notionally included in the size..*/
if(!th->syn && !th->fin)
{
printk("tcp_send_skb: attempt to queue a bogon.\n");
......@@ -1312,7 +1312,7 @@ static void tcp_send_ack(unsigned long sequence, unsigned long ack,
{
/*
* Force it to send an ack. We don't have to do this
* (ACK is unreliable) but its much better use of
* (ACK is unreliable) but it's much better use of
* bandwidth on slow links to send a spare ack than
* resend packets.
*/
......@@ -1612,7 +1612,7 @@ static int tcp_write(struct sock *sk, unsigned char *from,
if (copy < sk->mss && !(flags & MSG_OOB))
{
/*
* We will release the socket incase we sleep here.
* We will release the socket in case we sleep here.
*/
release_sock(sk);
/*
......@@ -1626,7 +1626,7 @@ static int tcp_write(struct sock *sk, unsigned char *from,
else
{
/*
* We will release the socket incase we sleep here.
* We will release the socket in case we sleep here.
*/
release_sock(sk);
skb = prot->wmalloc(sk, copy + prot->max_header , 0, GFP_KERNEL);
......@@ -2413,7 +2413,7 @@ void tcp_shutdown(struct sock *sk, int how)
return;
/*
* If we've already sent a FIN, or its a closed state
* If we've already sent a FIN, or it's a closed state
*/
if (sk->state == TCP_FIN_WAIT1 ||
......@@ -3355,7 +3355,7 @@ extern __inline__ int tcp_ack(struct sock *sk, struct tcphdr *th, unsigned long
/*
* If our packet is before the ack sequence we can
* discard it as its confirmed to have arrived the other end.
* discard it as it's confirmed to have arrived the other end.
*/
if (before(sk->send_head->h.seq, ack+1))
......@@ -3837,13 +3837,13 @@ extern __inline__ int tcp_data(struct sk_buff *skb, struct sock *sk,
* cope with it.
*/
if(skb->len) /* We don't care if its just an ack or
if(skb->len) /* We don't care if it's just an ack or
a keepalive/window probe */
{
new_seq= th->seq + skb->len + th->syn; /* Right edge of _data_ part of frame */
/* Do this the way 4.4BSD treats it. Not what I'd
regard as the meaning of the spec but its what BSD
regard as the meaning of the spec but it's what BSD
does and clearly they know everything 8) */
/*
......@@ -4537,7 +4537,7 @@ int tcp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt,
sk = get_sock(&tcp_prot, th->dest, saddr, th->source, daddr);
/*
* If this socket has got a reset its to all intents and purposes
* If this socket has got a reset it's to all intents and purposes
* really dead. Count closed sockets as dead.
*
* Note: BSD appears to have a bug here. A 'closed' TCP in BSD
......@@ -4698,7 +4698,7 @@ int tcp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt,
/* Crossed SYN or previous junk segment */
if(th->ack)
{
/* We got an ack, but its not a good ack */
/* We got an ack, but it's not a good ack */
if(!tcp_ack(sk,th,saddr,len))
{
/* Reset the ack - its an ack from a
......@@ -4721,7 +4721,7 @@ int tcp_rcv(struct sk_buff *skb, struct device *dev, struct options *opt,
return 0;
}
/*
* Ok.. its good. Set up sequence numbers and
* Ok.. it's good. Set up sequence numbers and
* move to established.
*/
syn_ok=1; /* Don't reset this connection for the syn */
......
......@@ -406,7 +406,7 @@ static int sock_select(struct inode *inode, struct file *file, int sel_type, sel
}
/*
* We can't return errors to select, so its either yes or no.
* We can't return errors to select, so it's either yes or no.
*/
if (sock->ops && sock->ops->select)
......@@ -719,7 +719,7 @@ static int sock_socketpair(int family, int type, int protocol, unsigned long uso
/*
* Bind a name to a socket. Nothing much to do here since its
* Bind a name to a socket. Nothing much to do here since it's
* the protocol's responsibility to handle the local address.
*
* We move the socket address to kernel space before we call
......
......@@ -330,7 +330,7 @@ static int unix_proto_create(struct socket *sock, int protocol)
upd->protocol = protocol;
upd->socket = sock;
UN_DATA(sock) = upd;
upd->refcnt = 1; /* Now its complete - bgm */
upd->refcnt = 1; /* Now it's complete - bgm */
return(0);
}
......@@ -430,7 +430,7 @@ static int unix_proto_bind(struct socket *sock, struct sockaddr *umyaddr,
i=-EADDRINUSE;
return(i);
}
upd->sockaddr_len = sockaddr_len; /* now its legal */
upd->sockaddr_len = sockaddr_len; /* now it's legal */
return(0);
}
......
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