This is the Xinu config program that allows one to specify a set of
device drivers.

Input: the program reads specifications from an input file, usually

		Configuration


Output: the program produces two ouput files, usually

		conf.h	- configuration constants and declarations
				for device drivers and the device
				switch table

		conf.c	- initialization code for data strcutures
				declared in conf.h
		

The input file consists of three sections, with %% used as a sparator
between sections:

----------------------------------------------------------------------------

	/* Comments can appear anywhere in the input file; use	*/
	/*	the C style of slash-star ... star-slash.	*/
	/* The config program ignores whitespace and comments.	*/


	device type declarations

%%

	device declarations

%%

	Other constants added to conf.h (typically, #defines)

----------------------------------------------------------------------------


**************************** Type Declarations *****************************


The type declaration section consists of a series of entries of the form:

	type_name:  on  hardware_name  [options]

where

	type_name	a name for the type
	:		a required punctuation, usually appended onto the
				type name
	on		a keyword
	hardware_name	any string used to allow a type name to have
				two implementations
	options		multiple options can be specified, and each
				consists of a flag and the name of a
				driver function or hardware parameter
				(the minus sign in front of a flag
				can be omitted):

				-i	initialization_function
				-o	open_function
				-r	read_function
				-w	write_function
				-s	seek_function
				-c	close_function
				-g	getc_function
				-p	putc_function
				-n	control_function
				-intr	interrupt_handler
				-csr	CSR address
				-irq	Interrupt request number

Example:


	eth:        on quark_eth
		-i ethinit      -o ioerr        -c ioerr
		-r ethread      -g ioerr        -p ioerr
		-w ethwrite     -s ioerr        -n ethcontrol
		-intr ethdispatch


*************************** Device Declarations ****************************


The device declaration section consists of one entry per device in the form:

	device_name	is type_name on hardware_name [options]

where

	device_name	a name for the device (by convention, Xinu
				uses upper-case device names)
	is		a keyword
	type_name	the name of a type defined above
	on		a keyword
	hardware_name	must match one of the hardware names used with
				when the type was defined
	options		the same as the options above -- any values used
				on a device declaration override the
				values defined for the type.  Typically,
				a type does not have specific hardware
				parameters, so they must be filled in.
	
Example:


	ETHER is eth  on quark_eth  csr 0001770 -irq 0053
