Doug Rabson [Mon, 29 Oct 2001 12:04:23 +0000 (12:04 +0000)]
* Factor out common code for manipulating the RSE backing store.
* Implement a fairly simplistic parser for unwinding stack frames.
* Use unwind records for DDB's 'trace' command. Also add support for
tracing past exceptions to the context which generated the exception.
The stack unwind code requires a toolchain based on binutils-2.11.2 or
later and gcc-3.0.1 or later.
Peter Wemm [Mon, 29 Oct 2001 10:18:58 +0000 (10:18 +0000)]
Mostly cosmetic. Use indentation that is reasonably close to other
ia64 *.S files in our tree (eg: locore.s). Put the rest of the args
in the .section lines.
Peter Wemm [Mon, 29 Oct 2001 10:10:10 +0000 (10:10 +0000)]
Update rtld for the "new" ia64 ABI. In the old toolchain, the
DT_INIT and DT_FINI tags pointed to fptr records. In 2.11.2, it points
to the actuall address of the function. On IA64 you cannot just take
an address of a function, store it in a function pointer variable and
call it.. the function pointers point to a fptr data block that has the
target gp and address in it. This is absolutely necessary for using
the in-tree binutils toolchain, but (unfortunately) will not work with
old shared libraries. Save your old ld-elf.so.1 if you want to use
old ones still. Do not mix-and-match.
Marcel Moolenaar [Mon, 29 Oct 2001 07:34:48 +0000 (07:34 +0000)]
o Send a test IPI from the BSP to itself at the same time APs
are woken up.
o Make IPIs synchronuous by default. If we want asynchronuous
IPIs, we may want to make the memory fence controllable.
Mike Barcroft [Mon, 29 Oct 2001 07:29:03 +0000 (07:29 +0000)]
Use a more sophisticated check that works better with older versions
of GCC when setting __func__ to NULL. This also better supports GCC
when using C++. Move the definition to a better location.
Marcel Moolenaar [Mon, 29 Oct 2001 05:17:36 +0000 (05:17 +0000)]
Make the clock vector 255 instead of 240. On Lion boxes, 240 is
the AP wake-up vector. We probably want a more dynamic approach
to assigning vectors in the future...
Bruce A. Mah [Mon, 29 Oct 2001 05:08:52 +0000 (05:08 +0000)]
Add infrastructure for an ia64 hardware list. It's a long way from
being usable at this point, so it's not even hooked up to the rest
of the RELNOTESng build; however it will be helpful for testing the content
as it approaches reality.
Marcel Moolenaar [Mon, 29 Oct 2001 04:59:35 +0000 (04:59 +0000)]
Small correction in the LOCAL_SAPIC structure. The Flags field
starts at offset 8; not 6. Hence the structure is 12 bytes and
not 10 bytes. Adjust the definition so that the ProcessorEnabled
flag is moved from bit 15 to bit 31 in the Flags field.
Bruce A. Mah [Mon, 29 Oct 2001 04:45:08 +0000 (04:45 +0000)]
Start to unravel some of the mess in the Ethernet NIC section. The
original hardware list was mostly organized by driver except for the
case of NICs by Intel, DEC, and 3Com, whose NICs tended to be
organized by manufacturer. Most of these entries are now organized by
driver, except for a few 3Com NICs; also the multitude of ed(4)
drivers needs to be coalesced.
While I'm here, fix a markup glitch in the ISDN section that caused
any non-i386 hardware list to be incorrectly numbered.
Marcel Moolenaar [Mon, 29 Oct 2001 02:16:02 +0000 (02:16 +0000)]
o Do not parse the MADT as a side-effect in AcpiOsGetRootPointer,
do it as a side-effect of probing for MP hardware. This allows
us to scan for local SAPICs early (especially before MBUF
initialization).
o Fix the Local SAPIC structure so that matches the Local SAPIC
table entry. Now that the Local SAPIC info is the same as the
Local APIC info, stop dumping the Local APIC entries.
o For every Local SAPIC entry in the MADT that's not disabled,
let the SMP code know about it. They represent actual CPUs.
o Register the OS_BOOT_RENDEZ entry point and provide a (bogus)
implementation for the entry point.
o Provide a mapping for internal IPI numbers to ExtINT vectors.
o In a MP system, announce the CPUs and start them by sending
IPI_AP_WAKEUP to each of them. Not that it makes a difference
at this time :-)
o Miscellaneous style fixes and other adjustments.
1) In devclass_alloc_unit(), skip duplicated wired devices (i.e. with fixed
number) instead of allocating next free unit for them. If someone needs
fixed place, he must specify it correctly. "Allocating next" is especially bad
because leads to double device detection and to "repeat make_dev panic" as
result. This can happens if the same devices present somewhere on PCI bus,
hints and ACPI. Making them present in one place only not always
possible, "sc" f.e. can't be removed from hints, it results to no console at
all.
2) In make_device(), detect when devclass_add_device() fails, free dev and
return. I.e. add missing error checking. This part needed to finish fix in 1),
but must be done this way in anycase, with old variant too.
Robert Watson [Sun, 28 Oct 2001 22:54:16 +0000 (22:54 +0000)]
o Restore previous inconsistent style to login_fbtab.c, following its
modification to add glob support. The submitted patch used a degraded
form of KNF.
Matthew Dillon [Sun, 28 Oct 2001 20:53:17 +0000 (20:53 +0000)]
Do not assume that sizeof(tv_sec) is sizeof(time_t) - it will be, but
it isn't yet because our tv_sec is currently a long (so 64 bit architectures
are already broken to a degree).
Matthew Dillon [Sun, 28 Oct 2001 20:01:38 +0000 (20:01 +0000)]
Make the protocol/dumprestore.h header match restore's idea of the dump
header for the case where sizeof(time_t) != sizeof(int). dumprestore.h
was embedding time_t when it should have been embedding int32_t.
Use time_to_time32() and time32_to_time() to convert between the
protocoll/file-format time and time_t.
Matthew Dillon [Sun, 28 Oct 2001 19:54:49 +0000 (19:54 +0000)]
Add routines to convert time_t to/from fixed-bit fields. These routines
serve two purposes: (1) so we can maintain backwards compatibility with
protocols (rwhod, dump, etc...) that either assume time_t is 32 bits or
assume sizeof(time_t) == sizeof(int), or make other similar assumptions.
(2) To tag such routines (by the presence of these calls) for future
cleanup/extension work.
The 32->64 routine, time32_to_time() (when time_t is 64 bits, that is),
is defined specifically to implement temporal locality to properly set the
msb bits of a 64 bit time_t quantity, using the 50 year rule. The locality
code has not been implemented yet (and doesn't need to be for a while),
but that is the intent. This will allow us to maintain backwards protocol
compatibility past 2038.
These routines are intended to be platform and time_t agnostic.
Make this compile cleanly when warnings are enabled:
- ANSIfy function declarations
- braces around initializers structs within structs
- add parens in complicated expressions
- disambiguate dangling elses
- no more implicit int
- make functions static where possible
- use prototypes
- don't use varargs hack for diag()
Fix a problem in the disk related hack where device nodes for a physically
non-existent disk in a legacy /dev on a DEVFS system would panic the system
if stat(2)'ed.
Do not whine about anonymous device nodes not having a si_devsw, they're
not supposed to.
Matthew Dillon [Sun, 28 Oct 2001 02:45:04 +0000 (02:45 +0000)]
Various string fields for certain cpio types are 11 rather then 8
characters. Use quad conversion functions rather then long conversion
where appropriate to handle the available range. Mainly fixes time_t
but there was also a st_size ulong conversion in there that has to be
quad or cpio cannot be used to copy files > 2G.
Mike Barcroft [Sat, 27 Oct 2001 20:11:10 +0000 (20:11 +0000)]
Only provide function information in compile environments that support
the C99 variable __func__ and never for C++. Provide a more meaningful
example in the assert(3) manual.
Eliminate the prefix parameter to linux_emul_find(), which was always
linux_emul_path anyway. Linux_emul_find() has interesting bugs in its
prefix handling (which luckily are not currently exploitable); this
commit is preliminary to an attempt at cleaning it up.
Add a P_INEXEC flag that indicates that the process has called execve() and
it has not yet returned. Use this flag to deny debugging requests while
the process is execve()ing, and close once and for all any race conditions
that might occur between execve() and various debugging interfaces.
Robert Watson [Sat, 27 Oct 2001 05:45:42 +0000 (05:45 +0000)]
o Improve style(9) compliance following KSE modifications. In particular,
strip the space from '( struct thread *...', wrap long lines.
o Remove an unneeded comment on the topic of no lock being required as
part of the NDINIT() in __acl_get_file(), as it's really not required
there.
Robert Watson [Sat, 27 Oct 2001 05:39:17 +0000 (05:39 +0000)]
o Althought this is not specified in POSIX.1e, the UFS ACL implementation
coerces the deletion of a default ACL on a directory when no default
ACL EA is present to success. Because the UFS EA implementation doesn't
disinguish the EA failure modes "that EA name has not been
administratively enabled" from "that EA name has no defined data",
there's a potential conflict in error return values. Normally, the
lack of administratively configured EA support is coerced to
EOPNOTSUPP to indicate that ACLs are not available; in this case,
it is possible to get a successful return, even if ACLs are not
available because EA support for them has not been enabled.
Expand the comment in ufs_setacl() to identify this case.
Robert Watson [Sat, 27 Oct 2001 05:19:14 +0000 (05:19 +0000)]
o Clarify a comment about the locking condition of the vnode upon exit
from ufs_extattr_enable_with_open().
o Print auto-start notifications if (bootverbose). This was previously
commented out since it didn't know how to check for bootverbose.
o Drop in comments throughout indicating where ENOENT should be replaced
with ENOATTR once that is available.
Robert Watson [Sat, 27 Oct 2001 05:05:39 +0000 (05:05 +0000)]
o The comment about ordering the destruction of the lock and the removal of
the flag indicating that the structure was initialized didn't need
an XXX, since it didn't need fixing.
Robert Watson [Sat, 27 Oct 2001 04:58:28 +0000 (04:58 +0000)]
Since namespace support was added to the UFS extended attribute
implementation to replace single-character namespace prefixes, '$' is no
longer an invalid attribute name, and the namespace is relevant to
validity determination.
o Remove '$' case from ufs_extattr_valid_attrname()
o Add attrnamespace argument to ufs_extattr_valid_attrname(), and
fill out appropriately.
Currently no decisions are made based on the namespace argument, but
may be in the future.