Commit Graph

79578 Commits

Author SHA1 Message Date
John Baldwin
5fc3031366 - Change falloc() to acquire an fd from the process table last so that
it can do it w/o needing to hold the filelist_lock sx lock.
- fdalloc() doesn't need Giant to call free() anymore.  It also doesn't
  need to drop and reacquire the filedesc lock around free() now as a
  result.
- Try to make the code that copies fd tables when extending the fd table in
  fdalloc() a bit more readable by performing assignments in separate
  statements.  This is still a bit ugly though.
- Use max() instead of an if statement so to figure out the starting point
  in the search-for-a-free-fd loop in fdalloc() so it reads better next to
  the min() in the previous line.
- Don't grow nfiles in steps up to the size needed if we dup2() to some
  really large number.  Go ahead and double 'nfiles' in a loop prior
  to doing the malloc().
- malloc() doesn't need Giant now.
- Use malloc() and free() instead of MALLOC() and FREE() in fdalloc().
- Check to see if the size we are going to grow to is too big, not if the
  current size of the fd table is too big in the loop in fdalloc().  This
  means if we are out of space or if dup2() requests too high of a fd,
  then we will return an error before we go off and try to allocate some
  huge table and copy the existing table into it.
- Move all of the logic for dup'ing a file descriptor into do_dup() instead
  of putting some of it in do_dup() and duplicating other parts in four
  different places.  This makes dup(), dup2(), and fcntl(F_DUPFD) basically
  wrappers of do_dup now.  fcntl() still has an extra check since it uses
  a different error return value in one case then the other functions.
- Add a KASSERT() for an assertion that may not always be true where the
  fdcheckstd() function assumes that falloc() returns the fd requested and
  not some other fd.  I think that the assertion is always true because we
  are always single-threaded when we get to this point, but if one was
  using rfork() and another process sharing the fd table were playing with
  the fd table, there might could be a problem.
- To handle the problem of a file descriptor we are dup()'ing being closed
  out from under us in dup() in general, do_dup() now obtains a reference
  on the file in question before calling fdalloc().  If after the call to
  fdalloc() the file for the fd we are dup'ing is a different file, then
  we drop our reference on the original file and return EBADF.  This
  race was only handled in the dup2() case before and would just retry
  the operation.  The error return allows the user to know they are being
  stupid since they have a locking bug in their app instead of dup'ing
  some other descriptor and returning it to them.

Tested on:	i386, alpha, sparc64
2002-09-03 20:16:31 +00:00
Tony Finch
23a4f59e03 Don't try (and fail) to fchmod /dev/stdout. Revert the manual page
to suggest the portable alternative to -p.

PR:		42356
Submitted by:	Kimura Fuyuki <fuyuki@hadaly.org>
MFC after:	1 week
2002-09-03 19:37:23 +00:00
John Baldwin
1519d15caa - Move $FreeBSD$ to the top of the file.
- Fix a few grammar bogons.
- Add a small style guide.

Reviewed by:	bde (a while ago)
2002-09-03 19:21:39 +00:00
John Baldwin
0d975d6341 Add some KASSERT()'s to ensure that we don't perform spin mutex ops on
sleep mutexes and vice versa.  WITNESS normally should catch this but
not everyone uses WITNESS so this is a fallback to catch nasty but easy
to do bugs.
2002-09-03 18:25:16 +00:00
Eric Melville
6d1020dae1 Adhere to guidelines when testing for null strings.
Submitted by:	rwatson
2002-09-03 17:39:26 +00:00
Justin T. Gibbs
3251b39822 Remove aic7xxx from the module build framework until all bootstrapping
issues are resolved.
2002-09-03 16:54:48 +00:00
Gordon Tetlow
f048183067 nfsd doesn't die on SIGTERM but on SIGUSR1, correct script to kill nfsd with
the right signal.
2002-09-03 16:02:57 +00:00
Jake Burkholder
aa41a4bc92 Don't need to install the signal trampoline here anymore. 2002-09-03 14:59:41 +00:00
Jake Burkholder
89172e2e25 Install the userland signal trampoline when sigaction is first called,
instead of on startup.  This fixes binary compatibility of dynamically
linked binaries from before the signal code move.

Suggested by:	wollman (a long time ago)
2002-09-03 14:55:29 +00:00
David Xu
35c32a76f9 In the kernel code, we have the tsleep() call with the PCATCH argument.
PCATCH means 'if we get a signal, interrupt me!" and tsleep returns
either EINTR or ERESTART depending on the circumstances.  ERESTART is
"special" because it causes the system call to fail, but right as it
returns back to userland it tells the trap handler to move %eip back a
bit so that userland will immediately re-run the syscall.
This is a syscall restart. It only works for things like read() etc where
nothing has changed yet. Note that *userland* is tricked into restarting
the syscall by the kernel. The kernel doesn't actually do the restart. It
is deadly for things like select, poll, nanosleep etc where it might cause
the elapsed time to be reset and start again from scratch.  So those
syscalls do this to prevent userland rerunning the syscall:
  if (error == ERESTART) error = EINTR;

Fake "signals" like SIGTSTP from ^Z etc do not normally invoke userland
signal handlers. But, in -current, the PCATCH *is* being triggered and
tsleep is returning ERESTART, and the syscall is aborted even though no
userland signal handler was run.
That is the fault here.  We're triggering the PCATCH in cases that we
shouldn't.  ie: it is being triggered on *any* signal processing, rather
than the case where the signal is posted to userland.
	--- Peter

The work of psignal() is a patchwork of special case required by the process
debugging and job-control facilities...
	--- Kirk McKusick
	"The design and impelementation of the 4.4BSD Operating system"
	Page 105

in STABLE source, when psignal is posting a STOP signal to sleeping
process and the signal action of the process is SIG_DFL, system will
directly change the process state from SSLEEP to SSTOP, and when
SIGCONT is posted to the stopped process, if it finds that the process
is still on sleep queue, the process state will be restored to SSLEEP,
and won't wakeup the process.

this commit mimics the behaviour in STABLE source tree.

Reviewed by: Jon Mini, Tim Robbins, Peter Wemm
Approved by: julian@freebsd.org (mentor)
2002-09-03 12:56:01 +00:00
Poul-Henning Kamp
b4dde36292 Remove a debug printf.
Correctly identify the ARGOSY SP320 dual port serial PCMCIA card.
2002-09-03 11:31:34 +00:00
Poul-Henning Kamp
13c33c582a Drop another cookie to wet Warners appetite:
We need to call the drivers interrupt function even though the card is not
multifunction.
2002-09-03 11:24:25 +00:00
Poul-Henning Kamp
b5518fb0cf Fix interrupt registration:
PUC devices live on pccard or pci so INTR_FAST is never really an option.
Don't try to register the interrupt as fast and don't allow the children
to do so either.
2002-09-03 11:22:13 +00:00
Poul-Henning Kamp
ed4208e931 Style: fix a function whitespace stuff-up. Remove a debugging printf. 2002-09-03 11:19:44 +00:00
Poul-Henning Kamp
c91680190a Style: move a global variable up to the top of the file. 2002-09-03 11:18:35 +00:00
Poul-Henning Kamp
ca603e16f2 Don't probe the interrupt on puc(4) attached devices. 2002-09-03 11:17:38 +00:00
Tony Finch
59706ac3bb Suggest -p instead of -o /dev/stdout.
PR:	42356
2002-09-03 10:18:56 +00:00
Tony Finch
4023416250 Remove spurious whitespace 2002-09-03 09:58:11 +00:00
Maxim Sobolev
5cfa81a801 - Improve AC97 presence check and move it from fm801_attach() to fm801_probe();
- add bus capabilities into the driver, so that it is possible for a radio
  driver to attach to it to use shared resources of fm801 chip. The radio
  driver itself will be committed later.

MFC after:	1 week
2002-09-03 08:58:15 +00:00
Maxim Sobolev
76b27d2150 When installing package from a local file assume that all subsequent
autoinstalled dependencies will have the same extension, not just
".tbz".

Pointy hat to:	obrien
X-MFC after:	-1 day
2002-09-03 06:59:33 +00:00
Warner Losh
f8a4c9012c gcc 3.2
rm -rf /usr/include/g++ needed to upgrade from 4.6
2002-09-03 06:13:43 +00:00
Juli Mallett
daed3ad661 Prevent ps(1) from doing idiotic munging of things in a -ofmt= string.
God I hate the backwards compatability crap here.
2002-09-03 05:44:00 +00:00
Peter Wemm
b331ec93c0 Fix a nasty bug exposed by mktime() when time_t is significantly bigger
than 32 bits.  It was trying to figure out things like the day of week
of when time_t is roughly 2^62 etc.  Make a better guess for the starting
point for the binary search that works on both 32 and 64 bit types.  I have
been using this for a while now.
2002-09-03 04:34:10 +00:00
Matt Jacob
162e98939f Turn off usage of SMP style locking until we sort out CAM. 2002-09-03 04:31:55 +00:00
Peter Wemm
b11ac5597c Make this compile 2002-09-03 04:30:00 +00:00
Matt Jacob
530d743a2f Don't do transition locking (i.e., CAM->MPT->CAM)- Peter claimed that ia64
chokes the chicken with this.

Submitted by:	wemm@freebsd.org
2002-09-03 02:18:21 +00:00
Tim J. Robbins
f0c6c306f9 Set errno to EILSEQ when invalid multibyte sequences are detected
(XSI extension to 1003.1-2001).
2002-09-03 01:09:47 +00:00
Bruce A. Mah
f10248e26b Modified release notes: Remote note about enabling rnNG (it's now on
by default), cvs 1.11.2.

MFCs noted:  Binutils 2.12.1 20020622 snapshot.
2002-09-03 01:07:32 +00:00
Bruce A. Mah
689a1bf19c New release notes: ng_l2tp(4) (+MFC), ifconfig(8) promisc (+MFC),
inetd(8) service limitations (+MFC).

MFCs noted:  uaudio, daemon(8), tcpd(8).
2002-09-03 00:26:24 +00:00
Mike Barcroft
dd1b6791a8 Now that _BSD_CLK_TCK_ and _BSD_CLOCKS_PER_SEC_ are the same on all
architectures, move the definition directly into <time.h> and finish
the removal of <machine/ansi.h>.
2002-09-03 00:06:58 +00:00
Jake Burkholder
65be42f64d Remove an unneeded PROC_LOCK, which caused lock recursion panics.
Print a warning about old applications with no signal trampoline.

Reported by:	marius@alchemy.franken.de
2002-09-02 23:46:13 +00:00
Ian Dowse
c9400e18a9 Use the new kern_*() functions to avoid using the stack gap in
linux_fcntl*() and linux_getcwd().
2002-09-02 22:46:05 +00:00
Mike Barcroft
d0a18151c9 Align _BSD_CLK_TCK_ and _BSD_CLOCKS_PER_SEC_ with most other
platforms.  This introduces some binary incompatibilities for
dynamically linked programs which make use of clock(3) and times(3).

Approved by:	jake
2002-09-02 22:40:56 +00:00
Ian Dowse
48b52b7a32 Split up __getcwd so that kernel callers of the internal version
can specify whether the buffer is in user or system space.
2002-09-02 22:40:30 +00:00
Mike Barcroft
f2893bd9ef Align _BSD_CLK_TCK_ and _BSD_CLOCKS_PER_SEC_ with most other
platforms.  This introduces some binary incompatibilities for
dynamically linked programs which make use of clock(3) and times(3).
2002-09-02 22:40:12 +00:00
Ian Dowse
49c2ff159f Split fcntl() into a wrapper and a kernel-callable kern_fcntl()
implementation. The wrapper is responsible for copying additional
structure arguments (struct flock) to and from userland.
2002-09-02 22:24:14 +00:00
Gordon Tetlow
b168ce8b63 We don't use single_mountd_enable anymore. It's just mountd_enable. I must
have missed this in my earlier sweep.
2002-09-02 21:20:58 +00:00
Gordon Tetlow
da5e455e1a Only install the scripts that actually used on FreeBSD. 2002-09-02 20:49:26 +00:00
Gordon Tetlow
4376ad7708 Commit a revised sendmail script that works the same way as rc.sendmail.
This should also quell warnings when sendmail_enable="NONE"
2002-09-02 20:37:03 +00:00
Brooks Davis
9c2060cdf4 Hook up libkern/strlcpy.c and libkern/strlcat.c after repocopy.
Obtained from:	OpenBSD
Discussed on:	-arch
2002-09-02 20:16:22 +00:00
Brooks Davis
3a93719872 Make SCSI_DELAY setable at boot time and runtime via the
kern.cam.scsi_delay tunable/sysctl.

Reviewed by:	mdodd, njl
2002-09-02 20:10:19 +00:00
David Malone
60c1ef970b Don't initialise policy, v4bind and v6bind where the variables are
declared - it was bad style and caused a bug. v[46]bind need to be
reset whenever we go to the "more:" label.

Jean-Luc and I came up with this patch independently, so it had
better be right!

PR:		40771
Submitted by:	Jean-Luc Richier <Jean-Luc.Richier@imag.fr>
2002-09-02 20:07:14 +00:00
David Malone
d0c55c69c9 tpc -> tcp in an error message.
PR:		40771
Submitted by:	Jean-Luc Richier <Jean-Luc.Richier@imag.fr>
2002-09-02 20:00:46 +00:00
David Malone
fa11816b52 Clear up a few warnings (unused variable, rpc versions are usigned so use %u,
rename a parameter to avoid shadowing a global).

MFC after:	1 month
2002-09-02 19:58:15 +00:00
Poul-Henning Kamp
caefa40062 Switch over to the new EA manipulation utilities.
Sponsored by:	DARPA & NAI Labs.
2002-09-02 19:28:59 +00:00
Matthew Dillon
05ef87980a Grammer cleanup 2002-09-02 17:27:30 +00:00
Gordon Tetlow
67a399fda8 Turn rc_ng on by default now, it's time has come. While we are at it, I'd
like to thank Mike Makonnen for all his work on rcNG. Without him, none
of this would have been possible.
2002-09-02 16:35:01 +00:00
Brian Somers
31c759c0ef Unbreak -DNOINET6
Submitted by:	Andre Albsmeier <andre.albsmeier@mchp.siemens.de>
MFC after:	1 day
2002-09-02 13:34:27 +00:00
Peter Wemm
ffd0421837 cvs-1.11.2 seems to bug out if HAVE_MMAP is not defined. It hoses its
internal buffer management somehow (an off by one perhaps).  HAVE_MMAP
wasn't detected because configure has a bogus declaration of malloc
which conflicted with stdlib.h.  Sigh.
2002-09-02 11:35:13 +00:00
Peter Wemm
e9c371a38d Fix a cvs server bug introduced in 1.11.2, in the words of the author:
---
Fix communication hanging in communication shutdown phase, caused by at
least older CVS clients (version < 1.11.2) and a semantically incorrect
usage of getc() by the server.
---

getc() was being used on a blocking socket/pipe.

Submitted by:   rse
2002-09-02 07:58:04 +00:00