Hajimu UMEMOTO [Fri, 20 Feb 2004 17:59:33 +0000 (17:59 +0000)]
add destination address selection support for getipnodebyname(3).
though getipnodebyname(3) is obsoleted api, some major applications
such as Mozilla are still using it. so, it will help ipv4 users.
Brian Feldman [Fri, 20 Feb 2004 16:54:01 +0000 (16:54 +0000)]
Add my getaddrinfo(3) stress-tester as gaithrstress. The most obvious
regressions would be to see the program or your kernel crashing.
If you want to give it something to really test out, try a much more
reentrant version of the resolver.
<URL:http://green.homeunix.org/~green/reentrant_resolver.patch>
Any Mozilla-based browser would show you a clear difference.
Tony Finch [Fri, 20 Feb 2004 11:55:38 +0000 (11:55 +0000)]
Add some missing punctuation symbols, in particular @ which (according to
a recent Press Association release) was added to Morse code by the ITU in
December. @ was previously used for the SK prosign, which is now spelt &.
Backout previous change, it breaks build and it is not needed
layering violation. As pointed out, there is much better way to do this.
Sorry guys, I need to find a better way to force reviews.
Requested by: harti, julian, scottl (mentor)
Pointy hat to: pjd
Brian Feldman [Fri, 20 Feb 2004 04:00:48 +0000 (04:00 +0000)]
Make sure to wake up any select waiters when closing a kqueue (also, not
crash). I am fairly sure that only people with SMP and multi-threaded
apps using kqueue will be affected by this, so I have a stress-testing
program on my web site:
<URL:http://green.homeunix.org/~green/getaddrinfo-pthreads-stresstest.c>
John Baldwin [Thu, 19 Feb 2004 22:03:52 +0000 (22:03 +0000)]
Tidy up the thread taskqueue implementation and close a lost wakeup race.
Instead of creating a mutex that we msleep on but don't actually lock when
doing the corresponding wakeup(), in the kthread, lock the mutex associated
with our taskqueue and msleep while the queue is empty. Assert that the
queue is locked when the callback function is called to wake the kthread.
Improvements on the 'make realclean' target. Some are style improvements,
but the biggest issue is that there are situatons when
${.OBJDIR} == ${.SRCDIR}, and in those situations the previous version
would happily remove all your /usr/src while it was cleaning out the objects.
Not that *you* would be happy about it... Thanks to bde for immediately
noticing this serious possibility.
More improvements will be made to this target, but I wanted to commit this
safer version right now, before anyone lost their /usr/src due to it.
Nate Lawson [Thu, 19 Feb 2004 18:16:34 +0000 (18:16 +0000)]
Do not remove the fixed handlers. Several systems (e.g., ASUS) only
return events on the fixed handler even after defining a duplicate in the
AML. While this violates the spec, hopefully we can get by with leaving
both installed.
Add new failure detection algorithm.
It works as follows:
In every 'interval' seconds defined links are checked.
If they are non-active they will not be used by to data transfer.
No response from: julian, archie
Silent on: net@
Approved by: scottl (mentor)
Hajimu UMEMOTO [Thu, 19 Feb 2004 14:57:22 +0000 (14:57 +0000)]
- call ip6_output() instead of nd6_output() when ipsec tunnel
mode is applied, since tunneled packets are considered to be
generated packets from a tunnel encapsulating node.
- tunnel mode may not be applied if SA mode is ANY and policy
does not say "tunnel it". check if we have extra IPv6 header
on the packet after ipsec6_output_tunnel() and call ip6_output()
only if additional IPv6 header is added.
- free the copyed packet before returning.
Added sysctl security.jail.jailed.
It returns 1 is process is inside of jail and 0 if it is not.
Information if we are in jail or not is not a secret, there is plenty of
ways to discover it. Many people are using own hack to check this and
this will be a legal way from now on.
It will be great if our starting scripts will take advantage of this sysctl
to allow clean "boot" inside jail.
Mike Makonnen [Thu, 19 Feb 2004 13:47:12 +0000 (13:47 +0000)]
Don't wake up the thread after the signal handler
has been executed. On return from the signal handler
the call will either be restarted or EINTR will be returned,
but it will not go back to its previous state. So, it is
sufficient to simply change the state to 'running' without
actually trying to wake up the thread.
Bruce M Simpson [Thu, 19 Feb 2004 12:38:12 +0000 (12:38 +0000)]
Add BSD compatibility tty ioctls LINUX_TIOCSBRK and LINUX_TIOCCBRK. This
addition appears to allow VMware 3 Workstation to operate with nmdm(4)
as a virtual COM device.
Tim J. Robbins [Thu, 19 Feb 2004 09:56:58 +0000 (09:56 +0000)]
Use size_t or ssize_t wherever appropriate instead of casting from int *
to size_t *, which is incorrect because they may have different widths.
This caused some subtle forms of corruption, the mostly frequently
reported one being that the last character of a filename was sometimes
duplicated on amd64.
Alan Cox [Thu, 19 Feb 2004 07:43:55 +0000 (07:43 +0000)]
- Correct a long-standing race condition in vm_page_try_to_free() that
could result in a dirty page being unintentionally freed.
- Simplify the dirty page check in vm_page_dontneed().
Nate Lawson [Thu, 19 Feb 2004 05:35:20 +0000 (05:35 +0000)]
Fix problem caused by previous commit where some users' buttons
stopped returning events. Don't disable the event when removing
the handler because it still needs to be enabled for the other
handler. Also, remove duplicate AcpiEnableEvent calls since the
install function now does this for us.
John Baldwin [Wed, 18 Feb 2004 22:41:53 +0000 (22:41 +0000)]
Switch to using the new $PIR interrupt routing code and remove the old
code. The pci_cfgreg.c file now just controls reading/writing PCI config
registers.
John Baldwin [Wed, 18 Feb 2004 22:40:23 +0000 (22:40 +0000)]
Rework the $PIR (aka PCIBIOS) PCI interrupt routing code and split it off
into its own file:
- All of the $PIR interrupt routing is now done in a link-centric fashion.
When a host-PCI bridge that uses the $PIR attaches, it calls pir_parse()
to parse the table. This scans for link devices and merges all the masks
for each link device from the table entries. It then looks at the intline
register of PCI devices connected to a link to figure out if the BIOS has
routed this link and if so to which IRQ.
- The IRQ for any given link can be overridden via a hint like so:
'hw.pci.link.0x62.irq=10' Any IRQ set in this matter is treated as if it
were set that way by the BIOS.
- We only call the BIOS to route each link device once.
- When a PCI device wants to route an interrupt, we look it up in the $PIR
to find the associated link. If the link is routed, we simply return the
IRQ it is using. If it is not routed, we have to pick one. This uses a
different algorithm from the old code. First off, when we try to pick
an interrupt from a mask of possible interrupts, we try to pick the one
that is least loaded as far as PCI devices. We maintain this weight based
on the number of devices attached to each link device. When choosing an
IRQ, we first attempt to route using any PCI only interrupts (the old
code did this as well). If that doesn't work, we try to use the list of
IRQs that the BIOS has used. This is a new step that the new code didn't
do and avoids using IRQ 3 or 4 for every virgin interrupt routing. If
none of the IRQs that the BIOS used worked, then we fall back to trying
anything.
- The fallback mask for !PC98 was fixed to include IRQ 3 and not allow IRQ
2.
- We don't use the $PIR to route interrupts on a PCI-PCI bridge unless it
has already been used to route on at least one Host-PCI bridge. This
helps to avoid mixing and matching x86 firmware PCI interrupt routing
methods (which is a Bad Thing(tm)).
Fix printf() format bug in previous commit (size_t != int).
Use %ju and an (uintmax_t) cast to print size_t values.
Use %jd and an (intmax_t) cast to print off_t values.
Use off_t variables to hold the difference between two off_t values.
Don't bother with unsigned char where char will do nicely.
Change the disk(9) API in order to make device removal more robust.
Previously the "struct disk" were owned by the device driver and this
gave us problems when the device disappared and the users of that device
were not immediately disappearing.
Now the struct disk is allocate with a new call, disk_alloc() and owned
by geom_disk and just abandonned by the device driver when disk_create()
is called.
Unfortunately, this results in a ton of "s/\./->/" changes to device
drivers.
Since I'm doing the sweep anyway, a couple of other API improvements
have been carried out at the same time:
The Giant awareness flag has been flipped from DISKFLAG_NOGIANT to
DISKFLAG_NEEDSGIANT
A version number have been added to disk_create() so that we can detect,
report and ignore binary drivers with old ABI in the future.
Mike Makonnen [Wed, 18 Feb 2004 15:30:10 +0000 (15:30 +0000)]
There are consumers of rwlocks, inluding our own libc, that depend on
a PTHREAD_RWLOCK_INITIALIZER to do for rwlocks what
a similarly named symbol does for statically initialized mutexes.
This symbol was dropped in The Open Group Base Specifications Issue 6
and does not exist in IEEE Std 1003.1, 2003, but it should still be
supported for backwards compatibility.
Mike Makonnen [Wed, 18 Feb 2004 15:26:00 +0000 (15:26 +0000)]
o Catch up with the mutex priority protocol fixes.
o Move pthread_getschedparam() into the same file with it's
pthread_set* counterpart. Copyright on both files is identical.
Mike Makonnen [Wed, 18 Feb 2004 15:22:52 +0000 (15:22 +0000)]
o Style
o Instead of checking both the passed in pointer and its value
for NULL, only check the latter. Any caller that passes in
a NULL pointer is obviously wrong.
Mike Makonnen [Wed, 18 Feb 2004 15:16:31 +0000 (15:16 +0000)]
o Refactor and, among other things, get rid of insane nesting levels.
o Fix mutex priority protocols. Keep separate counts of priority
inheritance and protection mutexes to make things easier.
This will not have much affect since this is only the
userland side, and the rest involves kernel scheduling.
Revamp the statistics code, and switch to a much more compact display
format. The old code tried to produce the exact same output as the
pre-libfetch implementation, but I no longer see any value in this.
Tim J. Robbins [Wed, 18 Feb 2004 14:08:25 +0000 (14:08 +0000)]
Add partial support for large (>4GB) files on ext2 filesystems. This
support is partial in that it will refuse to create large files on
filesystems that haven't been upgraded to EXT2_DYN_REV or that don't
have the EXT2_FEATURE_RO_COMPAT_LARGE_FILE flag set in the superblock.
Maxim Konovalov [Wed, 18 Feb 2004 08:30:08 +0000 (08:30 +0000)]
o Fix a bridge example: sysctl net.inet.ip.forwarding=1 is needless,
bridge(4) is working on a level below. Suggest
sysctl net.inet.ip.check_interface=0 instead.
Colin Percival [Wed, 18 Feb 2004 05:18:27 +0000 (05:18 +0000)]
Fix misspellings in the freebsd-tips fortunes. The same PR has
a patch to mention portupgrade in freebsd-tips as well; I'm not
sure if that belongs here, so I'll leave it for someone else.
Peter Wemm [Wed, 18 Feb 2004 00:54:17 +0000 (00:54 +0000)]
Checkpoint a hack to enable running i386 libc_r binaries on a 64 bit
kernel. I'm not happy with it yet - refinements are to come.
This hack allows the kern.ps_strings and kern.usrstack sysctls to respond
to a 32 bit request, such as those coming from emulated i386 binaries.