Robert Watson [Mon, 18 Nov 2002 14:23:21 +0000 (14:23 +0000)]
We leaked a process lock reference in the event an RFTHREAD process
leader wasn't exiting during a fork; instead, do remember to release
the lock avoiding lock order reversals and recursion panic.
Reported by: "Joel M. Baldwin" <qumqats@outel.org>
Marcel Moolenaar [Mon, 18 Nov 2002 08:37:46 +0000 (08:37 +0000)]
Create a link /boot -> /<efi>/boot, where <efi> is the mountpoint
of the EFI file system. This makes the EFI partition non-optional.
I don't think that the links are actually correct, given that all
the mount points are under /mnt when sysinstall is run as init.
(ie a non-upgrade). Thus: I think I need to go in once more, but
at least this doesn't get lost...
Jake Burkholder [Mon, 18 Nov 2002 06:19:12 +0000 (06:19 +0000)]
Create the ofwcons device at SI_SUB_CONFIGURE instead of SI_SUB_DRIVERS,
after configure() has run. Only create the device if ofwcons is the
highest priority console. Make a dev alias with the same name as the
firmware output-device property.
Juli Mallett [Mon, 18 Nov 2002 06:17:07 +0000 (06:17 +0000)]
Move SHOW_BUSYBUFS and PANIC_REBOOT_WAIT_TIME into the MI options file, since
MI code uses them, and every platform provides them (except x86_64 whose
options file was lacking one).
Julian Elischer [Mon, 18 Nov 2002 04:58:11 +0000 (04:58 +0000)]
Everything in the disklabel is unsigned so make all the input routines
take unsigned values.
his allows one to label disk with the number of blocks > 31 bits
(though less then 32 bits)
e.g.
# size offset fstype [fsize bsize bps/cpg]
c: 3125755904 0 unused 0 0 # (Cyl. 0 - 194569*)
d: 3125755840 64 unused 0 0 # (Cyl. 0*- 194569*)
which is needd to test UFS2
David Xu [Mon, 18 Nov 2002 01:59:31 +0000 (01:59 +0000)]
1. Support versioning and wall clock in kse mailbox,
also add rusage time in thread mailbox.
2. Minor change for thread limit code in thread_user_enter(),
fix typo in kse_release() last I committed.
Alan Cox [Mon, 18 Nov 2002 01:36:09 +0000 (01:36 +0000)]
MFi386 r1.369
- Clear the PG_WRITEABLE flag in pmap_changebit() if write access is
being removed. Return immediately if write access is being removed and
PG_WRITEABLE is already clear.
Note: For efficiency, pmap_changebit() should be replaced by a function
similar to sparc64's pmap_clear_write().
Alan Cox [Sun, 17 Nov 2002 21:48:42 +0000 (21:48 +0000)]
MFi386 r1.369
- Clear the PG_WRITEABLE flag in pmap_page_protect() if write access is
being removed. Return immediately if write access is being removed and
PG_WRITEABLE is already clear.
Luigi Rizzo [Sun, 17 Nov 2002 16:30:44 +0000 (16:30 +0000)]
Move the ip_fragment code from ip_output() to a separate function,
so that it can be reused elsewhere (there is a number of places
where it can be useful). This also trims some 200 lines from
the body of ip_output(), which helps readability a bit.
(This change was discussed a few weeks ago on the mailing lists,
Julian agreed, silence from others. It is not a functional change,
so i expect it to be ok to commit it now but i am happy to back it
out if there are objections).
While at it, fix some function headers and replace m_copy() with
m_copypacket() where applicable.
Jake Burkholder [Sun, 17 Nov 2002 16:00:51 +0000 (16:00 +0000)]
- Add support for ALT_BREAK_TO_DEBUGGER; this is the only reliable way to
trigger a breakpoint with this chip.
- Fiddle the right bits in the cn input and output routines to disable port
interrupts and enable visibility of the masked interrupt status bits.
- Register a shutdown final event handler to put the chip back in the mode
that the prom expects.
David Xu [Sun, 17 Nov 2002 11:47:03 +0000 (11:47 +0000)]
1.Add sysctls to control KSE resource allocation.
kern.threads.max_threads_per_proc
kern.threads.max_groups_per_proc
2.Temporary disable borrower thread stash itself as
owner thread's spare thread in thread_exit(). there
is a race between owner thread and borrow thread:
an owner thread may allocate a spare thread as this:
if (td->td_standin == NULL)
td->standin = thread_alloc();
but thread_alloc() can block the thread, then a borrower
thread would possible stash it self as owner's spare
thread in thread_exit(), after owner is resumed, result
is a thread leak in kernel, double check in owner can
avoid the race, but it may be ugly and not worth to do.
Doug Barton [Sun, 17 Nov 2002 08:54:29 +0000 (08:54 +0000)]
goto break; != break;
I've no idea if this is the right behavior for the library, but this
at least fixes the build, and matches what seems to be alfred's intent
in the commit message for 1.19.
Alfred Perlstein [Sun, 17 Nov 2002 04:15:34 +0000 (04:15 +0000)]
Rework the sysconf(3) interaction with aio:
sysconf.c:
Use 'break' rather than 'goto yesno' in sysconf.c so that we report a '0'
return value from the kernel sysctl.
vfs_aio.c:
Make aio reset its configuration parameters to -1 after unloading
instead of 0.
posix4_mib.c:
Initialize the aio configuration parameters to -1
to indicate that it is not loaded.
Add a facility (p31b_iscfg()) to determine if a posix4 facility has been
initialized to avoid having to re-order the SYSINITs.
Use p31b_iscfg() to determine if aio has had a chance to run yet which
is likely if it is compiled into the kernel and avoid spamming its
values.
Introduce a macro P31B_VALID() instead of doing the same comparison over
and over.
Marcel Moolenaar [Sat, 16 Nov 2002 17:05:06 +0000 (17:05 +0000)]
Implement the lock with a cmpxchg instruction instead of a xchg.
Both are atomic, but the cmpxchg has memory ordering hints. We
give this acquire semantics.
NOTE: The unlock in libc_r is implemented by a "normal" assign
statement. This is not correct on ia64 due to the memory ordering
characteristics of the architecture. We need release semantics
for an unlock.
Daniel Eischen [Sat, 16 Nov 2002 06:39:11 +0000 (06:39 +0000)]
Disconnect the userland get/set/swapcontext() functions from
libc. I want to keep these in some version for the thread
library/ies, but don't know whether to have them repo-copied
to libc_r or renamed and kept in libc.
Change the name of an alpha macro that was changed with the
system call commit.
Daniel Eischen [Sat, 16 Nov 2002 06:35:53 +0000 (06:35 +0000)]
Add getcontext, setcontext, and swapcontext as system calls.
Previously these were libc functions but were requested to
be made into system calls for atomicity and to coalesce what
might be two entrances into the kernel (signal mask setting
and floating point trap) into one.
A few style nits and comments from bde are also included.
Alfred Perlstein [Sat, 16 Nov 2002 06:35:20 +0000 (06:35 +0000)]
Provide more correct default values for sysconf(3) reporting of the AIO
subsystems capabilities:
_SC_AIO_LISTIO_MAX returns the default of _POSIX_AIO_LISTIO_MAX
_SC_AIO_MAX returns the default _POSIX_AIO_MAX
_SC_AIO_PRIO_DELTA_MAX returns the default of 0
Without these adjustments the values returned are -1 even when the
aio side of the kernel returns '0' for them which is incorrect.
Luigi Rizzo [Fri, 15 Nov 2002 22:53:53 +0000 (22:53 +0000)]
Massive cleanup of the ip_mroute code.
No functional changes, but:
+ the mrouting module now should behave the same as the compiled-in
version (it did not before, some of the rsvp code was not loaded
properly);
+ netinet/ip_mroute.c is now truly optional;
+ removed some redundant/unused code;
+ changed many instances of '0' to NULL and INADDR_ANY as appropriate;
+ removed several static variables to make the code more SMP-friendly;
+ fixed some minor bugs in the mrouting code (mostly, incorrect return
values from functions).
This commit is also a prerequisite to the addition of support for PIM,
which i would like to put in before DP2 (it does not change any of
the existing APIs, anyways).
Note, in the process we found out that some device drivers fail to
properly handle changes in IFF_ALLMULTI, leading to interesting
behaviour when a multicast router is started. This bug is not
corrected by this commit, and will be fixed with a separate commit.
Detailed changes:
--------------------
netinet/ip_mroute.c all the above.
conf/files make ip_mroute.c optional
net/route.c fix mrt_ioctl hook
netinet/ip_input.c fix ip_mforward hook, move rsvp_input() here
together with other rsvp code, and a couple
of indentation fixes.
netinet/ip_output.c fix ip_mforward and ip_mcast_src hooks
netinet/ip_var.h rsvp function hooks
netinet/raw_ip.c hooks for mrouting and rsvp functions, plus
interface cleanup.
netinet/ip_mroute.h remove an unused and optional field from a struct
Most of the code is from Pavlin Radoslavov and the XORP project
Peter Wemm [Fri, 15 Nov 2002 22:43:56 +0000 (22:43 +0000)]
A little bit of anti-foot-shooting. Use utimes(2) rather than
the deprecated utime(3). utimes(2) uses timeval, but utime(3) uses
time_t's. If you do bad things (like I did) by mixing up include files
with libc, then install can do strange things if you mismatch the time_t
stuff. utime() is emulated entirely within libc.
Peter Wemm [Fri, 15 Nov 2002 22:42:00 +0000 (22:42 +0000)]
utmp.ut_time and lastlog.ll_time are explicitly int32_t rather than
time_t. Deal with the possibility that time_t != int32_t. This boils
down to this sort of thing:
- time(&ut.ut_time);
+ ut.ut_time = time(NULL);
and similar for ctime(3) etc. I've kept it minimal for the stuff
that may need to be portable (or 3rd party code), but used Matt's time32
stuff for cases where that isn't as much of a concern.
Peter Wemm [Fri, 15 Nov 2002 22:35:34 +0000 (22:35 +0000)]
Test the water. Make time_t long (64 bit) on ia64 since we do not have
to worry about ABI vs released systems yet. This is mostly transparent
since there is no significant exposure in the syscall interface. The
things that go wrong are mostly userland stuff - time(&intvariable).
John Baldwin [Fri, 15 Nov 2002 22:03:25 +0000 (22:03 +0000)]
Rework the checking out of the doc, src, and ports trees a bit to make it
more manageable.
- Add some helper variables (CVS_{SRC,DOC,PORTS}ARGS) to be used when
using CVS to checkout files. We stick release tags in these helper
variables if they are defined and then use only one cvs command instead
of two cvs commands with an .ifdef to choose between them.
- rm the old src/doc/ports directories as separate commands from the
CVS comands so that the rm commands don't need to be duplicated.
- Simplify the DOMINIMALDOCPORTS case by overriding RELEASEPORTSMODULE to
be ${MINIMALDOCPORTS} thus removing yet another nearly-duplicate cvs
command in an .ifdef.
- Add support for grabbing src/ and doc/ from external directories
specified via EXTSRCDIR and EXTDOCDIR instead of from CVS. The same
is not done for ports/ quite yet as the DOMINIMALDOCPORTS case is a
bit tricky.
The rerelease target scripts have not been changed to use the helper
variables yet, so there is still some room for improvement.
Bruce A. Mah [Fri, 15 Nov 2002 19:34:31 +0000 (19:34 +0000)]
Explicitly add lang/perl5 to the disc1 packages. Practically speaking,
this is unnecessary, because some other port is likely to depend on it
anyways. But just to be safe...
Bruce A. Mah [Fri, 15 Nov 2002 17:57:51 +0000 (17:57 +0000)]
Update sparc64 installation instructions. Because sysinstall now
works on sparc64, this document can now use (almost) the same
procedures as i386, et al. CDROM booting instructions are cut-and-pasted
from the older sparc64/install.sgml file, which is now unlinked from
the document build.
This document is a long ways from perfect, but it's better than shipping
instructions for an installation procedure that doesn't apply anymore.
While here, add some SGML comments to help others navigate the sources.
Archie Cobbs [Fri, 15 Nov 2002 00:34:28 +0000 (00:34 +0000)]
When about to do an execve(), don't reset the O_NONBLOCK flag on any file
descriptors that have the close-on-exec flag set, as that will have no
effect anyway and might screw something else up if the file descriptor
happens to be shared with another process.