John Dyson [Fri, 12 Dec 1997 04:00:59 +0000 (04:00 +0000)]
We have had support for running the kernel daemons as threads for
quite a while, but forgot to do so. For now, this code supports
most daemons running as kernel threads in UP kernels, and as
full processes in SMP. We will soon be able to run them as
threads in SMP, but not yet.
Sean Eric Fagan [Fri, 12 Dec 1997 03:33:43 +0000 (03:33 +0000)]
Fix a problem with procfs_exit() that resulted in missing some procfs
nodes; this also apparantly caused a panic in some circumstances.
Also, since procfs_exit() is getting rid of the nodes when a process
exits, don't bother checking for the process' existance in procfs_inactive().
Eivind Eklund [Wed, 10 Dec 1997 17:52:49 +0000 (17:52 +0000)]
Merge from OpenBSD:
> Error out if someone tries to mv a mount point. Old behavior was to
> move all files contained in the mounted filesystem to the dest. dir
> which could be quite nasty. Personally, I think rename(2) should
> return EPERM or EINVAL instead of EXDEV.
Obtained from: OpenBSD mv.c rev 1.6 by Todd Miller <millert@openbsd.org>
Sean Eric Fagan [Tue, 9 Dec 1997 05:03:41 +0000 (05:03 +0000)]
Code to prevent a panic caused by procfs_exit(). Note that i don't know
what is teh root cause -- but, sometimes, a procfs vnode in pfshead is
apparantly corrupt (or a UFS vnode instead). Without this patch, I can
get it to panic by doing (in csh)
while (1)
ps auxwww
end
and it will panic when the PID's wrap. With it, it does not panic.
Yes -- I know that this is NOT the right way to fix it. But I haven't
been able to get it to panic yet (which confuses me). I am going to
be looking into the vgone() code now, as that may be a part of it.
Steve Passe [Mon, 8 Dec 1997 22:59:39 +0000 (22:59 +0000)]
The improvements to clock statistics by Tor Egge
Wrappered and enabled by the define BETTER_CLOCK (on by default in smpyests.h)
apic_vector.s also contains a small change I (smp) made to eliminate
the double level INT problem. It seems stable, but I haven't the tools
in place to prove it fixes the problem.
Reviewed by: smp@csn.net
Submitted by: Tor Egge <Tor.Egge@idi.ntnu.no>
Sean Eric Fagan [Mon, 8 Dec 1997 22:09:39 +0000 (22:09 +0000)]
A couple of fixes from bruce: first of all, psignal is a void (stupid
me; unfortunately, also makes it hard ot check for errors); second, I had
managed to forget a change to PIOCSFL (it should be _IOW, not _IOR) I had
in my local copy, and Bruce called me on it.
Garrett Wollman [Mon, 8 Dec 1997 21:42:35 +0000 (21:42 +0000)]
This is a hack. Decode IEEE 802.1Q VLAN tagging so that we can decode
tagged traffic according to the encapsulated protocol. It needs in
addition modifications to the filter generator which would deal with
checking the ethertype and vlan header as required.
Brian Somers [Mon, 8 Dec 1997 20:22:12 +0000 (20:22 +0000)]
Deal with inflate() returning avail_in == avail_out == 0
We must call inflate again in case there's any pending output
despite our input buffer being empty. If the output buffer
is in fact already flushed, inflate() returns Z_BUF_ERROR.
There isn't really an error !
Kazutaka YOKOTA [Mon, 8 Dec 1997 11:54:42 +0000 (11:54 +0000)]
Explicitly state that the -t option is required only when the
moused command is not able to detect the appropriate protocol for the
give mouse automatically.
Nate Williams [Mon, 8 Dec 1997 06:35:07 +0000 (06:35 +0000)]
- Changed strcmp to strncmp for checking the CIS manufacturer strings,
since we only store CIS_MAXSTR data, and the users may stick the
'entire' CIS string returned from the card in /etc/pccard.conf and
cause the comparison to (bogusly) fail.
Sean Eric Fagan [Mon, 8 Dec 1997 01:06:36 +0000 (01:06 +0000)]
Use at_exit() to invoke procfs_exit() instead of calling it directly.
Note that an unload facility should be used to call rm_at_exit() (if
procfs is being loaded as an LKM and is subsequently removed), but it
was non-obvious how to do this in the VFS framework.
John Dyson [Mon, 8 Dec 1997 00:59:08 +0000 (00:59 +0000)]
Various of the ISP users have commented that the 1.41 version of the
nfs_bio.c code worked better than the 1.44. This commit reverts
the important parts of 1.44 to 1.41, and we will fix it when we
can get a handle on the problem.
Brian Somers [Sun, 7 Dec 1997 23:55:29 +0000 (23:55 +0000)]
Fix PAP, CHAP & LQR req (I broke the byte ordering when
I did the deflate re-org).
Make PAP & CHAP negotiation prettier in the log file.
If both PAP & CHAP are `enabled' and the peer NAKs CHAP
suggesting PAP, be friendly and REQ PAP the next time.
This is in line with the rfc.
Garrett Wollman [Sun, 7 Dec 1997 19:53:44 +0000 (19:53 +0000)]
Added some advice to avoid typedef'ing structures, as this breaks
information-hiding. Also recommended against naming typedefs to end
in _t unless POSIX or ANSI requires it, and in favor of using queue(3)
macros to generate lists rather than rolling one's own.
Sean Eric Fagan [Sun, 7 Dec 1997 18:16:43 +0000 (18:16 +0000)]
Surround the call to procfs_exit() by #ifdef PROCFS/#endif -- much to my
surprise, procfs actually is optional, and some people truly do generate
kernels without it. Wow. I built a kernel without 'options PROCFS' and
it compiled and linked.
check_relay cannot return temporary errors.
The temporary error is logged in the sendmail log, but on the SMTP
protocol level, sendmail returns '550 Access Denied'.
Reviewed by: jmb
Submitted by: Tor Egge <Tor.Egge@idi.ntnu.no>
Kazutaka YOKOTA [Sun, 7 Dec 1997 08:11:16 +0000 (08:11 +0000)]
The `moused' daemon is made to support various serial mouse
protocols to recognized extra buttons and wheel/roller. It now has
PnP COM device support code, thus, some recent mouse products are
automatically detected and an appropriate protocol is selected.
The `-i' option will print the result of auto-detection.
- Added support for the following SERIAL mice:
ALPS GlidePoint, MS IntelliMouse, Kensington Thinking Mouse
(Genius NetMouse, NetMouse Pro, ASCII MieMouse, Logitech MouseMan+,
FirstMouse+ are compatible with MS IntelliMouse, when connected
to a serial port, thus requires no explicit support)
- Added PnP serial mouse identification capability as defined
by Microsoft and Hayes in "Plug and Play External COM Device
Specification, rev 1.00". This support will enable us to identify
the correct protocol to use, or choose a compatible protocol for the
given mouse.
- Utilize new ioctls defined in `mouse.h' to get hardware and protocol
information on PS/2 and bus mouse devices. Try to guess the correct
protocol and port combination based on the obtained info.
- Use MOUSE_SETLEVEL ioctl.
- Use constants defined in `mouse.h' rather than using own definitions.
- A New command line option. The -i option prints the information
collected though the PnP code and psm/mse ioctls mentioned above,
and just quits. This is to test `moused's ability, or inability, to
detect the correct protocol for the given mouse automatically.
- A new command line option. The -m option maps a physical button
to a logical button.
- A new command line option. The -z option maps the Z axis movement to
another axis or a pair of buttons.
- Add other options: -3, -C -F -P.
- Added a handler for SIGHUP. This has been suggested by somebody in the
past (I don't remember who). He wanted this because he wants to attach
or detach a mouse while his laptop is suspended. Now `moused' will
reopens and reinitialize the specified port whenever a SIGHUP is
received. I don't know how useful this can be...
- The `psm' driver is made to recognize various models of PS/2 mice
and enable their extra features so that their additional buttons and
wheel/roller are recognized. The name of the detected model will be
printed at boot time.
- A set of new ioctl functions are added to the `psm', `mse' and
`sysmouse' drivers so that the userland program (such as the X server)
can query device information and change driver settings.
- The wheel/roller movement is handled as the `Z' axis movement by the
mouse drivers and the moused daemon. The Z axis movement may be mapped
to another axis movement or buttons.
- The mouse drivers support a new, standard mouse data format,
MOUSE_PROTO_SYSMOUSE format which can encode x, y, and x axis movement
and up to 10 buttons.
/sys/i386/include/mouse.h
- Added some fields to `mousestatus_t' to store Z axis movement
and flag bits.
- Added the field `model' to `mousehw_t' to store mouse model code.
Defined model codes.
- Extended `mousemode_t'.
- Added new protocols and some constants for them.
- Added new ioctl functions and structures.
- Removed obsolete ioctl definitions.
/sys/i386/include/console.h
- Added `dz' field to the structure `mouse_data' to pass Z axis movement
to `syscons/sysmouse'.
- Removed LEFT_BUTTON, MIDDLE_BUTTON and RIGHT_BUTTON. Use button bits
defined in `mouse.h' instead.
/sys/i386/isa/psm.c
- Added a set of functions to detect various mice which have additional
features (wheel and buttons) unavailable in the standard PS/2 mouse.
- Refined existing ioctl functions and added new ones. Most important
of all is MOUSE_SETLEVEL which manipulates the output level of the driver.
While the output level remains zero, the output from the `psm' driver is
in the standard PS/2 mouse format (three bytes long). When the level
is set to one, the `psm' driver will send data in the extended format.
At the level two the driver uses the format which is native to the
connected mouse is used. (Meaning that the output from the device is
passed to the caller as is, unmodified.) The `psm' driver will pass
such extended data format as is to the caller if the output level is
two, but emulates the standard format if the output level is zero.
- Added kernel configuration flags to set initial resolution
(PSM_CONFIG_RESOLUTION) and acceleration (PSM_CONFIG_ACCEL).
- Removed the compile options PSM_ACCEL, PSM_CHECKSYNC and PSM_EMULATION.
Acceleration ratio is now specified by the kernel configuration flags
stated above. Sync check logic is refined and now standard.
The sync check can be turned off by the new kernel configuration flags
PSM_CONFIG_NOCHECKSYNC (0x100). PSM_EMULATION has been of little use.
- Summer clean up :-) Removed unused code and obsolete comments.
/sys/i386/isa/mse.c
- Created mseioctl() to deal with ioctl functions MOUSE_XXXX.
Most importantly, the MOUSE_SETLEVEL ioctl will change the
output format from the 5 byte format to the new, extended format
so that the caller can take advantage of Z axis movement and additional
buttons.
- Use constants defined in `mouse.h' rather than magic numbers.
/sys/i386/isa/syscons.c
- Changed scioctl() to reflect the new `console.h' and some of the new
ioctls defined in `mouse.h'. Most importantly, the MOUSE_SETLEVEL
ioctl will change the `sysmouse' output format from the MouseSystems
5 byte format to the new, extended format so that the caller can
take advantage of Z axis movement and additional buttons.
- Added support for double/triple click actions of the left button and
single click action of the right button in the virtual console. The
left button double click will select a word under the mouse pointer.
The triple click will select a line and the single click of the right
button will extend the selected region to the current position of
the mouse pointer. This will make the cut/paste support more compatible
with xterm.
Brian Somers [Sun, 7 Dec 1997 04:09:15 +0000 (04:09 +0000)]
Only allow one arg to `delete' - the mask & gateway aren't necessary.
Delete AF_LINK routes as well as AF_INET.
Allow the word `default' as the arg to `delete' or in place of the
first two args (dest & netmask) to `add'.
Accept INTERFACE as the third arg to `add'.
You can now say `add default interface' to create a default route
through the tun interface. It's reported that subsequent bind()s
will bind to a broadcast address and not to the address currently
assigned to the tun device - this is the first step towards
supporting that first connection that was around from before the
dynamic IP negotiation....
Sean Eric Fagan [Sun, 7 Dec 1997 04:08:48 +0000 (04:08 +0000)]
Use the new PF_LINGER flag -- when this is set in a process' proc structure,
said process will not have its event mask cleared (and be restarted) on
the last close of a procfs/mem file for that pid. This reduces the chance
that a truss-monitored process will be left hanging with these bits set
and nobody looking for it.
This is the least-tested change of all of these, I'm afraid.
Sean Eric Fagan [Sun, 7 Dec 1997 04:01:03 +0000 (04:01 +0000)]
Clear the stop events and wakeup the process on teh last close of the
procfs/mem file. While this doesn't prevent an unkillable process, it
means that a broken truss prorgam won't do it accidently now (well,
there's a small window of opportunity). Note that this requires the
change to truss I am about to commit.
Bruce Evans [Sat, 6 Dec 1997 13:25:01 +0000 (13:25 +0000)]
Use ENOIOCTL instead of -1 (= ERESTART) for tty ioctls that are
not handled at a particular level. This fixes mainly restarting
of interrupted TIOCDRAINs and TIOCSETA{W,F}s.
Bruce Evans [Sat, 6 Dec 1997 11:28:06 +0000 (11:28 +0000)]
Added a kernel-only error code ENOICTL. This will be returned from
low level ioctl routines instead of the magic number -1 so that
callers can distinguish it from ERESTART (which happens to be -1).
-1 meant that the ioctl was not handled at the called level.
ERESTART is normal when a sleeping ioctl is interrupted. ERESTART
got converted to ENOTTY instead of restarting the ioctl. Many
(most?) ioctls can not be restarted safely, but this is apparently
supposed to be handled by drivers converting ERESTART to EINTR.
I first saw this problem for TIOCDRAIN. Justin saw if for disk
ioctls.
Sean Eric Fagan [Sat, 6 Dec 1997 06:51:14 +0000 (06:51 +0000)]
First cut at printing out ioctl names intelligently. Note that this doesn't
handle linux ioctls (yet?). This uses the mkioctl script from kdump,
bless its little heart.