old type (stty) ioctls can easily bypass locking bits.
It involves manual conversion from old ioctls to new ones,
large piece of code duplicated from tty_compat.c
after ttioctl too, because it can change t_line.
Remove (TS_CNTTB | TS_LNCH) test, it is always inherits from
old tty mode and can't be reach in currently setted mode.
old value.
Remove unnecessary check for active messages in setup SCB. This same test
would also jump to p_mesgin_done which would "ACK" an extra time possibly
confusing the target.
Tell the kernel driver whenever we send an ABORT_TAG message.
- Report valid residual byte counts. We actually pause the sequencer
when the residual is non-zero. I thought about using DMA to do this,
bus sequencer program space is tight.
- Fix embarassing off by one error in the computation of a 2's
compliment variable. This was most likely the cause of the
many problems reported with the tagged queuing code.
- Handle "MAX_SYNC" as a special case (ie we are the ones starting
the sync negotiation sequence). This was done so that the target
scratch area can be initialed to 0 offset (asyncronous transfers)
safely. The initialization to 0 (was 15) is necessary since in
some cases a Wide negotiation could run into problems if SCSIRATE
was set wrong and we went into data(in/out).
- Trim the DMA routines a little by using some procedures. Net
effect is more functionality with 3 less instructions after this
update.
- Toggle the WIDEODD bit of the DFCNTRL whenever this is not the
last SG block. It has no effect in the 8bit bus configuration,
but in the Wide configuration ensures that the overlap byte is
held in the SCSI block if the transfer is odd so it will end
up in the next SG (the correct behavior).
* to reduce the number of adapter failures. Transceiver select
* logic changed to use value from EEPROM. Autoconfiguration
* features added.
Submitted by: "Serge A. Babkin" <babkin@hq.icb.chel.su>
update what has actually been touched. This should speed up
screen access on slow hardware.
Introduced setting of "destructive" cursor size, much like
the old hardware cursor.
if (tp->t_line != 0)
test when CS_ODONE, it fails for NTTYDISC, use
if (linesw[tp->t_line].l_start != ttstart)
instead.
Reviewed by:
Submitted by:
Obtained from:
CVS:
BREAK/parity/framing errors.
Term "correctly" assumes POSIX spec. and 4.4 ttyinput() behaviour.
1) Discard BREAK/parity at interrupt level when apropriate IGN*
is set in iflag. It helps "raw" mode works even IGN* is set.
2) Zero parity (if INPCK) and framing directly in buffer
before passing it to b_to_q() in "raw" mode.
Efficency:
interrupt level: if no error occurse, only two "test" commands added
"raw" mode: buf scan incc times for parity/framing added
Reviewed by:
Submitted by:
Obtained from:
CVS:
Report floppy/tape units on seperate lines as fdX:/ftX: to correct lots of
ways the current scheme failed to end the output with \n.
Add controller and/or drive designator to the fron of several messages
that come from this drive. [It's not fun to track down driver messages
using grep over the source tree.]
Reviewed by: joerg
include <pci/pcivar.h> without including <sys/devconf.h> and other
drivers include <pci/pcivar.h> before including <sys/devconf.h> if
certain identifiers are defined.
The devconf headers have convoluted interdependencies. <sys/devconf.h>
includes <machine/devconf.h> which includes <pci/pcivar.h>. Most
drivers include <sys/devconf.h> so even isa drivers depend on
<pci/pcivar.h>. For similar reasons, most drivers depend on another
pci header, on an isa header and on two scsi headers.
NOT derived from the Linux code and is thus not GPL'd. It is the author's
express wish that the GPL copyrighted version be removed and this BSD copyright
version take its place. Considering our own stance on this, I'm certainly
not going to argue! [Note to NetBSD folks: You're free to grab it now :-)]
Submitted by: Mikael Hybsch <micke@dynas.se>
#include <i386/isa/isa.h>
return IO_EISASIZE instead of hard coded 0x1000.
if_ep.c:
Remove commented out disabling of interrupts that gave a
"comment withing a comment" warning.
1) Supports PCI to PCI bridge devices (and tries to initialise them,
even if the BIOS is brain dead).
2) Supports shared PCI interrupts. Interrupt handlers now MUST return
'0' if they found nothing to do, '1' otherwise.
New features tested with i486 systems based on the Intel Saturn and
a DEC 4channel Ethernet card only, but expected to work on most systems.
The option PCI_REMAP has been removed !
Submitted by: Wolfgang Stanglmeier <wolf@kintaro.cologne.de>
a device specific shutdown routine for devconf. Assign the value of this
to the kern_devconf struct. Implement a device shutdown routine for if_de
that disables the device. This will stop the device from corrupting memory
after a reboot.
Let "grey delete" be a function key (default is 0x7f)
Fix the xor cursor again..
Made the backspace key generate del as default
Made CTRL-space generate nul as default.
(a) bring back ttselect, now that we have xxxdevtotty() it isn't dangerous.
(b) remove all of the wrappers that have been replaced by ttselect
(c) fix formatting in syscons.c and definition in syscons.h
(d) add cxdevtotty
NOT DONE:
(e) make pcvt work... it was already broken...when someone fixes pcvt to
link properly, just rename get_pccons to xxxdevtotty and we're done
DEC 21050 chip in particular, don't have specs of other such chips).
This should add support for Multiple-Ethernet PCI cards (e.g. Znyx 314).
Reviewed by: se
Submitted by: <wolf@kintaro.cologne.de> Wolfgang Stanglmeier
is close to 1000000 / 960 usec so the confusion probably didn't matter.
Test for COMCONSOLE before testing for RB_SERIAL so that the RB_SERIAL
test can be optimized away if COMCONSOLE is 1.
Simplify and Uniformize style of previous commit.
(b) add a function callback vector to tty drivers that will return a pointer
to a valid tty structure based upon a dev_t
(c) make syscons structures the same size whether or not APM is enabled so
utilities don't crash if NAPM changes (and make the damn kernel compile!)
(d) rewrite /dev/snp ioctl interface so that it is device driver and i386
independant
labels.
Please test the slice/label features:
cd /dev; sh MAKEDEV svn0
cd /var/tmp; dd if=/dev/zero of=vnfile bs=8192 count=1024
vnconfig -c /dev/rvn0 /var/tmp/vnfile
fdisk /dev/rvn0 # invent a geometry, create one BSD partition
disklabel -r -w vn0 floppy # a convenient (bogus) label
disklabel -e vn0 # edit label to match device
newfs /dev/rvn0a
mount /dev/vn0a /mnt
...
The steps after the fdisk could name the device vn0s1 instead of vn0.
PCI BIOS mappings are retained, except if option PCI_REMAP
is specified in the kernel config file.
There is now a list of attach addresses, and the first
address that seems to make some device registers appear
is chosen.
Reviewed by: se
Submitted by: wolf
Removed screensavers from syscons, they are now LKM's. This makes it
possible to do some really "interesting" screensavers...
Fixed bug that sometimes caused garbage to appear when leaving
"scroll-lock" history.
Reformattet indentation, it got too deep for a normal 80 pos screen.
Split up in syscons.c & syscons.h for use with the saver-lkm's.
Temporarily removed -s option from vidcontrol, savers should now
be loaded with modload.
briefly over it, and see some serious architectural issues in this stuff.
On the other hand, I doubt that we will have any solution to these issues
before 2.1, so we might as well leave this in.
Most of the stuff is bracketed by #ifdef's so it shouldn't matter too much
in the normal case.
Reviewed by: phk
Submitted by: HOSOKAWA, Tatsumi <hosokawa@mt.cs.keio.ac.jp>
when ttselect() is improved. This requires using an array of tty structs
and not using ttymalloc().
Fix an off by 1 error. Some caclulations seem to be off by a factor
of NCY. NCY defaults to 16, which gives 256 tty structs occupying
0xd000 bytes. The minor number encoding only allows 16 ttys.
Update the types of timeout functions to 2.0.
- Overflow now calculated right
- Close works ok,does not looses tty
- Better overflow handling now the snooping stops
on overflow,but programm notified and can reconnect if
it want to..Default maximal buffer set to 664 K and this
is probably too much..:)))
Utility still to come
New config option "NCR_IOMAPPED" makes the driver use port I/O.
Put back in 53c815 defines, submitted by Mikael Hybsch <micke@dynas.se>.
These had got lost between cvs rev. 1.14 and now ...
pci.c:
Really write config space register.
Assign ports starting at 0xbc00.
Submitted by: wolf
Reviewed by: se
Users-beware..
It is tested and working for me but probably have some bugs i
didn't noticed so test it and reply...
It can:
look at what's sent to the user from tty device
snoop on pty's,vty's and serial tty's
It (still) can't:
write to tty
see what user types in local echo mode
It is probably bad styled and
very dependant on tty_pty.c,sio.c and syscons.c
I would be really happy if another ppl would make their
changes because i am not sure this is the best snoop
we can have..but it is good..:)))))
so that the interface won't have the effect of blocking other senders
during bulk transfers (i.e. hogging the ethernet). It improves performance
in all of my tests by reducing collisions and I believe it to be a Good
Thing.
adapted to FreeBSD by Heikki Suonsivu <hsu@cs.hut.fi>.
Submitted by: Andrew Werple <andrew@werple.apana.org.au> and
Heikki Suonsivu <hsu@cs.hut.fi>
Obtained from: NetBSD
definitions taken from the PCI specs. Part of them were typed
in by Wolfgang Stanglmeier, the (at that time unneeded) rest
by Charles Hannum (thanks !).
Display update method changed, now allways write in memory buffer,
then periodically update physical display.
Speed improvements (now > 5 times faster than the old syscons).
History now circular buffer, with changeable size.
History scroll by up/down line, up/down page, home and end.
Backtab proberly implemented.
Now space for 96 function keys, 63 allocated standard, default now
SCO/SYSV compat again as in the old days.
New keyboard definition files ~share/syscons/keymaps/*
Misc fixes for old "hacks" that broke SCO/SYSV compat.
More that I forgot before writing this...
case, software cursor now optional case. Driver must provide
raw things (what hardware do for us, exactly) as default case,
all driver features must be _optional_. Modern VGAs have internal
configuration utilities to set cursor shape/blinking which stored
into cards ROM, and syscons nuke out such features completely
by forcing software cursor. Moreover, software cursor is hard
to distinguish on standouted (or near standouted) fields and
tends to disappearse from the screen.
Set "flags 0x4" to enable software cursor now.
o Cleanup screen savers.
o Don't draw cursor if saver or blinker is active.
o Duplicated code moved to functons.
o Add more checks for blinker in progress, character lost otherwise
when blinker restore old contents.
o Reduce blinking counter to 3, too slow in old variant.
o Fix timeout code in scrn_timer(), old variant can reenter iself,
if action takes too long time.
o Disable visual bell for scroll lock mode, saved screen
becomes overwritted otherwise.
in the PCnet/Lance family.
Fix attach so 32 bit cards don't call isa_dmacascade.
Add a workaround for 32 bit chips which incorrectly truncate the
ring buffer size.
Fix a bug where CRC errors were reported as framming errors.
Change copyright to a BSD style one.
Print out the length of the compiled sequencer program.
aic7xxx.seq:
More optimizations. Replace generic bcopy routine with bcopy_3
and bcopy_4 (ie unroll the loops) since these are the only two cases used.
Initialize SIMODE1 and SXFRCTL1 from the kernel in ahc_init instead of
at each selection/reselection since this is expensive and only needs to
be done once. Condense function returns into previous instruction if possible.
Reorder some sections to kill superflous jumps. These optimizations kill
the ~150k/s penalty adding support for Twin/Wide cards was costing since
the last place in the commaon path of execution where we had to do ugly,
convoluted testing for the type of card in the sequencer has gone away.
Next stop tagged queuing and target mode.
Obtained from:
sio.c and sioreg.c changed to allow autodetecting the RB_SERIAL flag
passed by the boot blocks so that the kernel can switch to 'serial
console' mode automagically. 'options COMCONSOLE' can still be specified
to force the kernel to always use the serial port as a console.
CONUNIT and CONADDR can also be specified in the kernel config file
if the user wants to shift the console to a different port.
(SCSI control block) instead of having the host PIO it down. Also
reimplement WDTR and SDTR optimization to remove code in the sequencer
and place the responsibility of knowing when to initiate SDTR or WDTR
on the kernel driver. This vastly shortens the sequencer program yet
yeilds the same performance.
properly from the beginning:
1) The `kern_devconf' struct should be a part of the driver's
`softc' structure (now it is).
2) The `description' should say what the device actually is,
rather than just giving a model number (now it does).
3) The device should be registered even if the probe fails, so
that it can be reconfigured later.
4) For netifs, the device state should follow the IFF_UP flag.
Other network interfaces should follow this example. (Please?) Eventually
there should be a rundown routine doing the equivalent of setting IFF_UP
off, and perhaps more if warranted.
sense retrieval code that messed up CDROM devices. This code will also
responde correctly to SDTR and WDTR messages from devices that start a
negotiation sequence.
protected drive at open() time has been *totally bogus*! The guy who
submitted it didn't understand all the implications of calling
set_motor(), and the `who' who included the patch into the tree did it
blindly... Pleeeeze, don't commit code to this driver unless you are
really going to understand what it does! This one caused me to pull
out even more hears, and those who know me do know that i ain't got
too many o'them. :-)
No kernel config options anymore besides keyboard language layout.
Virtual consoles are now dynamically allocated, no NCONS anymore.
Software cursor blinking/nonblinking.
Visual bell for laptops (don't beep at meetings :-).
Cursor/bell default type setable via config "flags" instead of as defines.
Cursor/bell type setable via ioctl's.
New video modes 80x30 80x60 for some laptops, and those with multisync monitors.
Scroll-lock history (length currently fixed at 100 lines).
Lots of cleanups, some only commented out for now (will goaway soon).
Support for new features in vidcontrol/kbdcontrol.
Updated manpages.
now marked busy as long as it's being in non-reset state, and the
drives are busy as long as at least one instance is open.
Also reformat everything to fit into 80 columns again.
Changed my mind wrt. error reporting for a write-protected drive and
an open() with write intent; ENXIO has been too weird, now return EIO.
Some portions of the code need to be rewritten to use tprintf()
instead of simple printf()'s, so the messages will also appear on the
session terminal, however.
floppy driver (or in the hardware?). It turned out to be caused by
spurious interrupts, right after an FDC reset.
Also major cleanup in the low-level structure, there are now functions
performing error-checks for the FDC I/O.
Submitted by: (mostly) Peter Dufault <dufault@FreeBSD.org>
correct console number for the VT_WAITACTIVE ioctl. Invalid console numbers
caused waiting on an invalid pointer.
Use bcopyw() instead of move_up() and move_down(). bcopyw() handles
overlapped copies and should be faster. Actually use bcopy(). bcopy()
is slightly faster if video memory is 16-bit and about twice as fast if
it is 32-bit. bcopy() is said to fail on someGA's, but syscons already
depends on it working for other accesses to video memory.
You can now sling 14 devices off of a 274xT. In the process of adding
twin channel support, I removed all evident restrictions on supporting
Wide channeled devices, but I do not have a Wide controller to test them
on.
aic7770_seq.h, the pre-compiled header, is no longer needed since config
handles this dependancy.
- /sys/i386/isa/if_ed.c doesn't quite know how to deal with SMC EtherEZ
ethernet cards. The EtherEZ looks just like the Elite Ultra, except it
has only 8K of shared memory. The only way to have it properly detected
is to zero and test a few bytes of memory just about the first 8K region.
If it clears properly, it's an Elite Ultra, otherwise it's an EtherEZ.
I've also got an EtherEZ patch for netboot (Makefile, ether.c and ether.h).
- /sys/i386/isa/syscons.c wraps at the next to the last column rather than
the last column, like it should. You don't really notice this unless you
use certain programs that write all the way out to, say, the 80th column,
like VMSmail. Along with a one-line fix for this are some changes to
implement a non-blinking cursor. Put 'options "NOBLINK_CURSOR"' in your
config file and give it a try. :)
Submitted by: wpaul
is supposed to work except "media removal" (shutting down the vn driver)
while some partitions are open.
Fix some errnos: return ENOTTY, not ENXIO for unknown ioctls; return
ENODEV, not ENXIO for the unsupported dump operation.