Commit Graph

49 Commits

Author SHA1 Message Date
Garrett Wollman
9b44ff2214 Clean up Ethernet drivers:
- fill in and use ifp->if_softc
	- use if_bpf rather than private cookie variables
	- change bpf interface to take advantage of this
	- call ether_ifattach() directly from Ethernet drivers
	- delete kludge in if_attach() that did this indirectly
1996-02-06 18:51:28 +00:00
Poul-Henning Kamp
6f4e0beb7e Staticize and cleanup. 1995-12-10 13:40:44 +00:00
Poul-Henning Kamp
d2f265fab8 Julian forgot to make the *devsw structures static. 1995-12-08 23:23:00 +00:00
Julian Elischer
87f6c6625d Pass 3 of the great devsw changes
most devsw referenced functions are now static, as they are
in the same file as their devsw structure. I've also added DEVFS
support for nearly every device in the system, however
many of the devices have 'incorrect' names under DEVFS
because I couldn't quickly work out the correct naming conventions.
(but devfs won't be coming on line for a month or so anyhow so that doesn't
matter)

If you "OWN" a device which would normally have an entry in /dev
then search for the devfs_add_devsw() entries and munge to make them right..
check out similar devices to see what I might have done in them in you
can't see what's going on..
for a laugh compare conf.c conf.h defore and after... :)
I have not doen DEVFS entries for any DISKSLICE devices yet as that will be
a much more complicated job.. (pass 5 :)

pass 4 will be to make the devsw tables of type (cdevsw * )
rather than (cdevsw)
seems to work here..
complaints to the usual places.. :)
1995-12-08 11:19:42 +00:00
David Greenman
efeaf95a41 Untangled the vm.h include file spaghetti. 1995-12-07 12:48:31 +00:00
Bruce Evans
0310c19f5d Replaced #includes of <sys/user.h> by less gross headers, usually
<sys/vm.h>.  Many device drivers need only the definition of vtophys()
from vm.

Added nearby #includes of <sys/conf.h> where appropriate.
1995-12-06 23:52:35 +00:00
Poul-Henning Kamp
dd05856fd3 I don't know what I messed up in 1.40, but the crynwr mode didn't make it.
Here it is then, I hope.
1995-12-02 20:33:40 +00:00
Julian Elischer
7198bf4725 If you're going to mechanically replicate something in 50 files
it's best to not have a (compiles cleanly) typo in it! (sigh)
1995-11-29 14:41:20 +00:00
Julian Elischer
53ac6efbd8 OK, that's it..
That's EVERY SINGLE driver that has an entry in conf.c..
my next trick will be to define cdevsw[] and bdevsw[]
as empty arrays and remove all those DAMNED defines as well..

Each of these drivers has a SYSINIT linker set entry
that comes in very early.. and asks teh driver to add it's own
entry to the two devsw[] tables.

some slight reworking of the commits from yesterday (added the SYSINIT
stuff and some usually wrong but token DEVFS entries to all these
devices.

BTW does anyone know where the 'ata' entries in conf.c actually reside?
seems we don't actually have a 'ataopen() etc...

If you want to add a new device in conf.c
please  make sure I know
so I can keep it up to date too..

as before, this is all dependent on #if defined(JREMOD)
(and #ifdef DEVFS in parts)
1995-11-29 10:49:16 +00:00
Poul-Henning Kamp
ad46e209d2 Add crynwr mode to the lp# interface.
Reviewed by:	pst, phk
Submitted by:	tim@sarc.city.ac.uk
1995-11-29 10:17:03 +00:00
Julian Elischer
7146c13e43 the second set of changes in a move towards getting devices to be
totally dynamic.

this is only the devices in i386/isa
I'll do more tomorrow.
they're completely masked by #ifdef JREMOD at this stage...
the eventual aim is that every driver will do a SYSINIT
at startup BEFORE the probes, which will effectively
link it into the devsw tables etc.

If I'd thought about it more I'd have put that in in this set (damn)
The ioconf lines generated by config will also end up in the
device's own scope as well, so ioconf.c will eventually be gutted
the SYSINIT call to the driver will include a phase where the
driver links it's ioconf line into a chain of such. when this phase is done
then the user can modify them with the boot: -c
config menu if he wants, just like now..
config will put the config lines out in the .h file
(e.g. in aha.h will be the addresses for the aha driver to look.)
as I said this is a very small first step..
the aim of THIS set of edits is to not have to edit conf.c at all when
adding a new device.. the tabe will be a simple skeleton..

when this is done, it will allow other changes to be made,
all teh time still having a fully working kernel tree,
but the logical outcome is the complete REMOVAL of the devsw tables.

By the end of this, linked in drivers will be exactly the same as
run-time loaded drivers, except they JUST HAPPEN to already be linked
and present at startup..
the SYSINIT calls will be the equivalent of the "init" call
made to a newly loaded driver in every respect.

For this edit,
each of the files has the following code inserted into it:

obviously, tailored to suit..
----------------------somewhere at the top:
#ifdef JREMOD
#include <sys/conf.h>
#define CDEV_MAJOR 13
#define BDEV_MAJOR 4
static void 	sd_devsw_install();
#endif /*JREMOD */
---------------------somewhere that's run during bootup: EVENTUALLY a SYSINIT
#ifdef JREMOD
        sd_devsw_install();
#endif /*JREMOD*/
-----------------------at the bottom:
#ifdef JREMOD
struct bdevsw sd_bdevsw =
	{ sdopen,	sdclose,	sdstrategy,	sdioctl,	/*4*/
	  sddump,	sdsize,		0 };

struct cdevsw sd_cdevsw =
	{ sdopen,	sdclose,	rawread,	rawwrite,	/*13*/
	  sdioctl,	nostop,		nullreset,	nodevtotty,/* sd */
	  seltrue,	nommap,		sdstrategy };

static sd_devsw_installed = 0;

static void 	sd_devsw_install()
{
	dev_t descript;
	if( ! sd_devsw_installed ) {
		descript = makedev(CDEV_MAJOR,0);
		cdevsw_add(&descript,&sd_cdevsw,NULL);
#if defined(BDEV_MAJOR)
		descript = makedev(BDEV_MAJOR,0);
		bdevsw_add(&descript,&sd_bdevsw,NULL);
#endif /*BDEV_MAJOR*/
		sd_devsw_installed = 1;
	}
}
#endif /* JREMOD */
1995-11-28 09:42:06 +00:00
Bruce Evans
eabc9678bc Included <sys/conf.h>. It used to be included as a side effect of
including <sys/devconf.h>.
1995-11-16 09:56:02 +00:00
Poul-Henning Kamp
2a02fd2542 Staticize various private parts. 1995-11-14 09:58:47 +00:00
Bruce Evans
4ff3de8e80 Added `#include "ioconf.h"' to <machine/conf.h> and cleaned up the
misplaced extern declarations (mostly prototypes of interrupt handlers)
that this exposed.  The prototypes should be moved back to the driver
sources when the functions are staticalized.

Added idempotency guards to <machine/conf.h>.  "ioconf.h" can't be
included when building LKMs so define a wart in bsd.kmod.mk to help
guard against including it.
1995-11-04 17:08:13 +00:00
Garrett Wollman
e508a00419 Add BPF and IP multicast capabilities to the tun' and lp' network
interfaces.

Submitted by:	Bill Fenner <fenner@parc.xerox.com>
1995-09-25 16:57:54 +00:00
Bruce Evans
6003967057 Fix benign type mismatches in devsw functions. 82 out of 299 devsw
functions were wrong.
1995-09-08 11:09:15 +00:00
Bruce Evans
97e156674d Don't include <sys/tty.h> in drivers that aren't tty drivers or in general
files that don't depend on the internals of <sys/tty.h>
1995-07-16 10:13:08 +00:00
David Greenman
108b7c8091 Use ifr_mtu for the mtu value rather than ifr_metric. 1995-06-22 07:03:20 +00:00
David Greenman
381e6190c0 Change interface type...IFT_SLIP -> IFT_PARA. 1995-06-21 10:23:23 +00:00
Rodney W. Grimes
9b2e535452 Remove trailing whitespace. 1995-05-30 08:16:23 +00:00
Poul-Henning Kamp
e34fb4afd7 Cleanup to the INET part of lpt.c.
Reviewed by:	phk
Submitted by:	pst
1995-05-09 01:33:16 +00:00
Garrett Wollman
6c0081e92b Add a class field to devconf and mst drivers.
For those where it was easy, drivers were also fixed to call
dev_attach() during probe rather than attach (in keeping with the
new design articulated in a mail message five months ago).  For
a few that were really easy, correct state tracking was added as well.
The `fd' driver was fixed to correctly fill in the description.
The CPU identify code was fixed to attach a `cpu' device.  The code
was also massively reordered to fill in cpu_model with somethingremotely
resembling what identifycpu() prints out.  A few bytes saved by using
%b to format the features list rather than lots of ifs.
1995-04-12 20:48:13 +00:00
Bruce Evans
b5e8ce9f12 Add and move declarations to fix all of the warnings from `gcc -Wimplicit'
(except in netccitt, netiso and netns) and most of the warnings from
`gcc -Wnested-externs'.  Fix all the bugs found.  There were no serious
ones.
1995-03-16 18:17:34 +00:00
Poul-Henning Kamp
f3fb4d806f I really hate this:
unless I go "splhigh" (as opposed to splimp before) the TCP/IP driver
doesn't work anymore...  Why ?
1995-02-26 21:41:41 +00:00
Bruce Evans
550f8550ec Replace all remaining instances of i386/include' by machine' and fix
nearby #include inconsistencies.
1995-02-26 05:14:53 +00:00
Poul-Henning Kamp
ff24bee616 Fix a panic I might have seen, or at least could see some day if I havn't
already.
1994-11-16 06:09:29 +00:00
Nate Williams
7145a92269 Changed output message in interrupt-driven lp device from
'TCP/IP interface' to 'TCP/IP capable interface' to avoid confusion.
1994-11-13 21:14:30 +00:00
Poul-Henning Kamp
e47655c507 Fix a bug which had crept in (an almost certain panic).
Remove inline assembler.
Avoid mbuf spaghetti by using m_devget.
1994-10-27 05:08:28 +00:00
Garrett Wollman
2f86936a07 Finished device configuration database work for all ISA devices (except `ze')
and all SCSI devices (except that it's not done quite the way I want).  New
information added includes:

-	A text description of the device
-	A ``state''---unknown, unconfigured, idle, or busy
-	A generic parent device (with support in the m.i. code)
-	An interrupt mask type field (which will hopefully go away) so that
.	  ``doconfig'' can be written

This requires a new version of the `lsdev' program as well (next commit).
1994-10-23 21:28:03 +00:00
Poul-Henning Kamp
702c623a8a Cosmetics. Silence gcc -Wall. Much more to do here :-( 1994-10-10 01:12:27 +00:00
Poul-Henning Kamp
0999b624b0 Parallel-port TCP/IP interface can now take any MTU. 1994-09-18 06:12:45 +00:00
Poul-Henning Kamp
ee30a1ebc3 Fixed a warning from the compiler, which just crashed my laptop. When do
I start to listen to wise ol' compilers sound advice... sigh.

Also made lp0 a Point-to-point interface.
1994-09-15 02:37:11 +00:00
Geoff Rehmet
12365022c0 Make it possible to run lptcontrol on a printer port which does not
actually have a printer connected or online:
- MAKEDEV:		remove all signs of lpa
			add lpctl? devices (minor # = unit + 128)
- usr.sbin/Makefile	add lptcontrol
- sys/i386/isa/lpt.c	implement the LP_BYPASS flag: when a unit is
			opened with this flag set, the printer is
			not primed, and no check is made to see that
			the printer is online.  This can only be used
			to pass ioctls.  (giving us /dev/lpctl?)
- lptcontrol.c		use /dev/lpctl? (LP_BYPASS)
			-f flag removed, -u flag added
- lptcontrol.8		document changes in lptcontrol
			rewrite using mandoc macros
Submitted by:	Geoff.
1994-09-03 22:47:08 +00:00
Paul Richards
d091793974 Ran ft.c through ident.
Added a missing #ifdef INET wrapper in lpt.c

Main change:
	Removed the timeout_func_t casts from timeout calls and
	correctly defined the timeout routines to conform to
	the new format.
lpt.c doesn't have this change.

Reviewed by:
Submitted by:
1994-08-23 07:52:29 +00:00
Poul-Henning Kamp
063ea59ae1 The tcp/ip interfaces needed longer timeouts, works fine under 2.0. 1994-08-14 01:46:28 +00:00
Garrett Wollman
f540b1065a Change all #includes to follow the current Berkeley style. Some of these
``changes'' are actually not changes at all, but CVS sometimes has trouble
telling the difference.

This also includes support for second-directory compiles.  This is not
quite complete yet, as `config' doesn't yet do the right thing.  You can
still make it work trivially, however, by doing the following:

rm /sys/compile
mkdir /usr/obj/sys/compile
ln -s M-. /sys/compile
cd /sys/i386/conf
config MYKERNEL
cd ../../compile/MYKERNEL
ln -s /sys @
rm machine
ln -s @/i386/include machine
make depend
make
1994-08-13 03:50:34 +00:00
Poul-Henning Kamp
24420201d8 Submitted by: Poul-Henning Kamp <phk@login.dkuug.dk>
Added my if_lp TCP/IP driver to lpt.c.
I have (surprise) not been able to test it on a 2.0 machine yet.  Connect the
machines with a parallel "lap-link" cable, and get rates from 35 kbyte/sec
up to 75 kbyte/sec.  (when ftp'ing foo: dev/zero -> bar:/dev/null).

The same lpt.c file should compile under 1.1.5.1 without problems.

I think we should promote this feature when we dump 2.0 on the expectant
public, because it provides a cheap and efficient way to move data to and
from notebooks &c.  It is not a replacement for ethernet, but a cheap
substitute sometimes.
1994-08-13 00:37:03 +00:00
Rodney W. Grimes
d5d6e3f5d0 Fix some references to MIN() and MAX() that have been replaced by min() and
max().
1994-05-26 13:30:20 +00:00
Geoff Rehmet
002aedb676 change to lptioctl 1994-04-08 22:13:49 +00:00
Geoff Rehmet
ee5ae27f05 Changes to lpt driver:
- ansi prototypes in lpt.c
- a bit of tidying in lpt.c
- ioctl in lpt.c for switching between polling and using interrupts
- added lpt.h - needed for ioctl to allow switching between polling
        and interrupt-driven modes.
1994-04-06 16:42:33 +00:00
Rodney W. Grimes
e583b89dfa Cleanup the lptprobe and lpt_port_test routine to be KNF. 1994-02-22 09:05:13 +00:00
Rodney W. Grimes
4568df5233 I (rgrimes) cleaned the code up some, mostly just format stuff.
>From: csgr@alpha.ru.ac.za (Geoff Rehmet)
Date: Wed, 16 Feb 1994 21:28:06 +0200 (GMT+0200)

New version of lpt, most of the brokenness fixed.
1994-02-17 10:20:18 +00:00
Jordan K. Hubbard
becfc6cb74 Gunter Jung's fixes for the much-maligned lpt driver 1994-02-06 22:06:58 +00:00
Garrett Wollman
381fe1aaf4 Make the LINT kernel compile with -W -Wreturn-type -Wcomment -Werror, and
add same (sans -Werror) to Makefile for future compilations.
1993-11-25 01:38:01 +00:00
Rodney W. Grimes
6f78ca6026 Removed all patch kit headers, sccsid and rcsid strings, put $Id$ in, some
minor cleanup.  Added $Id$ to files that did not have any version info, etc
1993-10-16 13:48:52 +00:00
Rodney W. Grimes
e730ca26a3 Convert another printf into an lprintf since this should only be output
for debugging.

Thanks Chris.
1993-09-28 21:50:59 +00:00
Rodney W. Grimes
5487793b4b >From: chmr@edvz.tu-graz.ac.at (Christoph Robitschko)
Date: Tue, 28 Sep 1993 09:03:13 +0100 (MET)
The only place I found with a printf("status %x") is in /sys/i386/isa/lpt.c,
and looks much like a left-over debugging printout...

And it was... I changed it to an lprintf (which is defined if debuggin is on)
			Rod
1993-09-28 17:02:34 +00:00
Rodney W. Grimes
0d01087b28 From Bruce Evans:
lpt doesn't work here if the printer is not turned on at boot time (this
has been reported for other systems).

lpt has a weird mapping of the flag bits vs printer numbers and MAKEDEV
does not understand this (printer 0 uses minor numbers 0-0x3f, printer 1
uses minors 0x40-0x7f, etc).

The following (simpler) problems are fixed by the patch.

lpt did not check the minor number on open, so if NLPT1 == 1 and you
try to open printer 1 then random memory above the lpt_sc array is
accessed.  I thought I had this problem for minors 1 and 2.  However,
it does not actually occur until minor 0x40.  Does anyone have lpt64?

lpt had several unnecessary && broken ANSIisms and other sloppy
declarations.

Bruce
1993-07-13 18:52:49 +00:00
Rodney W. Grimes
5b81b6b301 Initial import, 0.1 + pk 0.2.4-B1 1993-06-12 14:58:17 +00:00