PERFORCE change 38623 for review
Marcel Moolenaar
marcel at FreeBSD.org
Thu Sep 25 22:30:08 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=38623
Change 38623 by marcel at marcel_nfs on 2003/09/25 22:29:38
IFC @38620
Affected files ...
.. //depot/projects/ia64/UPDATING#53 integrate
.. //depot/projects/ia64/lib/libc/amd64/gen/fabs.S#2 integrate
.. //depot/projects/ia64/lib/libpthread/thread/thr_attr_setcreatesuspend_np.c#3 integrate
.. //depot/projects/ia64/lib/libpthread/thread/thr_sigaction.c#7 integrate
.. //depot/projects/ia64/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml#69 integrate
.. //depot/projects/ia64/share/examples/scsi_target/scsi_cmds.c#3 integrate
.. //depot/projects/ia64/share/examples/scsi_target/scsi_target.c#4 integrate
.. //depot/projects/ia64/share/man/man4/acpi.4#13 integrate
.. //depot/projects/ia64/share/man/man4/wlan.4#3 integrate
.. //depot/projects/ia64/share/man/man9/Makefile#31 integrate
.. //depot/projects/ia64/share/man/man9/pfil.9#4 integrate
.. //depot/projects/ia64/share/man/man9/pmap.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_activate.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_addr_hint.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_change_wiring.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_clear_modify.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_copy.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_enter.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_extract.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_growkernel.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_init.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_is_modified.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_map.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_mincore.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_object_init_pt.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_page_exists_quick.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_page_protect.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_pinit.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_prefault.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_qenter.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_release.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_remove.9#1 branch
.. //depot/projects/ia64/share/man/man9/pmap_zero_page.9#1 branch
.. //depot/projects/ia64/sys/amd64/amd64/pmap.c#25 integrate
.. //depot/projects/ia64/sys/cam/scsi/scsi_targ_bh.c#7 integrate
.. //depot/projects/ia64/sys/conf/NOTES#70 integrate
.. //depot/projects/ia64/sys/dev/acpica/acpi.c#42 integrate
.. //depot/projects/ia64/sys/dev/aic7xxx/aic79xx_pci.c#14 integrate
.. //depot/projects/ia64/sys/dev/aic7xxx/aic7xxx_pci.c#12 integrate
.. //depot/projects/ia64/sys/dev/firewire/fwphyreg.h#1 branch
.. //depot/projects/ia64/sys/dev/puc/puc.c#21 integrate
.. //depot/projects/ia64/sys/dev/puc/pucvar.h#12 integrate
.. //depot/projects/ia64/sys/dev/uart/uart.h#3 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_bus.h#4 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_bus_acpi.c#2 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_bus_ebus.c#2 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_bus_isa.c#2 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_bus_pccard.c#3 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_bus_pci.c#2 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_bus_puc.c#2 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_core.c#5 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_cpu_alpha.c#4 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_cpu_amd64.c#4 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_cpu_i386.c#4 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_cpu_ia64.c#4 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_cpu_pc98.c#5 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_cpu_sparc64.c#5 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_dev_sab82532.c#5 integrate
.. //depot/projects/ia64/sys/dev/uart/uart_dev_z8530.c#5 integrate
.. //depot/projects/ia64/sys/netinet/icmp6.h#6 integrate
.. //depot/projects/ia64/sys/netinet/ip6.h#3 integrate
.. //depot/projects/ia64/sys/netkey/key.c#13 integrate
.. //depot/projects/ia64/sys/netkey/key_debug.c#6 integrate
.. //depot/projects/ia64/sys/netkey/key_debug.h#4 integrate
.. //depot/projects/ia64/sys/netkey/keysock.c#16 integrate
.. //depot/projects/ia64/usr.sbin/asf/asf.8#3 integrate
.. //depot/projects/ia64/usr.sbin/asf/asf.c#2 integrate
.. //depot/projects/ia64/usr.sbin/fwcontrol/fwcontrol.8#9 integrate
.. //depot/projects/ia64/usr.sbin/fwcontrol/fwcontrol.c#12 integrate
Differences ...
==== //depot/projects/ia64/UPDATING#53 (text+ko) ====
@@ -17,6 +17,13 @@
developers choose to disable these features on build machines
to maximize performance.
+20030925:
+ Configuring a system to use IPFILTER now requires that PFIL_HOOKS
+ also be explicitly configured. Previously this dependency was
+ magically handled through some cruft in net/pfil.h; but that has
+ been removed. Building a kernel with IPFILTER but not PFIL_HOOKS
+ will fail with obtuse errors in ip_fil.c.
+
20030923:
Fix a bug in arplookup(), whereby a hostile party on a locally
attached network could exhaust kernel memory, and cause a system
@@ -1368,4 +1375,4 @@
Contact Warner Losh if you have any questions about your use of
this document.
-$FreeBSD: src/UPDATING,v 1.267 2003/09/23 16:39:30 bms Exp $
+$FreeBSD: src/UPDATING,v 1.268 2003/09/25 16:12:12 sam Exp $
==== //depot/projects/ia64/lib/libc/amd64/gen/fabs.S#2 (text+ko) ====
@@ -2,7 +2,7 @@
#if defined(LIBC_SCCS)
RCSID("$NetBSD: fabs.S,v 1.4 1997/07/16 14:37:16 christos Exp $")
#endif
-__FBSDID("$FreeBSD: src/lib/libc/amd64/gen/fabs.S,v 1.1 2003/04/30 16:21:03 obrien Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/amd64/gen/fabs.S,v 1.2 2003/09/26 01:49:48 peter Exp $");
/*
* Ok, this sucks. Is there really no way to push an xmm register onto
@@ -13,6 +13,6 @@
movsd %xmm0, -8(%rsp)
fldl -8(%rsp)
fabs
- fstp -8(%rsp)
+ fstpl -8(%rsp)
movsd -8(%rsp),%xmm0
ret
==== //depot/projects/ia64/lib/libpthread/thread/thr_attr_setcreatesuspend_np.c#3 (text+ko) ====
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/lib/libpthread/thread/thr_attr_setcreatesuspend_np.c,v 1.7 2003/04/18 05:04:15 deischen Exp $
+ * $FreeBSD: src/lib/libpthread/thread/thr_attr_setcreatesuspend_np.c,v 1.8 2003/09/25 13:53:49 davidxu Exp $
*/
#include <errno.h>
#include <pthread.h>
@@ -41,9 +41,9 @@
_pthread_attr_setcreatesuspend_np(pthread_attr_t *attr)
{
int ret;
+
if (attr == NULL || *attr == NULL) {
- errno = EINVAL;
- ret = -1;
+ ret = EINVAL;
} else {
(*attr)->suspend = THR_CREATE_SUSPENDED;
ret = 0;
==== //depot/projects/ia64/lib/libpthread/thread/thr_sigaction.c#7 (text+ko) ====
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/lib/libpthread/thread/thr_sigaction.c,v 1.21 2003/08/18 03:58:29 davidxu Exp $
+ * $FreeBSD: src/lib/libpthread/thread/thr_sigaction.c,v 1.22 2003/09/25 06:23:40 davidxu Exp $
*/
#include <signal.h>
#include <errno.h>
@@ -42,6 +42,7 @@
_sigaction(int sig, const struct sigaction * act, struct sigaction * oact)
{
int ret = 0;
+ int err = 0;
struct sigaction newact, oldact;
struct pthread *curthread;
kse_critical_t crit;
@@ -58,14 +59,8 @@
crit = _kse_critical_enter();
curthread = _get_curthread();
KSE_LOCK_ACQUIRE(curthread->kse, &_thread_signal_lock);
- /*
- * Check if the existing signal action structure contents are
- * to be returned:
- */
- if (oact != NULL) {
- /* Return the existing signal action contents: */
- oldact = _thread_sigact[sig - 1];
- }
+
+ oldact = _thread_sigact[sig - 1];
/* Check if a signal action was supplied: */
if (act != NULL) {
@@ -94,14 +89,27 @@
newact.sa_handler = (void (*) ())_thr_sig_handler;
}
/* Change the signal action in the kernel: */
- if (__sys_sigaction(sig, &newact, NULL) != 0)
+ if (__sys_sigaction(sig, &newact, NULL) != 0) {
+ _thread_sigact[sig - 1] = oldact;
+ /* errno is in kse, will copy it to thread */
+ err = errno;
ret = -1;
+ }
}
KSE_LOCK_RELEASE(curthread->kse, &_thread_signal_lock);
_kse_critical_leave(crit);
-
- if (oact != NULL)
+ /*
+ * Check if the existing signal action structure contents are
+ * to be returned:
+ */
+ if (oact != NULL) {
+ /* Return the existing signal action contents: */
*oact = oldact;
+ }
+ if (ret != 0) {
+ /* Return errno to thread */
+ errno = err;
+ }
}
/* Return the completion status: */
==== //depot/projects/ia64/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml#69 (text+ko) ====
@@ -29,7 +29,7 @@
<sect1 id="support">
<sect1info>
- <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml,v 1.182 2003/09/13 12:51:12 nyan Exp $</pubdate>
+ <pubdate>$FreeBSD: src/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml,v 1.183 2003/09/25 21:15:55 wilko Exp $</pubdate>
</sect1info>
<title>Supported Devices</title>
@@ -371,9 +371,11 @@
are not supported.</para>
<para arch="alpha">Booting from these controllers is not
- supported due to SRM limitations. This list includes
- controllers sold by Digital/Compaq in Alpha systems in the
- StorageWorks family, e.g. KZPSC or KZPAC.</para>
+ supported due to SRM limitations.
+ DAC960 controllers sold by Digital/Compaq for Alpha systems as part
+ of the StorageWorks family, e.g. KZPSC or KZPAC are bootable from SRM.
+ Note that these cards used 2.x firmware. SRM bootability of newer
+ firmware is unknown.</para>
</note>
</para>
==== //depot/projects/ia64/share/examples/scsi_target/scsi_cmds.c#3 (text+ko) ====
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/share/examples/scsi_target/scsi_cmds.c,v 1.2 2003/01/16 00:24:29 njl Exp $
+ * $FreeBSD: src/share/examples/scsi_target/scsi_cmds.c,v 1.3 2003/09/25 05:43:26 simokawa Exp $
*/
#include <stdio.h>
@@ -246,10 +246,8 @@
/* Fill out the supplied CTIO */
if (ctio != NULL) {
- /* No autosense yet
bcopy(sense, &ctio->sense_data, sizeof(*sense));
- ctio->sense_len = sizeof(*sense); XXX
- */
+ ctio->sense_len = sizeof(*sense); /* XXX */
ctio->ccb_h.flags &= ~CAM_DIR_MASK;
ctio->ccb_h.flags |= CAM_DIR_NONE | /* CAM_SEND_SENSE | */
CAM_SEND_STATUS;
@@ -331,7 +329,11 @@
inq = &inq_data;
bzero(inq, sizeof(*inq));
inq->device = T_DIRECT | (SID_QUAL_LU_CONNECTED << 5);
+#ifdef SCSI_REV_SPC
inq->version = SCSI_REV_SPC; /* was 2 */
+#else
+ inq->version = SCSI_REV_3; /* was 2 */
+#endif
/*
* XXX cpi.hba_inquiry doesn't support Addr16 so we give the
==== //depot/projects/ia64/share/examples/scsi_target/scsi_target.c#4 (text+ko) ====
@@ -25,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/share/examples/scsi_target/scsi_target.c,v 1.14 2003/01/16 00:24:29 njl Exp $
+ * $FreeBSD: src/share/examples/scsi_target/scsi_target.c,v 1.15 2003/09/25 05:43:26 simokawa Exp $
*/
#include <sys/types.h>
@@ -45,6 +45,7 @@
#include <sys/queue.h>
#include <sys/event.h>
#include <sys/param.h>
+#include <sys/disk.h>
#include <cam/cam_queue.h>
#include <cam/scsi/scsi_all.h>
#include <cam/scsi/scsi_targetio.h>
@@ -199,7 +200,18 @@
if (fstat(file_fd, &st) < 0)
err(1, "fstat file");
- volume_size = st.st_size / sector_size;
+#if __FreeBSD_version >= 500000
+ if ((st.st_mode & S_IFCHR) != 0) {
+ /* raw device */
+ off_t mediasize;
+ if (ioctl(file_fd, DIOCGMEDIASIZE, &mediasize) < 0)
+ err(1, "DIOCGMEDIASIZE");
+
+ /* XXX get sector size by ioctl()?? */
+ volume_size = mediasize / sector_size;
+ } else
+#endif
+ volume_size = st.st_size / sector_size;
} else {
volume_size = user_size / sector_size;
}
@@ -582,6 +594,8 @@
c_descr->offset = a_descr->base_off + a_descr->targ_req;
else if ((a_descr->flags & CAM_DIR_MASK) == CAM_DIR_OUT)
c_descr->offset = a_descr->base_off + a_descr->init_req;
+ else
+ c_descr->offset = a_descr->base_off;
/*
* Return a check condition if there was an error while
@@ -684,6 +698,14 @@
ctio = (struct ccb_scsiio *)ccb_h;
c_descr = (struct ctio_descr *)ctio->ccb_h.targ_descr;
+ if (ctio->ccb_h.status == CAM_REQ_ABORTED) {
+ TAILQ_REMOVE(&a_descr->cmplt_io, ccb_h,
+ periph_links.tqe);
+ free_ccb((union ccb *)ctio);
+ send_ccb((union ccb *)atio, /*priority*/1);
+ continue;
+ }
+
/* If completed item is in range, call handler */
if ((c_descr->event == AIO_DONE &&
c_descr->offset == a_descr->base_off + a_descr->targ_ack)
==== //depot/projects/ia64/share/man/man4/acpi.4#13 (text+ko) ====
@@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/share/man/man4/acpi.4,v 1.14 2003/08/07 04:46:53 njl Exp $
+.\" $FreeBSD: src/share/man/man4/acpi.4,v 1.15 2003/09/26 04:32:40 njl Exp $
.\"
.Dd July 2, 2001
.Dt ACPI 4
@@ -88,10 +88,14 @@
.It
.Li ACPI_RESOURCES
.It
-.Li ACPI_DEBUGGER
+.Li ACPI_CA_DEBUGGER
.It
.Li ACPI_OS_SERVICES
.It
+.Li ACPI_CA_DISASSEMBLER
+.It
+.Li ACPI_ALL_COMPONENTS
+.It
.Li ACPI_BUS
.It
.Li ACPI_SYSTEM
@@ -112,35 +116,33 @@
.It
.Li ACPI_FAN
.It
-.Li ACPI_ALL_COMPONENTS
+.Li ACPI_ALL_DRIVERS
.El
.Pp
The supported levels are:
.Pp
.Bl -item -offset indent -compact
.It
-.Li ACPI_LV_OK
+.Li ACPI_LV_ERROR
.It
-.Li ACPI_LV_INFO
-.It
.Li ACPI_LV_WARN
.It
-.Li ACPI_LV_ERROR
+.Li ACPI_LV_INIT
.It
-.Li ACPI_LV_FATAL
+.Li ACPI_LV_DEBUG_OBJECT
.It
-.Li ACPI_LV_DEBUG_OBJECT
+.Li ACPI_LV_INFO
.It
.Li ACPI_LV_ALL_EXCEPTIONS
.It
-.Li ACPI_LV_THREADS
+.Li ACPI_LV_INIT_NAMES
.It
.Li ACPI_LV_PARSE
.It
+.Li ACPI_LV_LOAD
+.It
.Li ACPI_LV_DISPATCH
.It
-.Li ACPI_LV_LOAD
-.It
.Li ACPI_LV_EXEC
.It
.Li ACPI_LV_NAMES
@@ -149,43 +151,49 @@
.It
.Li ACPI_LV_BFIELD
.It
-.Li ACPI_LV_TRASH
-.It
.Li ACPI_LV_TABLES
.It
-.Li ACPI_LV_FUNCTIONS
-.It
.Li ACPI_LV_VALUES
.It
.Li ACPI_LV_OBJECTS
.It
+.Li ACPI_LV_RESOURCES
+.It
+.Li ACPI_LV_USER_REQUESTS
+.It
+.Li ACPI_LV_PACKAGE
+.It
+.Li ACPI_LV_VERBOSITY1
+.It
.Li ACPI_LV_ALLOCATIONS
.It
-.Li ACPI_LV_RESOURCES
+.Li ACPI_LV_FUNCTIONS
+.It
+.Li ACPI_LV_OPTIMIZATIONS
.It
-.Li ACPI_LV_IO
+.Li ACPI_LV_VERBOSITY2
.It
-.Li ACPI_LV_INTERRUPTS
+.Li ACPI_LV_ALL
.It
-.Li ACPI_LV_USER_REQUESTS
+.Li ACPI_LV_MUTEX
.It
-.Li ACPI_LV_PACKAGE
+.Li ACPI_LV_THREADS
.It
-.Li ACPI_LV_MUTEX
+.Li ACPI_LV_IO
.It
-.Li ACPI_LV_INIT
+.Li ACPI_LV_INTERRUPTS
.It
-.Li ACPI_LV_ALL
+.Li ACPI_LV_VERBOSITY3
.It
-.Li ACPI_DB_AML_DISASSEMBLE
+.Li ACPI_LV_AML_DISASSEMBLE
.It
-.Li ACPI_DB_VERBOSE_INFO
+.Li ACPI_LV_VERBOSE_INFO
.It
-.Li ACPI_DB_FULL_TABLES
+.Li ACPI_LV_FULL_TABLES
.It
-.Li ACPI_DB_EVENTS
+.Li ACPI_LV_EVENTS
.It
-.Li ACPI_DB_VERBOSE
+.Li ACPI_LV_VERBOSE
.El
.Pp
Selection of the appropriate layer and level values is important
@@ -290,9 +298,7 @@
.Xr acpidump 8
and
.Xr iasl 1
-utilities from the
-.Pa devel/acpicatools
-port, and some ACPI knowledge.
+utilities and some ACPI knowledge.
.Sh TUNABLES
.Bl -tag -width indent
.It Va acpi_dsdt_load
@@ -328,7 +334,8 @@
.Xr loader.conf 5 ,
.Xr acpiconf 8 ,
.Xr acpidump 8 ,
-.Xr config 8
+.Xr config 8 ,
+.Xr iasl 8
.Rs
.%A "Compaq Computer Corporation"
.%A "Intel Corporation"
==== //depot/projects/ia64/share/man/man4/wlan.4#3 (text+ko) ====
@@ -23,9 +23,9 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/share/man/man4/wlan.4,v 1.2 2003/07/18 11:40:41 hmp Exp $
+.\" $FreeBSD: src/share/man/man4/wlan.4,v 1.3 2003/09/25 23:56:20 sam Exp $
.\"
-.Dd March 25, 2003
+.Dd September 25, 2003
.Dt WLAN 4
.Os
.Sh NAME
@@ -44,6 +44,29 @@
and
.Xr ath 4
drivers but will eventually be required by all 802.11 drivers.
+.Pp
+If the associated interface is marked for debugging with, for example,
+.Bd -literal -offset indent
+ifconfig wi0 debug
+.Ed
+.Pp
+then messages describing the operation of the 802.11 protocol will
+be sent to the console.
+With the interface marked for debugging, doing:
+.Bd -literal -offset indent
+sysctl debug.ieee80211=1
+.Ed
+.Pp
+causes additional messages to be generated.
+Many drivers will also display the contents of each 802.11 frame
+sent and received when the interface is marked with
+both debugging and ``link2''; e.g.
+.Bd -literal -offset indent
+ifconfig wi0 debug link2
+.Ed
+.Pp
+Beware however that some management frames may be processed entirely within
+the device and not be received by the host.
.Sh COMPATIBILITY
The module name of
.Nm
@@ -63,10 +86,13 @@
driver first appeared in
.Fx 5.0 .
.Sh AUTHORS
-Support for generic 802.11 devices was adapted from
+Atsushi Onoe is the original author of this software.
+The
.Nx
+support was adapted to
+.Fx
by
.An -nosplit
-.An Sam Leffler Aq sam at FreeBSD.org .
+.An Sam Leffler .
This manual page was written by
.An Tom Rhodes Aq trhodes at FreeBSD.org .
==== //depot/projects/ia64/share/man/man9/Makefile#31 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/share/man/man9/Makefile,v 1.200 2003/09/24 05:18:41 marcel Exp $
+# $FreeBSD: src/share/man/man9/Makefile,v 1.202 2003/09/25 23:44:15 bms Exp $
MAN= BUF_LOCK.9 BUF_LOCKFREE.9 BUF_LOCKINIT.9 BUF_REFCNT.9 \
BUF_TIMELOCK.9 BUF_UNLOCK.9 BUS_CONFIG_INTR.9 BUS_PRINT_CHILD.9 \
@@ -59,6 +59,12 @@
namei.9 \
panic.9 pbuf.9 pci.9 pfil.9 pfind.9 pgfind.9 \
physio.9 printf.9 pseudofs.9 psignal.9 \
+ pmap.9 pmap_activate.9 pmap_addr_hint.9 pmap_change_wiring.9 \
+ pmap_clear_modify.9 pmap_copy.9 pmap_enter.9 pmap_extract.9 \
+ pmap_growkernel.9 pmap_init.9 pmap_is_modified.9 pmap_map.9 \
+ pmap_mincore.9 pmap_object_init_pt.9 pmap_page_exists_quick.9 \
+ pmap_page_protect.9 pmap_pinit.9 pmap_prefault.9 pmap_qenter.9 \
+ pmap_release.9 pmap_remove.9 pmap_zero_page.9 \
random.9 resettodr.9 resource_int_value.9 resource_query_string.9 \
rtalloc.9 rtentry.9 runqueue.9 random_harvest.9 rijndael.9 \
rman.9 \
@@ -203,6 +209,19 @@
MLINKS+=pci.9 pci_find_bsf.9 pci.9 pci_find_device.9
MLINKS+=pfil.9 pfil_hook_get.9 pfil.9 pfil_add_hook.9 pfil.9 pfil_remove_hook.9
MLINKS+=pfind.9 zpfind.9
+MLINKS+=pmap_clear_modify.9 pmap_clear_reference.9
+MLINKS+=pmap_copy.9 pmap_copy_page.9
+MLINKS+=pmap_extract.9 pmap_extract_and_hold.9
+MLINKS+=pmap_init.9 pmap_init2.9
+MLINKS+=pmap_is_modified.9 pmap_ts_modified.9
+MLINKS+=pmap_page_protect.9 pmap_protect.9
+MLINKS+=pmap_pinit.9 pmap_pinit0.9
+MLINKS+=pmap_pinit.9 pmap_pinit2.9
+MLINKS+=pmap_qenter.9 pmap_qremove.9
+MLINKS+=pmap_remove.9 pmap_remove_all.9
+MLINKS+=pmap_remove.9 pmap_remove_pages.9
+MLINKS+=pmap_zero_page.9 pmap_zero_idle.9
+MLINKS+=pmap_zero_page.9 pmap_zero_area.9
MLINKS+=psignal.9 gsignal.9 psignal.9 pgsignal.9
MLINKS+=random.9 srandom.9 random.9 arc4random.9 random.9 read_random.9
MLINKS+=random.9 arc4rand.9
==== //depot/projects/ia64/share/man/man9/pfil.9#4 (text+ko) ====
@@ -1,3 +1,5 @@
+.\" $NetBSD: pfil.9,v 1.22 2003/07/01 13:04:06 wiz Exp $
+.\"
.\" Copyright (c) 1996 Matthew R. Green
.\" All rights reserved.
.\"
@@ -24,106 +26,110 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/share/man/man9/pfil.9,v 1.11 2003/09/08 19:57:21 ru Exp $
-.Dd August 4, 1996
+.\" $FreeBSD: src/share/man/man9/pfil.9,v 1.12 2003/09/25 20:49:28 sam Exp $
+.Dd September 8, 2003
.Dt PFIL 9
.Os
.Sh NAME
.Nm pfil ,
+.Nm pfil_head_register ,
+.Nm pfil_head_unregister ,
+.Nm pfil_head_get ,
.Nm pfil_hook_get ,
.Nm pfil_add_hook ,
-.Nm pfil_remove_hook
+.Nm pfil_remove_hook ,
+.Nm pfil_run_hooks
.Nd packet filter interface
.Sh SYNOPSIS
.In sys/param.h
.In sys/mbuf.h
-.In sys/socket.h
.In net/if.h
.In net/pfil.h
-.Ft "struct packet_filter_hook *"
-.Fn pfil_hook_get "int flag" "struct pfil_head *ph"
+.Ft int
+.Fn pfil_head_register "struct pfil_head *head"
+.Ft int
+.Fn pfil_head_unregister "struct pfil_head *head"
+.Ft struct pfil_head *
+.Fn pfil_head_get "int af" "u_long dlt"
+.Ft struct packet_filter_hook *
+.Fn pfil_hook_get "int dir" "struct pfil_head *head"
+.Ft void
+.Fn pfil_add_hook "int (*func)()" "void *arg" "int flags" "struct pfil_head *"
+.Ft void
+.Fn pfil_remove_hook "int (*func)()" "void *arg" "int flags" "struct pfil_head *"
.Ft int
-.Fo pfil_add_hook
-.Fa "int \*[lp]*func\*[rp]\*[lp]void *, int, struct ifnet *, int, struct mbuf **\*[rp]"
-.Fa "int flags"
-.Fa "struct pfil_head *ph"
-.Fc
+.Fn (*func) "void *arg" "struct mbuf **mp" "struct ifnet *" "int dir"
.Ft int
-.Fo pfil_remove_hook
-.Fa "int \*[lp]*func\*[rp]\*[lp]void *, int, struct ifnet *, int, struct mbuf **\*[rp]"
-.Fa "int flags"
-.Fa "struct pfil_head *ph"
-.Fc
+.Fn pfil_run_hooks "struct pfil_head *head" "struct mbuf **mp" "struct ifnet *" "int dir"
.Sh DESCRIPTION
The
.Nm
-interface allows a function to be called on every incoming or outgoing
-packets.
-The hooks for these are embedded in the
-.Fn ip_input
-and
-.Fn ip_output
-routines.
-The
-.Fn pfil_hook_get
-function returns the first member of a particular hook, either the in or out
-list.
-The
+framework allows for a specified function to be invoked for every
+incoming or outgoing packet for a particular network I/O stream.
+These hooks may be used to implement a firewall or perform packet
+transformations.
+.Pp
+Packet filtering points are registered with
+.Fn pfil_head_register .
+Filtering points are identified by a key (void *) and a data link type
+(int) in the
+.Em pfil_head
+structure.
+Packet filters use the key and data link type to look up the filtering
+point with which they register themselves.
+The key is unique to the filtering point.
+The data link type is a
+.Xr bpf 4
+DLT constant indicating what kind of header is present on the packet
+at the filtering point.
+Filtering points may be unregistered with the
+.Fn pfil_head_unregister
+function.
+.Pp
+Packet filters register/unregister themselves with a filtering point
+with the
.Fn pfil_add_hook
-function takes a function of the form below as its first argument, and the
-flags for which lists to add the function to.
-The possible values for these
-flags are some combination of
-.Dv PFIL_IN
and
-.Dv PFIL_OUT .
-The
.Fn pfil_remove_hook
-removes a hook from the specified lists.
+functions, respectively.
+The head is looked up using the
+.Fn pfil_head_get
+function, which takes the key and data link type that the packet filter
+expects.
+Filters may provide an argument to be passed to the filter when
+invoked on a packet.
.Pp
-The
-.Fa func
-argument is a function with the following prototype.
-.Pp
-.Ft int
-.Fn func "void *data" "int hlen" "struct ifnet *net" "int dir" "struct mbuf **m"
-.Pp
-The
-.Fa data
-describes the packet.
-Currently, this may only be a pointer to an
-.Vt ip
-structure.
-The
-.Fa net
-and
-.Fa m
-arguments describe the network interface and the mbuf holding data for this
-packet.
-The
-.Fa dir
-is the direction; 0 for incoming packets and 1 for outgoing packets.
-If the function
-returns non-zero, this signals an error and no further processing of this packet is
-performed.
-The function should set
-.Va errno
-to indicate the nature of the error.
-It is the hook's responsibility to free the chain if the packet is being dropped.
+When a filter is invoked, the packet appears just as if it
+.Dq came off the wire .
+That is, all protocol fields are in network byte order.
+The filter is called with its specified argument, the pointer to the
+pointer to the mbuf containing the packet, the pointer to the network
+interface that the packet is traversing, and the direction (PFIL_IN
+or PFIL_OUT) that the packet is traveling.
+The filter may change which mbuf the mbuf ** argument references.
+The filter returns an errno if the packet processing is to stop, or 0
+if the processing is to continue.
+If the packet processing is to stop, it is the responsibility of the
+filter to free the packet.
.Pp
The
.Nm
interface is enabled in the kernel via the
-.Cd PFIL_HOOKS
+.Sy PFIL_HOOKS
option.
.Sh RETURN VALUES
If successful,
-.Fn pfil_hook_get
-returns the first member of the packet filter list,
-.Fn pfil_add_hook
+.Fn pfil_head_get
+returns the pfil_head structure for the given key/dlt.
+.Fn pfil_add_hook
and
.Fn pfil_remove_hook
-are expected to always succeed.
+return 0 if successful. If called with flag PFIL_WAITOK,
+.Fn pfil_remove_hook
+is expected to always succeed.
+.Pp
+.Fn pfil_head_unregister
+might sleep!
.Sh HISTORY
The
.Nm
@@ -132,7 +138,7 @@
The
.Nm
input and output lists were originally implemented as
-.In sys/queue.h
+.Fd \*[Lt]sys/queue.h\*[Gt]
.Dv LIST
structures;
however this was changed in
@@ -140,9 +146,8 @@
to
.Dv TAILQ
structures.
-This change was to allow the input and output filters to be
-processed in reverse order, to allow the same path to be taken, in or out
-of the kernel.
+This change was to allow the input and output filters to be processed in
+reverse order, to allow the same path to be taken, in or out of the kernel.
.Pp
The
.Nm
@@ -151,11 +156,31 @@
and
.Fn pfil_remove_hook ,
introducing the capability of per-protocol filtering.
-This was done
-primarily in order to support filtering of IPv6.
+This was done primarily in order to support filtering of IPv6.
+.Pp
+In 1.5K, the
+.Nm
+framework was changed to work with an arbitrary number of filtering points,
+as well as be less IP-centric.
+.Pp
+Fine-grained locking was adding in FreeBSD 5.2.
.Sh BUGS
-The current
-.Nm
-implementation will need changes to suit a threaded kernel model.
+.Fn pfil_hook_get
+is only safe for internal use.
+.Pp
+FreeBSD implements only hooks for AF_INET and AF_INET6.
+Packets diverted through these hooks have data in
+host byte order contrary to the above statements.
+.Pp
+The
+.Xr bridge 4
+diverts inbound AF_INET traffic, but contrary to the above
+statements, the data is provided in host byte order.
+.Pp
+When a pfil_head is being modified no traffic is diverted
+(to avoid deadlock).
+This means that unwanted traffic may flow for a short period
+of time.
.Sh SEE ALSO
-.Xr bpf 4
+.Xr bpf 4 ,
+.Xr bridge 4
==== //depot/projects/ia64/sys/amd64/amd64/pmap.c#25 (text+ko) ====
@@ -73,7 +73,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.437 2003/09/13 21:57:38 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.439 2003/09/26 04:12:41 alc Exp $");
/*
* Manages physical address maps.
@@ -1012,6 +1012,7 @@
register struct pmap *pmap;
{
vm_page_t pml4pg;
+ static vm_pindex_t color;
/*
* allocate object for the ptes
@@ -1022,14 +1023,13 @@
/*
* allocate the page directory page
*/
- VM_OBJECT_LOCK(pmap->pm_pteobj);
- pml4pg = vm_page_grab(pmap->pm_pteobj, NUPDE + NUPDPE + NUPML4E,
- VM_ALLOC_NORMAL | VM_ALLOC_RETRY | VM_ALLOC_WIRED | VM_ALLOC_ZERO);
+ while ((pml4pg = vm_page_alloc(NULL, color++, VM_ALLOC_NOOBJ |
+ VM_ALLOC_NORMAL | VM_ALLOC_WIRED | VM_ALLOC_ZERO)) == NULL)
+ VM_WAIT;
vm_page_lock_queues();
vm_page_flag_clear(pml4pg, PG_BUSY);
pml4pg->valid = VM_PAGE_BITS_ALL;
vm_page_unlock_queues();
- VM_OBJECT_UNLOCK(pmap->pm_pteobj);
pmap->pm_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(VM_PAGE_TO_PHYS(pml4pg));
@@ -1241,14 +1241,8 @@
void
pmap_release(pmap_t pmap)
{
- vm_object_t object;
vm_page_t m;
- object = pmap->pm_pteobj;
-
- KASSERT(object->ref_count == 1,
- ("pmap_release: pteobj reference count %d != 1",
- object->ref_count));
KASSERT(pmap->pm_stats.resident_count == 0,
("pmap_release: pmap resident count %ld != 0",
pmap->pm_stats.resident_count));
@@ -1258,15 +1252,14 @@
mtx_unlock_spin(&allpmaps_lock);
vm_page_lock_queues();
- while ((m = TAILQ_FIRST(&object->memq)) != NULL) {
- m->wire_count--;
- atomic_subtract_int(&cnt.v_wire_count, 1);
- vm_page_busy(m);
- vm_page_free(m);
- }
- KASSERT(TAILQ_EMPTY(&object->memq),
+ m = PHYS_TO_VM_PAGE(pmap->pm_pml4[PML4PML4I]);
+ m->wire_count--;
+ atomic_subtract_int(&cnt.v_wire_count, 1);
+ vm_page_busy(m);
+ vm_page_free(m);
+ vm_page_unlock_queues();
+ KASSERT(TAILQ_EMPTY(&pmap->pm_pteobj->memq),
("pmap_release: leaking page table pages"));
- vm_page_unlock_queues();
}
static int
==== //depot/projects/ia64/sys/cam/scsi/scsi_targ_bh.c#7 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_targ_bh.c,v 1.18 2003/06/10 18:14:05 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_targ_bh.c,v 1.19 2003/09/25 05:02:19 simokawa Exp $");
#include <sys/param.h>
#include <sys/queue.h>
@@ -167,7 +167,7 @@
xpt_setup_ccb(&csa.ccb_h, path, /*priority*/5);
csa.ccb_h.func_code = XPT_SASYNC_CB;
- csa.event_enable = AC_PATH_REGISTERED;
+ csa.event_enable = AC_PATH_REGISTERED | AC_PATH_DEREGISTERED;
csa.callback = targbhasync;
csa.callback_arg = NULL;
xpt_action((union ccb *)&csa);
@@ -185,15 +185,26 @@
targbhasync(void *callback_arg, u_int32_t code,
struct cam_path *path, void *arg)
{
- struct cam_periph *periph;
+ struct cam_path *new_path;
+ cam_status status;
+
+ /*
+ * Allocate a peripheral instance for
+ * this target instance.
+ */
+ status = xpt_create_path(&new_path, NULL,
+ xpt_path_path_id(path),
+ CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD);
+ if (status != CAM_REQ_CMP) {
+ printf("targbhasync: Unable to create path "
+ "due to status 0x%x\n", status);
+ return;
+ }
- periph = (struct cam_periph *)callback_arg;
switch (code) {
case AC_PATH_REGISTERED:
{
struct ccb_pathinq *cpi;
- struct cam_path *new_path;
- cam_status status;
cpi = (struct ccb_pathinq *)arg;
@@ -201,35 +212,23 @@
if ((cpi->target_sprt & PIT_PROCESSOR) == 0)
break;
- /*
- * Allocate a peripheral instance for
- * this target instance.
- */
- status = xpt_create_path(&new_path, NULL,
- xpt_path_path_id(path),
- CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD);
- if (status != CAM_REQ_CMP) {
- printf("targbhasync: Unable to create path "
- "due to status 0x%x\n", status);
- break;
- }
status = cam_periph_alloc(targbhctor, NULL, targbhdtor,
targbhstart,
"targbh", CAM_PERIPH_BIO,
new_path, targbhasync,
AC_PATH_REGISTERED,
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list