PERFORCE change 139710 for review
Sam Leffler
sam at FreeBSD.org
Thu Apr 10 05:36:15 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=139710
Change 139710 by sam at sam_ebb on 2008/04/10 05:35:31
IFC @ 139709
Affected files ...
.. //depot/projects/vap/etc/rc.d/ppp#6 integrate
.. //depot/projects/vap/include/string.h#3 integrate
.. //depot/projects/vap/lib/libc/string/Makefile.inc#3 integrate
.. //depot/projects/vap/lib/libc/string/Symbol.map#3 integrate
.. //depot/projects/vap/lib/libc/string/memchr.3#3 integrate
.. //depot/projects/vap/lib/libc/string/memrchr.c#1 branch
.. //depot/projects/vap/share/man/man5/rc.conf.5#8 integrate
.. //depot/projects/vap/share/mk/bsd.lib.mk#3 integrate
.. //depot/projects/vap/sys/dev/nfe/if_nfe.c#6 integrate
.. //depot/projects/vap/sys/dev/nfe/if_nfereg.h#4 integrate
.. //depot/projects/vap/sys/dev/ral/rt2661.c#24 integrate
.. //depot/projects/vap/sys/dev/usb/ubsa.c#7 integrate
.. //depot/projects/vap/sys/dev/usb/usbdevs#13 integrate
.. //depot/projects/vap/sys/kern/subr_firmware.c#6 integrate
.. //depot/projects/vap/sys/kern/vfs_cache.c#10 integrate
.. //depot/projects/vap/sys/netgraph/ng_base.c#16 integrate
.. //depot/projects/vap/sys/pci/if_rl.c#7 integrate
.. //depot/projects/vap/sys/powerpc/include/atomic.h#9 integrate
.. //depot/projects/vap/sys/sparc64/include/intr_machdep.h#5 integrate
.. //depot/projects/vap/sys/sparc64/include/smp.h#6 integrate
.. //depot/projects/vap/sys/sparc64/sparc64/intr_machdep.c#8 integrate
.. //depot/projects/vap/sys/sparc64/sparc64/mp_machdep.c#7 integrate
.. //depot/projects/vap/sys/sys/param.h#17 integrate
Differences ...
==== //depot/projects/vap/etc/rc.d/ppp#6 (text+ko) ====
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $FreeBSD: src/etc/rc.d/ppp,v 1.19 2008/04/06 20:39:33 brooks Exp $
+# $FreeBSD: src/etc/rc.d/ppp,v 1.20 2008/04/10 01:32:49 brooks Exp $
#
# PROVIDE: ppp
@@ -19,6 +19,7 @@
ppp_start_profile()
{
local _ppp_profile _ppp_mode _ppp_nat _ppp_unit
+ local _ppp_profile_cleaned _punct _punct_c
_ppp_profile=$1
_ppp_profile_cleaned=$1
==== //depot/projects/vap/include/string.h#3 (text+ko) ====
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)string.h 8.1 (Berkeley) 6/2/93
- * $FreeBSD: src/include/string.h,v 1.25 2005/11/24 08:30:44 ru Exp $
+ * $FreeBSD: src/include/string.h,v 1.26 2008/04/10 00:12:43 delphij Exp $
*/
#ifndef _STRING_H_
@@ -59,6 +59,7 @@
void *memccpy(void * __restrict, const void * __restrict, int, size_t);
#endif
void *memchr(const void *, int, size_t) __pure;
+void *memrchr(const void *, int, size_t) __pure;
int memcmp(const void *, const void *, size_t) __pure;
void *memcpy(void * __restrict, const void * __restrict, size_t);
#if __BSD_VISIBLE
==== //depot/projects/vap/lib/libc/string/Makefile.inc#3 (text+ko) ====
@@ -1,5 +1,5 @@
# @(#)Makefile.inc 8.1 (Berkeley) 6/4/93
-# $FreeBSD: src/lib/libc/string/Makefile.inc,v 1.37 2006/03/13 01:15:00 deischen Exp $
+# $FreeBSD: src/lib/libc/string/Makefile.inc,v 1.38 2008/04/10 00:12:44 delphij Exp $
.PATH: ${.CURDIR}/${MACHINE_ARCH}/string ${.CURDIR}/string
@@ -7,7 +7,7 @@
# machine-independent string sources
MISRCS+=bcmp.c bcopy.c bzero.c ffs.c ffsl.c fls.c flsl.c index.c memccpy.c \
- memchr.c memcmp.c \
+ memchr.c memrchr.c memcmp.c \
memcpy.c memmem.c memmove.c memset.c rindex.c stpcpy.c strcasecmp.c \
strcat.c strchr.c strcmp.c strcoll.c strcpy.c strcspn.c strdup.c \
strerror.c strlcat.c strlcpy.c strlen.c strmode.c strncat.c strncmp.c \
@@ -39,6 +39,7 @@
MLINKS+=ffs.3 fls.3
MLINKS+=ffs.3 flsl.3
MLINKS+=index.3 rindex.3
+MLINKS+=memchr.3 memrchr.3
MLINKS+=strcasecmp.3 strncasecmp.3
MLINKS+=strcat.3 strncat.3
MLINKS+=strchr.3 strrchr.3
==== //depot/projects/vap/lib/libc/string/Symbol.map#3 (text) ====
@@ -1,5 +1,5 @@
/*
- * $FreeBSD: src/lib/libc/string/Symbol.map,v 1.2 2007/04/29 14:05:19 deischen Exp $
+ * $FreeBSD: src/lib/libc/string/Symbol.map,v 1.3 2008/04/10 00:12:44 delphij Exp $
*/
FBSD_1.0 {
@@ -77,6 +77,10 @@
wmemset;
};
+FBSD_1.1 {
+ memrchr;
+};
+
FBSDprivate_1.0 {
__strtok_r;
};
==== //depot/projects/vap/lib/libc/string/memchr.3#3 (text+ko) ====
@@ -30,9 +30,9 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)memchr.3 8.1 (Berkeley) 6/4/93
-.\" $FreeBSD: src/lib/libc/string/memchr.3,v 1.9 2007/01/09 00:28:12 imp Exp $
+.\" $FreeBSD: src/lib/libc/string/memchr.3,v 1.10 2008/04/10 00:12:44 delphij Exp $
.\"
-.Dd June 4, 1993
+.Dd April 9, 2008
.Dt MEMCHR 3
.Os
.Sh NAME
@@ -44,6 +44,8 @@
.In string.h
.Ft void *
.Fn memchr "const void *b" "int c" "size_t len"
+.Ft void *
+.Fn memrchr "const void *b" "int c" "size_t len"
.Sh DESCRIPTION
The
.Fn memchr
@@ -53,11 +55,22 @@
(converted to an unsigned char)
in string
.Fa b .
+.Pp
+The
+.Fn memrchr
+function behaves like
+.Fn memchr ,
+except that it locates the last occurrence of
+.Fa c
+in string
+.Fa b .
.Sh RETURN VALUES
The
.Fn memchr
-function
-returns a pointer to the byte located,
+and
+.Fn memrchr
+functions
+return a pointer to the byte located,
or NULL if no such byte exists within
.Fa len
bytes.
@@ -77,3 +90,15 @@
function
conforms to
.St -isoC .
+.Pp
+The
+.Fn memrchr
+function is a GNU extension and conforms to no standard.
+.Sh HISTORY
+The
+.Fn memrchr
+function first appeared in GNU libc 2.1.91, this implementation
+first appeared in
+.Fx 8.0 ,
+coming from
+.Ox 4.3 .
==== //depot/projects/vap/share/man/man5/rc.conf.5#8 (text+ko) ====
@@ -22,9 +22,9 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.338 2008/04/08 23:34:12 emax Exp $
+.\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.339 2008/04/09 21:24:11 emax Exp $
.\"
-.Dd January 27, 2008
+.Dd April 9, 2008
.Dt RC.CONF 5
.Os
.Sh NAME
==== //depot/projects/vap/share/mk/bsd.lib.mk#3 (text+ko) ====
@@ -1,5 +1,5 @@
# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91
-# $FreeBSD: src/share/mk/bsd.lib.mk,v 1.183 2007/10/20 19:01:49 ru Exp $
+# $FreeBSD: src/share/mk/bsd.lib.mk,v 1.184 2008/04/09 20:27:53 kan Exp $
#
.include <bsd.init.mk>
@@ -106,7 +106,7 @@
.include <bsd.symver.mk>
-# Allow librararies to specify their own version map or have it
+# Allow libraries to specify their own version map or have it
# automatically generated (see bsd.symver.mk above).
.if ${MK_SYMVER} == "yes" && !empty(VERSION_MAP)
${SHLIB_NAME}: ${VERSION_MAP}
==== //depot/projects/vap/sys/dev/nfe/if_nfe.c#6 (text+ko) ====
@@ -21,7 +21,7 @@
/* Driver for NVIDIA nForce MCP Fast Ethernet and Gigabit Ethernet */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/nfe/if_nfe.c,v 1.27 2008/03/06 01:47:53 yongari Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/nfe/if_nfe.c,v 1.28 2008/04/10 01:25:09 yongari Exp $");
#ifdef HAVE_KERNEL_OPTION_HEADERS
#include "opt_device_polling.h"
@@ -237,6 +237,14 @@
"NVIDIA nForce MCP67 Networking Adapter"},
{PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP67_LAN4,
"NVIDIA nForce MCP67 Networking Adapter"},
+ {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN1,
+ "NVIDIA nForce MCP73 Networking Adapter"},
+ {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN2,
+ "NVIDIA nForce MCP73 Networking Adapter"},
+ {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN3,
+ "NVIDIA nForce MCP73 Networking Adapter"},
+ {PCI_VENDOR_NVIDIA, PCI_PRODUCT_NVIDIA_MCP73_LAN4,
+ "NVIDIA nForce MCP73 Networking Adapter"},
{0, 0, NULL}
};
@@ -452,6 +460,10 @@
case PCI_PRODUCT_NVIDIA_MCP67_LAN2:
case PCI_PRODUCT_NVIDIA_MCP67_LAN3:
case PCI_PRODUCT_NVIDIA_MCP67_LAN4:
+ case PCI_PRODUCT_NVIDIA_MCP73_LAN1:
+ case PCI_PRODUCT_NVIDIA_MCP73_LAN2:
+ case PCI_PRODUCT_NVIDIA_MCP73_LAN3:
+ case PCI_PRODUCT_NVIDIA_MCP73_LAN4:
sc->nfe_flags |= NFE_40BIT_ADDR | NFE_PWR_MGMT |
NFE_CORRECT_MACADDR | NFE_TX_FLOW_CTRL;
break;
==== //depot/projects/vap/sys/dev/nfe/if_nfereg.h#4 (text+ko) ====
@@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $FreeBSD: src/sys/dev/nfe/if_nfereg.h,v 1.11 2008/03/06 01:47:53 yongari Exp $
+ * $FreeBSD: src/sys/dev/nfe/if_nfereg.h,v 1.12 2008/04/10 01:25:09 yongari Exp $
*/
#define NFE_RX_RING_COUNT 256
@@ -291,6 +291,10 @@
#define PCI_PRODUCT_NVIDIA_MCP67_LAN2 0x054d
#define PCI_PRODUCT_NVIDIA_MCP67_LAN3 0x054e
#define PCI_PRODUCT_NVIDIA_MCP67_LAN4 0x054f
+#define PCI_PRODUCT_NVIDIA_MCP73_LAN1 0x07dc
+#define PCI_PRODUCT_NVIDIA_MCP73_LAN2 0x07dd
+#define PCI_PRODUCT_NVIDIA_MCP73_LAN3 0x07de
+#define PCI_PRODUCT_NVIDIA_MCP73_LAN4 0x07df
#define PCI_PRODUCT_NVIDIA_NFORCE3_LAN2 PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN1
#define PCI_PRODUCT_NVIDIA_NFORCE3_LAN3 PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN2
==== //depot/projects/vap/sys/dev/ral/rt2661.c#24 (text) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/dev/ral/rt2661.c,v 1.18 2007/11/06 07:30:11 kevlo Exp $ */
+/* $FreeBSD: src/sys/dev/ral/rt2661.c,v 1.19 2008/04/09 18:40:10 sam Exp $ */
/*-
* Copyright (c) 2006
@@ -18,7 +18,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ral/rt2661.c,v 1.18 2007/11/06 07:30:11 kevlo Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ral/rt2661.c,v 1.19 2008/04/09 18:40:10 sam Exp $");
/*-
* Ralink Technology RT2561, RT2561S and RT2661 chipset driver
==== //depot/projects/vap/sys/dev/usb/ubsa.c#7 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/usb/ubsa.c,v 1.34 2008/03/28 14:20:06 rpaulo Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/usb/ubsa.c,v 1.35 2008/04/09 22:20:28 flz Exp $");
/*-
* Copyright (c) 2001 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -226,6 +226,8 @@
{ USB_VENDOR_PERACOM, USB_PRODUCT_PERACOM_SERIAL1 },
/* Novatel Wireless Merlin cards */
{ USB_VENDOR_NOVATEL, USB_PRODUCT_NOVATEL_U740 },
+ /* Novatel Wireless Merlin v740 */
+ { USB_VENDOR_NOVATEL, USB_PRODUCT_NOVATEL_V740 },
/* Option Vodafone MC3G */
{ USB_VENDOR_OPTION, USB_PRODUCT_OPTION_VODAFONEMC3G },
/* Option GlobeTrotter 3G */
==== //depot/projects/vap/sys/dev/usb/usbdevs#13 (text+ko) ====
@@ -1,4 +1,4 @@
-$FreeBSD: src/sys/dev/usb/usbdevs,v 1.345 2008/03/28 14:20:06 rpaulo Exp $
+$FreeBSD: src/sys/dev/usb/usbdevs,v 1.346 2008/04/09 22:20:28 flz Exp $
/* $NetBSD: usbdevs,v 1.392 2004/12/29 08:38:44 imp Exp $ */
/*-
@@ -1786,6 +1786,7 @@
/* Novatel Wireless products */
product NOVATEL CDMA_MODEM 0x1110 Novatel Wireless Merlin CDMA
product NOVATEL V620 0x1110 Merlin V620
+product NOVATEL V740 0x1120 Merlin V740
product NOVATEL V720 0x1130 Merlin V720
product NOVATEL U740 0x1400 Merlin U740
product NOVATEL U720 0x2110 Merlin U720
==== //depot/projects/vap/sys/kern/subr_firmware.c#6 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/subr_firmware.c,v 1.9 2007/02/15 17:21:31 luigi Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/subr_firmware.c,v 1.10 2008/04/09 19:07:48 sam Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -263,7 +263,6 @@
mtx_lock(&firmware_mtx);
mtx_unlock(&firmware_mtx);
- /* XXX unlocked, necessary? */
if (td->td_proc->p_fd->fd_rdir == NULL) {
printf("%s: root not mounted yet, no way to load image\n",
imagename);
@@ -279,12 +278,14 @@
mtx_lock(&firmware_mtx);
fp = lookup(imagename, NULL);
if (fp == NULL || fp->file != NULL) {
+ mtx_unlock(&firmware_mtx);
if (fp == NULL)
printf("%s: firmware image loaded, "
"but did not register\n", imagename);
(void) linker_release_module(imagename, NULL, NULL);
- } else
- fp->file = result; /* record the module identity */
+ goto done;
+ }
+ fp->file = result; /* record the module identity */
mtx_unlock(&firmware_mtx);
done:
wakeup_one(imagename); /* we're done */
==== //depot/projects/vap/sys/kern/vfs_cache.c#10 (text+ko) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/vfs_cache.c,v 1.120 2008/03/31 11:53:02 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/vfs_cache.c,v 1.121 2008/04/09 20:19:55 pjd Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -423,7 +423,7 @@
* When we lookup "." we still can be asked to lock it
* differently...
*/
- ltype = cnp->cn_lkflags & (LK_SHARED | LK_EXCLUSIVE);
+ ltype = cnp->cn_lkflags & LK_TYPE_MASK;
if (ltype == VOP_ISLOCKED(*vpp))
return (-1);
else if (ltype == LK_EXCLUSIVE)
@@ -440,12 +440,14 @@
error = vget(*vpp, cnp->cn_lkflags | LK_INTERLOCK, cnp->cn_thread);
if (cnp->cn_flags & ISDOTDOT)
vn_lock(dvp, ltype | LK_RETRY);
- if ((cnp->cn_flags & ISLASTCN) && (cnp->cn_lkflags & LK_EXCLUSIVE))
- ASSERT_VOP_ELOCKED(*vpp, "cache_lookup");
if (error) {
*vpp = NULL;
goto retry;
}
+ if ((cnp->cn_flags & ISLASTCN) &&
+ (cnp->cn_lkflags & LK_TYPE_MASK) == LK_EXCLUSIVE) {
+ ASSERT_VOP_ELOCKED(*vpp, "cache_lookup");
+ }
return (-1);
}
==== //depot/projects/vap/sys/netgraph/ng_base.c#16 (text+ko) ====
@@ -38,7 +38,7 @@
* Authors: Julian Elischer <julian at freebsd.org>
* Archie Cobbs <archie at freebsd.org>
*
- * $FreeBSD: src/sys/netgraph/ng_base.c,v 1.155 2008/04/06 15:26:32 mav Exp $
+ * $FreeBSD: src/sys/netgraph/ng_base.c,v 1.156 2008/04/09 19:03:19 mav Exp $
* $Whistle: ng_base.c,v 1.39 1999/01/28 23:54:53 julian Exp $
*/
@@ -1806,8 +1806,19 @@
|
Active Writer ---------------------------------------+
+Node queue has such semantics:
+- All flags modifications are atomic.
+- Reader count can be incremented only if there is no writer or pending flags.
+ As soon as this can't be done with single operation, it is implemented with
+ spin loop and atomic_cmpset().
+- Writer flag can be set only if there is no any bits set.
+ It is implemented with atomic_cmpset().
+- Pending flag can be set any time, but to avoid collision on queue processing
+ all queue fields are protected by the mutex.
+- Queue processing thread reads queue holding the mutex, but releases it while
+ processing. When queue is empty pending flag is removed.
+*/
-*/
#define WRITER_ACTIVE 0x00000001
#define OP_PENDING 0x00000002
#define READER_INCREMENT 0x00000004
@@ -1849,19 +1860,16 @@
* nothing we could return, either because there really was nothing there, or
* because the node was in a state where it cannot yet process the next item
* on the queue.
- *
- * This MUST MUST MUST be called with the mutex held.
*/
static __inline item_p
ng_dequeue(struct ng_queue *ngq, int *rw)
{
item_p item;
+ /* This MUST be called with the mutex held. */
mtx_assert(&ngq->q_mtx, MA_OWNED);
- /*
- * If there is nothing queued, then just return.
- * No point in continuing.
- */
+
+ /* If there is nothing queued, then just return. */
if (!QUEUE_ACTIVE(ngq)) {
CTR4(KTR_NET, "%20s: node [%x] (%p) queue empty; "
"queue flags 0x%lx", __func__,
@@ -1878,22 +1886,25 @@
while (1) {
long t = ngq->q_flags;
if (t & WRITER_ACTIVE) {
- /* It's a reader but we can't use it. */
+ /* There is writer, reader can't proceed. */
CTR4(KTR_NET, "%20s: node [%x] (%p) queued reader "
"can't proceed; queue flags 0x%lx", __func__,
ngq->q_node->nd_ID, ngq->q_node, t);
return (NULL);
}
- if (atomic_cmpset_long(&ngq->q_flags, t,
+ if (atomic_cmpset_acq_long(&ngq->q_flags, t,
t + READER_INCREMENT))
break;
cpu_spinwait();
}
+ /* We have got reader lock for the node. */
*rw = NGQRW_R;
- } else if (atomic_cmpset_long(&ngq->q_flags, OP_PENDING,
+ } else if (atomic_cmpset_acq_long(&ngq->q_flags, OP_PENDING,
OP_PENDING + WRITER_ACTIVE)) {
+ /* We have got writer lock for the node. */
*rw = NGQRW_W;
} else {
+ /* There is somebody other, writer can't proceed. */
CTR4(KTR_NET, "%20s: node [%x] (%p) queued writer "
"can't proceed; queue flags 0x%lx", __func__,
ngq->q_node->nd_ID, ngq->q_node, ngq->q_flags);
@@ -1918,10 +1929,8 @@
}
/*
- * Queue a packet to be picked up by someone else.
- * We really don't care who, but we can't or don't want to hang around
- * to process it ourselves. We are probably an interrupt routine..
- * If the queue could be run, flag the netisr handler to start.
+ * Queue a packet to be picked up later by someone else.
+ * If the queue could be run now, add node to the queue handler's worklist.
*/
static __inline void
ng_queue_rw(struct ng_queue * ngq, item_p item, int rw)
@@ -1950,6 +1959,7 @@
NG_QUEUE_UNLOCK(ngq);
}
+/* Acquire reader lock on node. If node is busy, queue the packet. */
static __inline item_p
ng_acquire_read(struct ng_queue *ngq, item_p item)
{
@@ -1961,7 +1971,7 @@
long t = ngq->q_flags;
if (t & NGQ_RMASK)
break; /* Node is not ready for reader. */
- if (atomic_cmpset_long(&ngq->q_flags, t, t + READER_INCREMENT)) {
+ if (atomic_cmpset_acq_long(&ngq->q_flags, t, t + READER_INCREMENT)) {
/* Successfully grabbed node */
CTR4(KTR_NET, "%20s: node [%x] (%p) acquired item %p",
__func__, ngq->q_node->nd_ID, ngq->q_node, item);
@@ -1976,6 +1986,7 @@
return (NULL);
}
+/* Acquire writer lock on node. If node is busy, queue the packet. */
static __inline item_p
ng_acquire_write(struct ng_queue *ngq, item_p item)
{
@@ -1983,7 +1994,7 @@
("%s: working on deadnode", __func__));
/* Writer needs completely idle node. */
- if (atomic_cmpset_long(&ngq->q_flags, 0, WRITER_ACTIVE)) {
+ if (atomic_cmpset_acq_long(&ngq->q_flags, 0, WRITER_ACTIVE)) {
/* Successfully grabbed node */
CTR4(KTR_NET, "%20s: node [%x] (%p) acquired item %p",
__func__, ngq->q_node->nd_ID, ngq->q_node, item);
@@ -2070,18 +2081,21 @@
#endif
+/* Release reader lock. */
static __inline void
ng_leave_read(struct ng_queue *ngq)
{
- atomic_subtract_long(&ngq->q_flags, READER_INCREMENT);
+ atomic_subtract_rel_long(&ngq->q_flags, READER_INCREMENT);
}
+/* Release writer lock. */
static __inline void
ng_leave_write(struct ng_queue *ngq)
{
- atomic_clear_long(&ngq->q_flags, WRITER_ACTIVE);
+ atomic_clear_rel_long(&ngq->q_flags, WRITER_ACTIVE);
}
+/* Purge node queue. Called on node shutdown. */
static void
ng_flush_input_queue(struct ng_queue * ngq)
{
==== //depot/projects/vap/sys/pci/if_rl.c#7 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/pci/if_rl.c,v 1.173 2008/03/03 04:15:08 yongari Exp $");
+__FBSDID("$FreeBSD: src/sys/pci/if_rl.c,v 1.174 2008/04/10 01:06:05 yongari Exp $");
/*
* RealTek 8129/8139 PCI NIC driver
@@ -1117,17 +1117,19 @@
* datasheet makes absolutely no mention of this and
* RealTek should be shot for this.
*/
- if ((uint16_t)(rxstat >> 16) == RL_RXSTAT_UNFINISHED)
+ total_len = rxstat >> 16;
+ if (total_len == RL_RXSTAT_UNFINISHED)
break;
- if (!(rxstat & RL_RXSTAT_RXOK)) {
+ if (!(rxstat & RL_RXSTAT_RXOK) ||
+ total_len < ETHER_MIN_LEN ||
+ total_len > ETHER_MAX_LEN + ETHER_VLAN_ENCAP_LEN) {
ifp->if_ierrors++;
rl_init_locked(sc);
return;
}
/* No errors; receive the packet. */
- total_len = rxstat >> 16;
rx_bytes += total_len + 4;
/*
==== //depot/projects/vap/sys/powerpc/include/atomic.h#9 (text+ko) ====
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/powerpc/include/atomic.h,v 1.21 2008/04/09 01:00:35 marcel Exp $
+ * $FreeBSD: src/sys/powerpc/include/atomic.h,v 1.22 2008/04/10 02:37:26 marcel Exp $
*/
#ifndef _MACHINE_ATOMIC_H_
@@ -113,10 +113,10 @@
*/
#define __ATOMIC_CLEAR_8(p, v, t) \
- 8-bit atomic_add not implemented
+ 8-bit atomic_clear not implemented
#define __ATOMIC_CLEAR_16(p, v, t) \
- 16-bit atomic_add not implemented
+ 16-bit atomic_clear not implemented
#define __ATOMIC_CLEAR_32(p, v, t) \
__asm __volatile( \
@@ -130,7 +130,7 @@
/* __ATOMIC_CLEAR_32 */
#define __ATOMIC_CLEAR_64(p, v, t) \
- 64-bit atomic_add not implemented
+ 64-bit atomic_clear not implemented
#define _ATOMIC_CLEAR(width, suffix, type) \
static __inline void \
==== //depot/projects/vap/sys/sparc64/include/intr_machdep.h#5 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/sparc64/include/intr_machdep.h,v 1.17 2007/09/06 19:16:29 marius Exp $
+ * $FreeBSD: src/sys/sparc64/include/intr_machdep.h,v 1.18 2008/04/09 21:14:01 marius Exp $
*/
#ifndef _MACHINE_INTR_MACHDEP_H_
@@ -33,7 +33,7 @@
#define PIL_MAX (1 << 4)
#define IV_MAX (1 << 11)
-#define IV_NAMLEN 1024
+#define IV_NAMLEN 1024
#define IR_FREE (PIL_MAX * 2)
@@ -46,6 +46,7 @@
#define PIL_RENDEZVOUS 3 /* smp rendezvous ipi */
#define PIL_AST 4 /* ast ipi */
#define PIL_STOP 5 /* stop cpu ipi */
+#define PIL_PREEMPT 6 /* preempt idle thread cpu ipi */
#define PIL_FAST 13 /* fast interrupts */
#define PIL_TICK 14
==== //depot/projects/vap/sys/sparc64/include/smp.h#6 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/sparc64/include/smp.h,v 1.22 2007/06/16 23:26:00 marius Exp $
+ * $FreeBSD: src/sys/sparc64/include/smp.h,v 1.23 2008/04/09 21:14:01 marius Exp $
*/
#ifndef _MACHINE_SMP_H_
@@ -51,6 +51,7 @@
#define IPI_AST PIL_AST
#define IPI_RENDEZVOUS PIL_RENDEZVOUS
+#define IPI_PREEMPT PIL_PREEMPT
#define IPI_STOP PIL_STOP
#define IPI_RETRIES 5000
==== //depot/projects/vap/sys/sparc64/sparc64/intr_machdep.c#8 (text+ko) ====
@@ -59,7 +59,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/intr_machdep.c,v 1.31 2008/04/05 19:58:29 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/intr_machdep.c,v 1.32 2008/04/09 21:14:01 marius Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -95,7 +95,8 @@
"rndzvs", /* PIL_RENDEZVOUS */
"ast", /* PIL_AST */
"stop", /* PIL_STOP */
- "stray", "stray", "stray", "stray", "stray", "stray", "stray",
+ "preempt", /* PIL_PREEMPT */
+ "stray", "stray", "stray", "stray", "stray", "stray",
"fast", /* PIL_FAST */
"tick", /* PIL_TICK */
};
==== //depot/projects/vap/sys/sparc64/sparc64/mp_machdep.c#7 (text+ko) ====
@@ -29,6 +29,7 @@
*/
/*-
* Copyright (c) 2002 Jake Burkholder.
+ * Copyright (c) 2007 Marius Strobl <marius at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -54,7 +55,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/mp_machdep.c,v 1.38 2008/03/09 15:53:34 marius Exp $");
+__FBSDID("$FreeBSD: src/sys/sparc64/sparc64/mp_machdep.c,v 1.39 2008/04/09 21:14:01 marius Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -91,6 +92,7 @@
#include <machine/ver.h>
static ih_func_t cpu_ipi_ast;
+static ih_func_t cpu_ipi_preempt;
static ih_func_t cpu_ipi_stop;
/*
@@ -257,6 +259,7 @@
intr_setup(PIL_RENDEZVOUS, (ih_func_t *)smp_rendezvous_action,
-1, NULL, NULL);
intr_setup(PIL_STOP, cpu_ipi_stop, -1, NULL, NULL);
+ intr_setup(PIL_PREEMPT, cpu_ipi_preempt, -1, NULL, NULL);
cpuid_to_mid[curcpu] = PCPU_GET(mid);
@@ -440,6 +443,13 @@
}
static void
+cpu_ipi_preempt(struct trapframe *tf)
+{
+
+ sched_preempt(curthread);
+}
+
+static void
spitfire_ipi_selected(u_int cpus, u_long d0, u_long d1, u_long d2)
{
u_int cpu;
==== //depot/projects/vap/sys/sys/param.h#17 (text+ko) ====
@@ -32,7 +32,7 @@
* SUCH DAMAGE.
*
* @(#)param.h 8.3 (Berkeley) 4/4/95
- * $FreeBSD: src/sys/sys/param.h,v 1.349 2008/04/08 17:55:26 jkim Exp $
+ * $FreeBSD: src/sys/sys/param.h,v 1.350 2008/04/10 00:12:44 delphij Exp $
*/
#ifndef _SYS_PARAM_H_
@@ -57,7 +57,7 @@
* is created, otherwise 1.
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 800033 /* Master, propagated to newvers */
+#define __FreeBSD_version 800034 /* Master, propagated to newvers */
#ifndef LOCORE
#include <sys/types.h>
More information about the p4-projects
mailing list