Commit 26265657 authored by Linus Torvalds's avatar Linus Torvalds

Import 1.3.79

parent 24747a70
This diff is collapsed.
Video Mode Selection Support 2.5
Video Mode Selection Support 2.6
(c) 1995, 1996 Martin Mares, <mj@k332.feld.cvut.cz>
--------------------------------------------------------------------------------
......@@ -223,3 +223,5 @@ this must be done manually -- no autodetection mechanisms are available.
only with some loaders now.
Added a Tseng 132x60 mode.
2.5 (19-Mar-96) Fixed a VESA mode scanning bug introduced in 2.4.
2.6 (25-Mar-96) Some VESA BIOS errors not reported -- it fixes error reports on
several cards with broken VESA code (e.g., ATI VGA).
VERSION = 1
PATCHLEVEL = 3
SUBLEVEL = 78
SUBLEVEL = 79
ARCH = i386
......
!
! Display adapter & video mode setup, version 2.5 (19-Mar-96)
! Display adapter & video mode setup, version 2.6 (25-Mar-96)
!
! Copyright (C) 1995, 1996 Martin Mares <mj@k332.feld.cvut.cz>
! Based on the original setup.S code (C) Linus Torvalds
......@@ -779,7 +779,7 @@ vesa2: push cx
add bh,#VIDEO_FIRST_VESA>>8
pop cx
cmp ax,#0x004f
jnz vesae
jnz vesan ! Don't report errors (buggy BIOSES :-[ )
mov al,(di) ! Check capabilities. We require
and al,#0x19 ! a color text mode.
cmp al,#0x09
......
......@@ -225,6 +225,16 @@ static const char * i586model(unsigned int nr)
return NULL;
}
static const char * i686model(unsigned int nr)
{
static const char *model[] = {
"PPro A-step", "Pentium Pro"
};
if (nr < sizeof(model)/sizeof(char *))
return model[nr];
return NULL;
}
static const char * getmodel(int x86, int model)
{
const char *p = NULL;
......@@ -236,6 +246,9 @@ static const char * getmodel(int x86, int model)
case 5:
p = i586model(model);
break;
case 6:
p = i686model(model);
break;
}
if (p)
return p;
......@@ -294,12 +307,15 @@ int get_cpuinfo(char * buffer)
"fdiv_bug\t: %s\n"
"hlt_bug\t\t: %s\n"
"fpu\t\t: %s\n"
"fpu_exception\t: %s\n"
"cpuid\t\t: %s\n"
"wp\t\t: %s\n"
"flags\t\t:",
CD(fdiv_bug) ? "yes" : "no",
CD(hlt_works_ok) ? "no" : "yes",
CD(hard_math) ? "yes" : "no",
(CD(hard_math) && ignore_irq13)
? "yes" : "no",
CD(have_cpuid) ? "yes" : "no",
CD(wp_works_ok) ? "yes" : "no");
......
......@@ -2597,7 +2597,7 @@ static void redo_fd_request(void)
}
while(1){
if (!CURRENT || CURRENT_PLUGGED) {
if (!CURRENT) {
CLEAR_INTR;
unlock_fdc();
return;
......
......@@ -1469,8 +1469,6 @@ void ide_do_request (ide_hwgroup_t *hwgroup)
*/
hwif = hwgroup->next_hwif;
do {
if (IS_PLUGGED(blk_dev + hwif->major))
continue;
rq = blk_dev[hwif->major].current_request;
if (rq != NULL && rq->rq_status != RQ_INACTIVE)
goto got_rq;
......
......@@ -85,8 +85,9 @@ static void unplug_device(void * data)
save_flags(flags);
cli();
if (dev->current_request)
(dev->request_fn)();
dev->current_request = dev->plug.next;
dev->plug.next = NULL;
(dev->request_fn)();
restore_flags(flags);
}
......@@ -94,11 +95,20 @@ static void unplug_device(void * data)
* "plug" the device if there are no outstanding requests: this will
* force the transfer to start only after we have put all the requests
* on the list.
*
* Note! We can do the check without interrupts off, because interrupts
* will never add a new request to the queue, only take requests off..
*/
static inline void plug_device(struct blk_dev_struct * dev)
{
if (!dev->current_request && !IS_PLUGGED(dev)) {
if (!dev->current_request) {
unsigned long flags;
save_flags(flags);
cli();
dev->current_request = &dev->plug;
queue_task_irq_off(&dev->plug_tq, &tq_scheduler);
restore_flags(flags);
}
}
......@@ -250,8 +260,7 @@ void add_request(struct blk_dev_struct * dev, struct request * req)
if (!(tmp = dev->current_request)) {
dev->current_request = req;
up (&request_lock);
if (!IS_PLUGGED(dev))
(dev->request_fn)();
(dev->request_fn)();
sti();
return;
}
......@@ -266,7 +275,7 @@ void add_request(struct blk_dev_struct * dev, struct request * req)
up (&request_lock);
/* for SCSI devices, call request_fn unconditionally */
if (!IS_PLUGGED(dev) && scsi_major(MAJOR(req->rq_dev)) && MAJOR(req->rq_dev)!=MD_MAJOR)
if (scsi_major(MAJOR(req->rq_dev)) && MAJOR(req->rq_dev)!=MD_MAJOR)
(dev->request_fn)();
sti();
......@@ -609,6 +618,9 @@ int blk_dev_init(void)
for (dev = blk_dev + MAX_BLKDEV; dev-- != blk_dev;) {
dev->request_fn = NULL;
dev->current_request = NULL;
dev->plug.rq_status = RQ_INACTIVE;
dev->plug.cmd = -1;
dev->plug.next = NULL;
dev->plug_tq.routine = &unplug_device;
dev->plug_tq.data = dev;
}
......
......@@ -1525,7 +1525,7 @@ do_cdu31a_request(void)
* The beginning here is stolen from the hard disk driver. I hope
* it's right.
*/
if (!(CURRENT) || CURRENT_PLUGGED || CURRENT->rq_status == RQ_INACTIVE)
if (!(CURRENT) || CURRENT->rq_status == RQ_INACTIVE)
{
goto end_do_cdu31a_request;
}
......
......@@ -1654,7 +1654,7 @@ sonycd535_setup(char *strings, int *ints)
* then call with io base of 0
*/
if (ints[0] > 0)
if (ints[0] != 0)
if (ints[1] != 0)
sony535_cd_base_io = ints[1];
if (ints[0] > 1)
sony535_irq_used = ints[2];
......
......@@ -2,8 +2,8 @@
Stallion Multiport Serial Drivers
---------------------------------
Version: 1.0.6
Date: 11MAR96
Version: 1.0.8
Date: 25MAR96
Author: Greg Ungerer (gerg@stallion.oz.au)
......@@ -12,31 +12,31 @@ Author: Greg Ungerer (gerg@stallion.oz.au)
There are two drivers that work with the different families of Stallion
multiport serial boards. One is for the Stallion smart boards - that is
EasyIO and EasyConnection 8/32, the other for the true Stallion intelligent
multiport boards - Stallion, Brumby, ONboard and EasyConnection 8/64.
multiport boards - EasyConnection 8/64, ONboard, Brumby and Stallion.
If you are using any of the Stallion intelligent multiport boards (Brumby,
ONboard, Stallion, EasyConnection 8/64) with Linux you will need to get the
driver utility package. This package is available at most of the Linux
archive sites (and on CD's that contain these archives). The file will be
called stallion-X.X.X.tar.gz where X.X.X will be the version number. In
particular this package contains the board embeded executable images that
particular this package contains the board embedded executable images that
are required for these boards. It also contains the downloader program.
These boards cannot be used without this.
The following ftp sites (and their mirrors) definately have the stallion
The following ftp sites (and their mirrors) definitely have the stallion
driver utility package: ftp.stallion.com, tsx-11.mit.edu, sunsite.unc.edu.
ftp.stallion.com:/drivers/ata5/Linux/stallion-1.0.1.tar.gz
tsx-11.mit.edu:/pub/linux/BETA/serial/stallion/stallion-1.0.1.tar.gz
sunsite.unc.edu:/pub/Linux/kernel/patches/serial/stallion-1.0.1.tar.gz
ftp.stallion.com:/drivers/ata5/Linux/stallion-1.0.7.tar.gz
tsx-11.mit.edu:/pub/linux/BETA/serial/stallion/stallion-1.0.7.tar.gz
sunsite.unc.edu:/pub/Linux/kernel/patches/serial/stallion-1.0.7.tar.gz
If you are using the EasyIO or EasyConnection 8/32 boards then you don't
need this package. Although it does have a handy script to create the
/dev device nodes for these boards.
/dev device nodes for these boards, and a serial stats display program.
If you require DIP switch settings, EISA/MCA configuration files, or any
other information related to Stallion boards then have a look at
http://www.stallion.com.
other information related to Stallion boards then have a look at Stallion's
web pages at http://www.stallion.com.
......@@ -265,13 +265,15 @@ by Greg Hankins. It will explain everything you need to know!
You can use both drivers at once if you have a mix of board types installed
in a system. However to do this you will need to change the major numbers
used by one of the drivers. Currently both drivers use major numbers 24 and
25 for their port devices. Change one driver to use some other major numbers,
used by one of the drivers. Currently both drivers use major numbers 24, 25
and 28 for their devices. Change one driver to use some other major numbers,
and then modify the mkdevnods script to make device nodes based on those new
major numbers. For example, you could change the stallion.c driver to use
major numbers 30 and 31 (don't use 28, it's used by istallion.c driver for its
sio memory device!). You will also need to create device nodes with different
names for the ports...
major numbers. For example, you could change the istallion.c driver to use
major numbers 60, 61 and 62. You will also need to create device nodes with
different names for the ports, for example ttyF# and cuf#.
The original Stallion board is no longer supported by Stallion Technologies.
Although it is known to work with the istallion driver.
Finding a free physical memory address range can be a problem. The older
boards like the Stallion and ONboard need large areas (64K or even 128K), so
......@@ -301,32 +303,14 @@ them can be used then the high memory support to use the really high address
ranges is the best option. Typically the 2Gb range is convenient for them,
and gets them well out of the way.
There is a new utility program in the stallion utility package called
"stlstty". Most people will not need to use this. If you have an ONboard/16
which has partial signals on the upper 12 ports then this program can be used
to set the upper ports to have modem control instead of hardware flow control.
Use the "mapcts maprts" flag options to this utility on the port(s) that you
wish to do this mapping on, eg
./stlstty maprts mapcts < /dev/cue0
This enables RTS to act like DTR and CTS to act like DCD on the specified
port.
The ports of the EasyIO-8M board do not have DCD or DTR signals. So these
ports cannot be used as real modem devices. Generally when using these
ports you should only use the cueX devices.
There is another new utility in this package that reports statistics on
the serial ports. You will need to have the curses libray installed on
your system to build it.
To build the statistics display program type:
make stlstats
Once compiled simply run it (you will need to be root) and it will display
a port summary for the first board and panel installed. Use the digits to
select different board numbers, or 'n' to cycle through the panels on a
board. To look at detailed port information then hit 'p', that will display
detailed port 0 information. Use the digits and letteres 'a' through 'f' to
select the different ports (on this board and panel).
The driver utility package contains a couple of very useful programs. One
is a serial port statistics collection and display program - very handy
for solving serial port problems. The other is an extended option setting
program that works with the intelligent boards.
......
......@@ -180,7 +180,7 @@ static int stli_nrbrds = sizeof(stli_brdconf) / sizeof(stlconf_t);
* all the local structures required by a serial tty driver.
*/
static char *stli_drvname = "Stallion Intelligent Multiport Serial Driver";
static char *stli_drvversion = "1.0.6";
static char *stli_drvversion = "1.0.8";
static char *stli_serialname = "ttyE";
static char *stli_calloutname = "cue";
......@@ -279,7 +279,6 @@ typedef struct {
struct termios normaltermios;
struct termios callouttermios;
asysigs_t asig;
comstats_t stats;
unsigned long addr;
unsigned long rxoffset;
unsigned long txoffset;
......@@ -4351,48 +4350,48 @@ static int stli_getportstats(stliport_t *portp, comstats_t *cp)
if (brdp == (stlibrd_t *) NULL)
return(-ENODEV);
portp->stats.state = portp->state;
portp->stats.flags = portp->flags;
if ((rc = stli_cmdwait(brdp, portp, A_GETSTATS, &stli_cdkstats, sizeof(asystats_t), 1)) < 0)
return(rc);
stli_comstats.state = portp->state;
stli_comstats.flags = portp->flags;
if (portp->tty != (struct tty_struct *) NULL) {
portp->stats.ttystate = portp->tty->flags;
portp->stats.cflags = portp->tty->termios->c_cflag;
portp->stats.iflags = portp->tty->termios->c_iflag;
portp->stats.oflags = portp->tty->termios->c_oflag;
portp->stats.lflags = portp->tty->termios->c_lflag;
portp->stats.rxbuffered = portp->tty->flip.count;
stli_comstats.ttystate = portp->tty->flags;
stli_comstats.cflags = portp->tty->termios->c_cflag;
stli_comstats.iflags = portp->tty->termios->c_iflag;
stli_comstats.oflags = portp->tty->termios->c_oflag;
stli_comstats.lflags = portp->tty->termios->c_lflag;
stli_comstats.rxbuffered = portp->tty->flip.count;
} else {
portp->stats.ttystate = 0;
portp->stats.cflags = 0;
portp->stats.iflags = 0;
portp->stats.oflags = 0;
portp->stats.lflags = 0;
portp->stats.rxbuffered = 0;
stli_comstats.ttystate = 0;
stli_comstats.cflags = 0;
stli_comstats.iflags = 0;
stli_comstats.oflags = 0;
stli_comstats.lflags = 0;
stli_comstats.rxbuffered = 0;
}
if ((rc = stli_cmdwait(brdp, portp, A_GETSTATS, &stli_cdkstats, sizeof(asystats_t), 1)) < 0)
return(rc);
portp->stats.txtotal = stli_cdkstats.txchars;
portp->stats.rxtotal = stli_cdkstats.rxchars + stli_cdkstats.ringover;
portp->stats.txbuffered = stli_cdkstats.txringq;
portp->stats.rxbuffered += stli_cdkstats.rxringq;
portp->stats.rxoverrun = stli_cdkstats.overruns;
portp->stats.rxparity = stli_cdkstats.parity;
portp->stats.rxframing = stli_cdkstats.framing;
portp->stats.rxlost = stli_cdkstats.ringover;
portp->stats.rxbreaks = stli_cdkstats.rxbreaks;
portp->stats.txbreaks = stli_cdkstats.txbreaks;
portp->stats.txxon = stli_cdkstats.txstart;
portp->stats.txxoff = stli_cdkstats.txstop;
portp->stats.rxxon = stli_cdkstats.rxstart;
portp->stats.rxxoff = stli_cdkstats.rxstop;
portp->stats.rxrtsoff = stli_cdkstats.rtscnt / 2;
portp->stats.rxrtson = stli_cdkstats.rtscnt - portp->stats.rxrtsoff;
portp->stats.modem = stli_cdkstats.dcdcnt;
portp->stats.hwid = stli_cdkstats.hwid;
portp->stats.signals = stli_mktiocm(stli_cdkstats.signals);
memcpy_tofs(cp, &portp->stats, sizeof(comstats_t));
stli_comstats.txtotal = stli_cdkstats.txchars;
stli_comstats.rxtotal = stli_cdkstats.rxchars + stli_cdkstats.ringover;
stli_comstats.txbuffered = stli_cdkstats.txringq;
stli_comstats.rxbuffered += stli_cdkstats.rxringq;
stli_comstats.rxoverrun = stli_cdkstats.overruns;
stli_comstats.rxparity = stli_cdkstats.parity;
stli_comstats.rxframing = stli_cdkstats.framing;
stli_comstats.rxlost = stli_cdkstats.ringover;
stli_comstats.rxbreaks = stli_cdkstats.rxbreaks;
stli_comstats.txbreaks = stli_cdkstats.txbreaks;
stli_comstats.txxon = stli_cdkstats.txstart;
stli_comstats.txxoff = stli_cdkstats.txstop;
stli_comstats.rxxon = stli_cdkstats.rxstart;
stli_comstats.rxxoff = stli_cdkstats.rxstop;
stli_comstats.rxrtsoff = stli_cdkstats.rtscnt / 2;
stli_comstats.rxrtson = stli_cdkstats.rtscnt - stli_comstats.rxrtsoff;
stli_comstats.modem = stli_cdkstats.dcdcnt;
stli_comstats.hwid = stli_cdkstats.hwid;
stli_comstats.signals = stli_mktiocm(stli_cdkstats.signals);
memcpy_tofs(cp, &stli_comstats, sizeof(comstats_t));
return(0);
}
......@@ -4418,15 +4417,15 @@ static int stli_clrportstats(stliport_t *portp, comstats_t *cp)
if (brdp == (stlibrd_t *) NULL)
return(-ENODEV);
memset(&portp->stats, 0, sizeof(comstats_t));
portp->stats.brd = portp->brdnr;
portp->stats.panel = portp->panelnr;
portp->stats.port = portp->portnr;
if ((rc = stli_cmdwait(brdp, portp, A_CLEARSTATS, 0, 0, 0)) < 0)
return(rc);
memcpy_tofs(cp, &portp->stats, sizeof(comstats_t));
memset(&stli_comstats, 0, sizeof(comstats_t));
stli_comstats.brd = portp->brdnr;
stli_comstats.panel = portp->panelnr;
stli_comstats.port = portp->portnr;
memcpy_tofs(cp, &stli_comstats, sizeof(comstats_t));
return(0);
}
......
......@@ -145,7 +145,7 @@ static int stl_nrbrds = sizeof(stl_brdconf) / sizeof(stlconf_t);
* all the local structures required by a serial tty driver.
*/
static char *stl_drvname = "Stallion Multiport Serial Driver";
static char *stl_drvversion = "1.0.6";
static char *stl_drvversion = "1.0.8";
static char *stl_serialname = "ttyE";
static char *stl_calloutname = "cue";
......
......@@ -153,7 +153,7 @@ static short TokBaseAddrs[] = { MMIOStartLocP, MMIOStartLocA };
int tok_probe(struct device *dev);
unsigned char get_sram_size(struct tok_info *adapt_info);
static int tok_init_card(struct device *dev);
static void tok_init_card(unsigned long dev_addr);
int trdev_init(struct device *dev);
void tok_interrupt(int irq, void *dev_id, struct pt_regs *regs);
......
......@@ -514,7 +514,7 @@ static Scsi_Cmnd * end_scsi_request(Scsi_Cmnd * SCpnt, int uptodate, int sectors
* turned off
*/
#define INIT_SCSI_REQUEST \
if (!CURRENT || CURRENT_PLUGGED) { \
if (!CURRENT) { \
CLEAR_INTR; \
restore_flags(flags); \
return; \
......
......@@ -103,7 +103,7 @@ union bdflush_param{
trim back the buffers */
} b_un;
unsigned int data[N_PARAM];
} bdf_prm = {{25, 500, 64, 256, 15, 30*HZ, 5*HZ, 1884, 2}};
} bdf_prm = {{60, 500, 64, 256, 15, 30*HZ, 5*HZ, 1884, 2}};
/* The lav constant is set for 1 minute, as long as the update process runs
every 5 seconds. If you change the frequency of update, the time
......
......@@ -393,7 +393,7 @@ ncp_read_volume_list(struct ncp_server *server, int fpos, int cache_size)
if (ncp_get_volume_info_with_number(server, i, &info) != 0)
{
return total_count;
return (total_count - fpos);
}
if (strlen(info.volume_name) > 0)
......
......@@ -65,8 +65,8 @@
#include <linux/if.h>
#include <linux/inet.h>
#include <linux/net.h>
#include <linux/if_arp.h>
#include <linux/netdevice.h>
#include <linux/if_arp.h>
#ifdef CONFIG_AX25
#include <net/ax25.h> /* For AX25_P_IP */
#endif
......
......@@ -7,25 +7,29 @@
* assume GCC is being used.
*/
typedef unsigned int __dev_t;
typedef unsigned int __ino_t;
typedef unsigned int __mode_t;
typedef unsigned short __nlink_t;
typedef long __off_t;
typedef int __pid_t;
typedef unsigned int __uid_t;
typedef unsigned int __gid_t;
typedef unsigned long __size_t;
typedef long __ssize_t;
typedef long __ptrdiff_t;
typedef long __time_t;
typedef long __clock_t;
typedef int __daddr_t;
typedef char * __caddr_t;
typedef unsigned int __kernel_dev_t;
typedef unsigned int __kernel_ino_t;
typedef unsigned int __kernel_mode_t;
typedef unsigned short __kernel_nlink_t;
typedef long __kernel_off_t;
typedef int __kernel_pid_t;
typedef unsigned int __kernel_uid_t;
typedef unsigned int __kernel_gid_t;
typedef unsigned long __kernel_size_t;
typedef long __kernel_ssize_t;
typedef long __kernel_ptrdiff_t;
typedef long __kernel_time_t;
typedef long __kernel_clock_t;
typedef int __kernel_daddr_t;
typedef char * __kernel_caddr_t;
#ifdef __GNUC__
typedef long long __kernel_loff_t;
#endif
typedef struct {
int val[2];
} __fsid_t;
} __kernel_fsid_t;
#ifndef __GNUC__
......@@ -33,14 +37,14 @@ typedef struct {
#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
#define __FD_ISSET(d, set) ((set)->fds_bits[__FDELT(d)] & __FDMASK(d))
#define __FD_ZERO(set) \
((void) memset ((__ptr_t) (set), 0, sizeof (__fd_set)))
((void) memset ((__ptr_t) (set), 0, sizeof (__kernel_fd_set)))
#else /* __GNUC__ */
/* With GNU C, use inline functions instead so args are evaluated only once: */
#undef __FD_SET
static __inline__ void __FD_SET(unsigned long fd, __fd_set *fdsetp)
static __inline__ void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
{
unsigned long _tmp = fd / __NFDBITS;
unsigned long _rem = fd % __NFDBITS;
......@@ -48,7 +52,7 @@ static __inline__ void __FD_SET(unsigned long fd, __fd_set *fdsetp)
}
#undef __FD_CLR
static __inline__ void __FD_CLR(unsigned long fd, __fd_set *fdsetp)
static __inline__ void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp)
{
unsigned long _tmp = fd / __NFDBITS;
unsigned long _rem = fd % __NFDBITS;
......@@ -56,7 +60,7 @@ static __inline__ void __FD_CLR(unsigned long fd, __fd_set *fdsetp)
}
#undef __FD_ISSET
static __inline__ int __FD_ISSET(unsigned long fd, __fd_set *p)
static __inline__ int __FD_ISSET(unsigned long fd, __kernel_fd_set *p)
{
unsigned long _tmp = fd / __NFDBITS;
unsigned long _rem = fd % __NFDBITS;
......@@ -68,7 +72,7 @@ static __inline__ int __FD_ISSET(unsigned long fd, __fd_set *p)
* for a 256-bit fd_set)
*/
#undef __FD_ZERO
static __inline__ void __FD_ZERO(__fd_set *p)
static __inline__ void __FD_ZERO(__kernel_fd_set *p)
{
unsigned int *tmp = p->fds_bits;
int i;
......
......@@ -5,7 +5,7 @@
#include <linux/posix_types.h>
typedef __fsid_t fsid_t;
typedef __kernel_fsid_t fsid_t;
#endif
......@@ -23,7 +23,7 @@ struct statfs {
int f_bavail;
int f_files;
int f_ffree;
__fsid_t f_fsid;
__kernel_fsid_t f_fsid;
/* linux-specific entries start here.. */
int f_namelen;
};
......
......@@ -7,21 +7,25 @@
* assume GCC is being used.
*/
typedef unsigned short __dev_t;
typedef unsigned long __ino_t;
typedef unsigned short __mode_t;
typedef unsigned short __nlink_t;
typedef long __off_t;
typedef int __pid_t;
typedef unsigned short __uid_t;
typedef unsigned short __gid_t;
typedef unsigned int __size_t;
typedef int __ssize_t;
typedef int __ptrdiff_t;
typedef long __time_t;
typedef long __clock_t;
typedef int __daddr_t;
typedef char * __caddr_t;
typedef unsigned short __kernel_dev_t;
typedef unsigned long __kernel_ino_t;
typedef unsigned short __kernel_mode_t;
typedef unsigned short __kernel_nlink_t;
typedef long __kernel_off_t;
typedef int __kernel_pid_t;
typedef unsigned short __kernel_uid_t;
typedef unsigned short __kernel_gid_t;
typedef unsigned int __kernel_size_t;
typedef int __kernel_ssize_t;
typedef int __kernel_ptrdiff_t;
typedef long __kernel_time_t;
typedef long __kernel_clock_t;
typedef int __kernel_daddr_t;
typedef char * __kernel_caddr_t;
#ifdef __GNUC__
typedef long long __kernel_loff_t;
#endif
#undef __FD_SET
#define __FD_SET(fd,fdsetp) \
......
......@@ -319,8 +319,6 @@ static void floppy_off(unsigned int nr);
#define CURRENT (blk_dev[MAJOR_NR].current_request)
#endif
#define CURRENT_PLUGGED IS_PLUGGED(blk_dev+MAJOR_NR)
#define CURRENT_DEV DEVICE_NR(CURRENT->rq_dev)
#ifdef DEVICE_INTR
......@@ -358,7 +356,7 @@ static void (DEVICE_REQUEST)(void);
#endif
#define INIT_REQUEST \
if (!CURRENT || CURRENT_PLUGGED) {\
if (!CURRENT) {\
CLEAR_INTR; \
return; \
} \
......
......@@ -36,11 +36,10 @@ struct request {
struct blk_dev_struct {
void (*request_fn)(void);
struct request * current_request;
struct request plug;
struct tq_struct plug_tq;
};
#define IS_PLUGGED(dev) ((dev)->plug_tq.sync)
struct sec_size {
unsigned block_size;
unsigned block_size_bits;
......
#ifndef _LINUX_POSIX_TYPES_H
#define _LINUX_POSIX_TYPES_H
#define _GNU_TYPES_H
/*
* This file is generally used by user-level software, so you need to
* be a little careful about namespace pollution etc. Also, we cannot
......@@ -45,15 +43,8 @@
typedef struct fd_set {
unsigned int fds_bits [__FDSET_INTS];
} __fd_set;
} __kernel_fd_set;
#include <asm/posix_types.h>
/* bsd */
typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;
#endif /* _LINUX_POSIX_TYPES_H */
......@@ -6,23 +6,20 @@
#ifndef _LINUX_TYPES_DONT_EXPORT
typedef __fd_set fd_set;
typedef __dev_t dev_t;
typedef __ino_t ino_t;
typedef __mode_t mode_t;
typedef __nlink_t nlink_t;
typedef __off_t off_t;
typedef __pid_t pid_t;
typedef __uid_t uid_t;
typedef __gid_t gid_t;
typedef __daddr_t daddr_t;
typedef __kernel_fd_set fd_set;
typedef __kernel_dev_t dev_t;
typedef __kernel_ino_t ino_t;
typedef __kernel_mode_t mode_t;
typedef __kernel_nlink_t nlink_t;
typedef __kernel_off_t off_t;
typedef __kernel_pid_t pid_t;
typedef __kernel_uid_t uid_t;
typedef __kernel_gid_t gid_t;
typedef __kernel_daddr_t daddr_t;
/* bsd */
typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
typedef __kernel_loff_t loff_t;
#endif
/*
* The following typedefs are also protected by individual ifdefs for
......@@ -30,39 +27,45 @@ typedef __u_long u_long;
*/
#ifndef _SIZE_T
#define _SIZE_T
typedef __size_t size_t;
typedef __kernel_size_t size_t;
#endif
#ifndef _SSIZE_T
#define _SSIZE_T
typedef __ssize_t ssize_t;
typedef __kernel_ssize_t ssize_t;
#endif
#ifndef _PTRDIFF_T
#define _PTRDIFF_T
typedef __ptrdiff_t ptrdiff_t;
typedef __kernel_ptrdiff_t ptrdiff_t;
#endif
#ifndef _TIME_T
#define _TIME_T
typedef __time_t time_t;
typedef __kernel_time_t time_t;
#endif
#ifndef _CLOCK_T
#define _CLOCK_T
typedef __clock_t clock_t;
typedef __kernel_clock_t clock_t;
#endif
#ifndef _CADDR_T
#define _CADDR_T
typedef __caddr_t caddr_t;
typedef __kernel_caddr_t caddr_t;
#endif
/* bsd */
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
/* sysv */
typedef unsigned char unchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
typedef unsigned char unchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
#endif /* _LINUX_TYPES_DONT_EXPORT */
......@@ -71,22 +74,11 @@ typedef unsigned long ulong;
* any application/library that wants linux/types.h.
*/
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
typedef long long __loff_t;
#ifndef _LINUX_TYPES_DONT_EXPORT
#define _LOFF_T
typedef __loff_t loff_t;
#endif
#endif
struct ustat {
__daddr_t f_tfree;
__ino_t f_tinode;
char f_fname[6];
char f_fpack[6];
__kernel_daddr_t f_tfree;
__kernel_ino_t f_tinode;
char f_fname[6];
char f_fpack[6];
};
#endif /* _LINUX_TYPES_H */
......@@ -346,11 +346,6 @@ struct symbol_table symbol_table = {
X(aux_device_present),
X(kbd_read_mask),
#ifdef CONFIG_TR
X(tr_setup),
X(tr_type_trans),
#endif
#ifdef CONFIG_BLK_DEV_IDE_PCMCIA
X(ide_register),
X(ide_unregister),
......
......@@ -41,6 +41,7 @@
#include <linux/socket.h>
#include <linux/sockios.h>
#include <linux/errno.h>
#include <linux/netdevice.h>
#include <linux/if_arp.h>
#include <linux/in.h>
#include <linux/config.h>
......@@ -49,7 +50,6 @@
#include <asm/segment.h>
#include <stdarg.h>
#include <linux/inet.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
#include <net/ip.h>
#include <net/route.h>
......
......@@ -113,6 +113,11 @@ static struct symbol_table net_syms = {
X(NS8390_init),
#endif
#ifdef CONFIG_TR
X(tr_setup),
X(tr_type_trans),
#endif
#ifdef CONFIG_NET_ALIAS
#include <linux/net_alias.h>
#endif
......
......@@ -78,16 +78,13 @@ function bool () {
eval $2=\${$2:-'n'} x=\$$2
case $x in
y|m) yes='ON' no='OFF' flag="*"
;;
n) yes='OFF' no='ON' flag=" "
;;
y|m) flag="*" ;;
n) flag=" " ;;
esac
echo -ne "'$2' '($flag) $1' " >>MCmenu
echo -e "function $2 () { l_bool '$1' '$yes' '$no' '$2' }\n" \
>>MCradiolists
echo -e "function $2 () { l_bool '$2' \"\$1\" }\n" >>MCradiolists
}
#
......@@ -104,20 +101,15 @@ function tristate () {
eval $2=\${$2:-'n'} x=\$$2
case $x in
y) yes='ON' no='OFF' module='OFF' flag="*"
;;
m) yes='OFF' no='OFF' module='ON' flag="M"
;;
*) yes='OFF' no='ON' module='OFF' flag=" "
;;
y) flag="*" ;;
m) flag="M" ;;
*) flag=" " ;;
esac
echo -ne "'$2' '<$flag> $1' " >>MCmenu
echo -e "
function $2 () { \
l_tristate '$1' '$yes' '$no' '$module' '$2'
}" >>MCradiolists
function $2 () { l_tristate '$2' \"\$1\" }" >>MCradiolists
fi
}
......@@ -155,7 +147,7 @@ function int () {
echo -ne "'$2' '($x) $1' " >>MCmenu
echo -e "function $2 () { l_int '$1' '$2' '$3' '$x' }\n" >>MCradiolists
echo -e "function $2 () { l_int '$1' '$2' '$3' '$x' }" >>MCradiolists
}
#
......@@ -166,7 +158,7 @@ function hex () {
echo -ne "'$2' '($x) $1' " >>MCmenu
echo -e "function $2 () { l_hex '$1' '$2' '$3' '$x' }\n" >>MCradiolists
echo -e "function $2 () { l_hex '$1' '$2' '$3' '$x' }" >>MCradiolists
}
#
......@@ -203,9 +195,8 @@ function choice () {
echo -ne "'$firstchoice' '($current) $title' " >>MCmenu
echo -e "
function $firstchoice () {
l_choice '$title' \"$choices\" $current
}\n" >>MCradiolists
function $firstchoice () \
{ l_choice '$title' \"$choices\" $current }" >>MCradiolists
}
} # END load_functions()
......@@ -236,12 +227,14 @@ function extract_help () {
if [ -z "$text" ]
then
echo "There is no help available for this kernel option."
echo "There is no help available for this kernel option."
return 1
else
echo "$text"
fi
else
echo "There is no help available for this kernel option."
return 1
fi
}
......@@ -263,7 +256,7 @@ function help () {
#
# Show the README file.
#
function show_readme() {
function show_readme () {
$DIALOG --backtitle "$backtitle" \
--textbox scripts/README.Menuconfig $LINES $COLS
}
......@@ -309,22 +302,15 @@ function l_soundcfg () {
# Handle a boolean (Yes/No) option.
#
function l_bool () {
while true
do
$DIALOG --title "$1" \
--backtitle "$backtitle" \
--radiolist "$radiolist_instructions" 12 70 2 \
'y' 'Yes' $2 'n' 'No' $3 2>MCdialog.out
case "$?" in
0) eval $4=`cat MCdialog.out`
break ;;
1) help "$4" "$1" ;;
*) break ;;
if [ -n "$2" ]
then
case "$2" in
y|m) eval $1=y ;;
*) eval $1=n ;;
esac
done
else
echo -ne "\007"
fi
}
#
......@@ -334,62 +320,44 @@ function mod_bool () {
eval $2=\${$2:-'n'} x=\$$2
case $x in
m) module='ON' no='OFF' flag='M'
;;
*) module='OFF' no='ON' flag=' '
;;
y|m) flag='M' ;;
*) flag=' ' ;;
esac
echo -ne "'$2' '<$flag> $1' " >>MCmenu
echo -e "function $2 () { l_mod_bool '$1' '$module' '$no' '$2' }\n" \
>>MCradiolists
echo -e "function $2 () { l_mod_bool '$2' \"\$1\" }" >>MCradiolists
}
#
# Same as l_bool() except options are (Module/No)
#
function l_mod_bool() {
while true
do
$DIALOG --title "$1" \
--backtitle "$backtitle" \
--radiolist "$radiolist_instructions" 12 70 2 \
'm' 'Module' $2 'n' 'No' $3 2>MCdialog.out
case "$?" in
0) eval $4=`cat MCdialog.out`
break ;;
1) help "$4" "$1" ;;
*) break ;;
if [ -n "$2" ]
then
case "$2" in
y|m) eval $1=m ;;
*) eval $1=n ;;
esac
done
else
echo -ne "\007"
fi
}
#
# Handle a tristate (Yes/No/Module) option.
#
function l_tristate () {
while true
do
$DIALOG --title "$1" \
--backtitle "$backtitle" \
--radiolist "$radiolist_instructions" 13 70 3 \
'y' 'Yes' $2 'n' 'No' $3 'm' 'Module' $4 \
2>MCdialog.out
case "$?" in
0) eval $5=`cat MCdialog.out`
break ;;
1) help "$5" "$1" ;;
*) break ;;
if [ -n "$2" ]
then
case "$2" in
y) eval $1=y ;;
m) eval $1=m ;;
*) eval $1=n ;;
esac
done
else
echo -ne "\007"
fi
}
#
......@@ -401,7 +369,7 @@ function l_int () {
if $DIALOG --title "$1" \
--backtitle "$backtitle" \
--inputbox "$inputbox_instructions_int" \
15 55 "$4" 2>MCdialog.out
10 75 "$4" 2>MCdialog.out
then
answer="`cat MCdialog.out`"
answer="${answer:-$3}"
......@@ -433,7 +401,7 @@ function l_hex () {
if $DIALOG --title "$1" \
--backtitle "$backtitle" \
--inputbox "$inputbox_instructions_hex" \
15 55 "$4" 2>MCdialog.out
10 75 "$4" 2>MCdialog.out
then
answer="`cat MCdialog.out`"
answer="${answer:-$3}"
......@@ -489,7 +457,7 @@ function l_choice () {
if $DIALOG --title "$title" \
--backtitle "$backtitle" \
--radiolist "$radiolist_instructions" \
22 70 11 $list 2>MCdialog.out
15 70 6 $list 2>MCdialog.out
then
choice=`cat MCdialog.out`
break
......@@ -647,30 +615,37 @@ function parse_config_files () {
# dialog commands or recursively call other menus.
#
function activate_menu () {
while true
do
comment_ctr=0
$1 "$default" #Create the radiolists and dialog cmd
. MCradiolists #Read in the dialog functions.
comment_ctr=0 #So comment lines get unique tags
$1 "$default" #Create the lxdialog menu & functions
. MCradiolists #Source the menu's functions
. MCmenu 2>MCdialog.out #Activate this menu
. MCmenu 2>MCdialog.out #Activate the lxdialog menu
ret=$?
case "$?" in
0)
defaults="`cat MCdialog.out`$defaults" #psuedo stack
. MCdialog.out
read selection <MCdialog.out
case "$ret" in
0|3|4|5)
defaults="$selection$defaults" #psuedo stack
case "$ret" in
0) eval $selection ;;
3) eval $selection y ;;
4) eval $selection n ;;
5) eval $selection m ;;
esac
default="${defaults%%*}" defaults="${defaults#*}"
;;
2)
echo >>MCdialog.out
read selection <MCdialog.out
default="${selection%% *}"
case "$selection" in
*"-->"*|\
*"alt_config"*) show_readme ;;
*) eval help $selection ;;
*"-->"*|*"alt_config"*)
show_readme ;;
*)
eval help $selection ;;
esac
;;
255|1)
......@@ -876,8 +851,9 @@ save_configuration () {
m)
if [ "$CONFIG_MODULES" = "y" ]
then
echo "$1=m" >>$CONFIG
echo "#undef $1" >>$CONFIG_H
echo "$1=m" >>$CONFIG
echo "#undef $1" >>$CONFIG_H
echo "#define $1_MODULE 1" >>$CONFIG_H
else
echo "$1=y" >>$CONFIG
echo "#define $1 1" >>$CONFIG_H
......@@ -1026,17 +1002,24 @@ case $x in
COLS=75
;;
esac
if [ $LINES -lt 15 -o $COLS -lt 75 ]
then
echo -e "\n\007Your display is too small to run Menuconfig!\n"
echo "It is currently set to $LINES lines by $COLS columns."
echo "It must be at least 15 lines by 75 columns."
exit 0
fi
menu_instructions="\
The Arrow keys navigate the menu. \
Arrow keys navigate the menu. \
Highlighted letters are hotkeys. \
Press the <Space Bar> to select an item. \
Press <Esc><Esc> to exit. \
Press <?> for Help. \
(*) options will be compiled into the kernel. \
(M) options will be modules. \
< > marks module capable options."
Pressing <Y> includes a feature, <N> excludes it, <M> makes it modular. \
Press <Esc><Esc> to exit or <?> for Help. \
(*) shows built in features. \
(M) shows modules. \
< > features are module capable."
radiolist_instructions="\
Use the arrow keys to navigate this window or \
......@@ -1047,11 +1030,11 @@ Press <?> for additional information about this option."
inputbox_instructions_int="\
Please enter a decimal value between 1 and 9999. \
Fractions will not be accepted. \
Use the <TAB> key to move from the input field to buttons below it."
Use the <TAB> key to move from the input field to the buttons below it."
inputbox_instructions_hex="\
Please enter a hexidecimal value. \
Use the <TAB> key to move from the input field to buttons below it."
Use the <TAB> key to move from the input field to the buttons below it."
backtitle="Linux Kernel Configuration"
......
......@@ -3,25 +3,46 @@ lift. Featuring text based color menus and dialogs, it does not
require X Windows. With this utility you can easily select a kernel
option to modify without sifting through 100 other options.
Some Menuconfig keyboard hints:
Overview
--------
Some kernel features may be built directly into the kernel.
Some may be made into loadable runtime modules. Some features
may be completely removed altogether. There are also certain
kernel parameters which are not really features, but must be
entered in as decimal or hexidecimal numbers or possibly text.
Menu items beginning with (*), (M) or ( ) represent features
configured to be built in, modularized or removed respectively.
Pointed brackets <> represent module capable features.
more...
To change any of these features, highlight it with the cursor
keys and press <Y> to build it in, <M> to make it a module or
<N> to removed it. (See keyboard hints below)
Items beginning with numbers or other text within parenthesis can
be changed by highlighting the item and pressing <Enter>. Then
enter the new parameter into the dialog box that pops up.
Some keyboard hints:
Menus
----------
o Use the Up/Down arrow keys (cursor keys) to highlight the item
or submenu you wish to select.
you wish to change or submenu wish to select. Submenus are
designated by "--->".
Shortcut: Press the option's highlighted letter (hotkey).
Pressing a hotkey more than once will sequence
through all items which use that hotkey.
through all visible items which use that hotkey.
You may also use the <PAGE UP> and <PAGE DOWN> keys to scroll
unseen options into view.
o Use the cursor keys to highlight <Select> and press <ENTER>.
Shortcut: Press the <SPACE BAR> or <S> if there is no item using
<S> as it's hotkey.
o To exit a menu use the cursor keys to highlight the <Exit> button
and press <ENTER>.
Shortcut: Press <ESC><ESC> or <E> or <X> if there is no hotkey
using those letters. You may press a single <ESC>, but
there is a delayed response which you may find annoying.
......@@ -31,18 +52,21 @@ o To exit a menu use the cursor keys to highlight the <Exit> button
o To get help with an item, use the cursor keys to highlight <Help>
and Press <ENTER>.
Shortcut: Press <H> or <?>.
Radiolists (Yes/No/Module)
Radiolists (Choice lists)
-----------
o Use the cursor keys to select the option you wish to set and press
<S> or the <SPACE BAR>.
Shortcut: Press the first letter of the option you wish to set then
press <S> or <SPACE BAR>.
o To see available help for the item, use the cursor keys to highlight
<Help> and Press <ENTER>.
Shortcut: Press <H> or <?>.
Also, the <TAB> and cursor keys will cycle between <Select> and
......
......@@ -204,7 +204,8 @@ proc write_tristate { file1 file2 varname variable dep } {
puts $file2 "#undef $varname"} \
elseif { $variable == 2 || ($dep == 2 && $variable == 1) } \
then { puts $file1 "$varname=m"; \
puts $file2 "#undef $varname" } \
puts $file2 "#undef $varname"; \
puts $file2 "#define $varname_MODULE 1" } \
elseif { $variable == 1 && $dep != 2 } \
then { puts $file1 "$varname=y"; \
puts $file2 "#define $varname 1" } \
......
......@@ -197,19 +197,25 @@ dialog_menu (const char *title, const char *prompt, int height, int width,
print_buttons (dialog, height, width, 0);
while (key != ESC) {
key = wgetch (dialog);
key = wgetch(dialog);
if (isalpha(key)) key = tolower(key);
if (strchr("ynm", key))
i = max_choice;
else {
for (i = choice+1; i < max_choice; i++) {
j = first_alpha(items[(scroll+i)*2+1]);
if (toupper(key) == toupper(items[(scroll+i)*2+1][j]))
if (key == tolower(items[(scroll+i)*2+1][j]))
break;
}
if (i == max_choice)
for (i = 0; i < max_choice; i++) {
j = first_alpha(items[(scroll+i)*2+1]);
if (toupper(key) == toupper(items[(scroll+i)*2+1][j]))
if (key == tolower(items[(scroll+i)*2+1][j]))
break;
}
}
if (i < max_choice ||
key == KEY_UP || key == KEY_DOWN ||
......@@ -302,30 +308,31 @@ dialog_menu (const char *title, const char *prompt, int height, int width,
print_buttons(dialog, height, width, button);
wrefresh (dialog);
break;
case ' ':
case 'S':
case 's':
case 'y':
case 'n':
case 'm':
delwin (dialog);
fprintf(stderr, items[(scroll + choice) * 2]);
fprintf(stderr, "%s\n", items[(scroll + choice) * 2]);
if (key == 'y') return 3;
if (key == 'n') return 4;
if (key == 'm') return 5;
return 0;
case 'H':
case 'h':
case '?':
button = 2;
case '\n':
delwin (dialog);
if (button == 2)
fprintf(stderr, "%s \"%s\"",
fprintf(stderr, "%s \"%s\"\n",
items[(scroll + choice) * 2],
items[(scroll + choice) * 2 + 1] +
first_alpha(items[(scroll + choice) * 2 + 1]));
else
fprintf(stderr, items[(scroll + choice) * 2]);
fprintf(stderr, "%s\n", items[(scroll + choice) * 2]);
return button;
case 'E':
case 'e':
case 'X':
case 'x':
key = ESC;
case ESC:
......
......@@ -342,13 +342,16 @@ draw_shadow (WINDOW * win, int y, int x, int height, int width)
int
first_alpha(const char *string)
{
int i, in_paren=0;
int i, in_paren=0, c;
for (i = 0; i < strlen(string); i++) {
if (string[i] == '(') ++in_paren;
if (string[i] == ')') --in_paren;
c = tolower(string[i]);
if ((! in_paren) && isalpha(string[i]))
if (c == '(') ++in_paren;
if (c == ')') --in_paren;
if ((! in_paren) && isalpha(c) &&
strchr("nNyYmM", c) == 0)
return i;
}
......
......@@ -43,11 +43,11 @@ do
echo "failed. Clean up yourself."
break
fi
if [ "`find $sourcedir -follow '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ]
if [ "`find $sourcedir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ]
then
echo "Aborting. Reject files found."
break
fi
# Remove backup files
find $sourcedir -follow '(' -name '*.orig' -o -name '.*.orig' ')' -print | xargs rm -f
find $sourcedir/ '(' -name '*.orig' -o -name '.*.orig' ')' -exec rm -f {} \;
done
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