PERFORCE change 169285 for review
Robert Watson
rwatson at FreeBSD.org
Wed Oct 7 08:46:49 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=169285
Change 169285 by rwatson at rwatson_freebsd_capabilities on 2009/10/07 08:46:43
Integrate TrustedBSD capabilities -- including loop-back of
pread(2) change for rtld, basename_r(3).
Affected files ...
.. //depot/projects/trustedbsd/capabilities/src/bin/sh/eval.c#9 integrate
.. //depot/projects/trustedbsd/capabilities/src/bin/sh/exec.c#6 integrate
.. //depot/projects/trustedbsd/capabilities/src/contrib/tcsh/sh.c#4 integrate
.. //depot/projects/trustedbsd/capabilities/src/include/libgen.h#3 integrate
.. //depot/projects/trustedbsd/capabilities/src/lib/libc/gen/Makefile.inc#12 integrate
.. //depot/projects/trustedbsd/capabilities/src/lib/libc/gen/Symbol.map#12 integrate
.. //depot/projects/trustedbsd/capabilities/src/lib/libc/gen/basename.3#3 integrate
.. //depot/projects/trustedbsd/capabilities/src/lib/libc/gen/basename.c#3 integrate
.. //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/map_object.c#7 integrate
.. //depot/projects/trustedbsd/capabilities/src/sys/amd64/include/atomic.h#4 integrate
.. //depot/projects/trustedbsd/capabilities/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c#6 integrate
.. //depot/projects/trustedbsd/capabilities/src/sys/i386/include/atomic.h#4 integrate
.. //depot/projects/trustedbsd/capabilities/src/sys/netinet/tcp_input.c#13 integrate
.. //depot/projects/trustedbsd/capabilities/src/tools/regression/bin/sh/execution/unknown1.0#1 branch
Differences ...
==== //depot/projects/trustedbsd/capabilities/src/bin/sh/eval.c#9 (text+ko) ====
@@ -36,7 +36,7 @@
#endif
#endif /* not lint */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/eval.c,v 1.66 2009/08/28 22:41:25 jilles Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/eval.c,v 1.67 2009/10/06 22:00:14 jilles Exp $");
#include <paths.h>
#include <signal.h>
@@ -713,12 +713,7 @@
do_clearcmdentry = 1;
}
- find_command(argv[0], &cmdentry, 1, path);
- if (cmdentry.cmdtype == CMDUNKNOWN) { /* command not found */
- exitstatus = 127;
- flushout(&errout);
- return;
- }
+ find_command(argv[0], &cmdentry, 0, path);
/* implement the bltin builtin here */
if (cmdentry.cmdtype == CMDBUILTIN && cmdentry.u.index == BLTINCMD) {
for (;;) {
@@ -740,7 +735,7 @@
/* Fork off a child process if necessary. */
if (cmd->ncmd.backgnd
- || (cmdentry.cmdtype == CMDNORMAL
+ || ((cmdentry.cmdtype == CMDNORMAL || cmdentry.cmdtype == CMDUNKNOWN)
&& ((flags & EV_EXIT) == 0 || have_traps()))
|| ((flags & EV_BACKCMD) != 0
&& (cmdentry.cmdtype != CMDBUILTIN
==== //depot/projects/trustedbsd/capabilities/src/bin/sh/exec.c#6 (text+ko) ====
@@ -36,7 +36,7 @@
#endif
#endif /* not lint */
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/bin/sh/exec.c,v 1.36 2009/08/28 22:41:25 jilles Exp $");
+__FBSDID("$FreeBSD: src/bin/sh/exec.c,v 1.37 2009/10/06 22:00:14 jilles Exp $");
#include <sys/types.h>
#include <sys/stat.h>
@@ -429,6 +429,7 @@
outfmt(out2, "%s: %s\n", name, strerror(e));
}
entry->cmdtype = CMDUNKNOWN;
+ entry->u.index = 0;
return;
success:
==== //depot/projects/trustedbsd/capabilities/src/contrib/tcsh/sh.c#4 (text+ko) ====
@@ -1291,6 +1291,8 @@
/*
* Mop-up.
*/
+ /* Take care of these (especially HUP) here instead of inside flush. */
+ handle_pending_signals();
if (intty) {
if (loginsh) {
xprintf("logout\n");
==== //depot/projects/trustedbsd/capabilities/src/include/libgen.h#3 (text+ko) ====
@@ -1,5 +1,5 @@
/* $OpenBSD: libgen.h,v 1.4 1999/05/28 22:00:22 espie Exp $ */
-/* $FreeBSD: src/include/libgen.h,v 1.2 2002/03/23 17:24:53 imp Exp $ */
+/* $FreeBSD: src/include/libgen.h,v 1.3 2009/10/06 14:05:57 rwatson Exp $ */
/*
* Copyright (c) 1997 Todd C. Miller <Todd.Miller at courtesan.com>
==== //depot/projects/trustedbsd/capabilities/src/lib/libc/gen/Makefile.inc#12 (text+ko) ====
@@ -1,5 +1,5 @@
# @(#)Makefile.inc 8.6 (Berkeley) 5/4/95
-# $FreeBSD: src/lib/libc/gen/Makefile.inc,v 1.145 2009/09/19 18:01:32 alc Exp $
+# $FreeBSD: src/lib/libc/gen/Makefile.inc,v 1.146 2009/10/06 14:05:57 rwatson Exp $
# machine-independent gen sources
.PATH: ${.CURDIR}/${MACHINE_ARCH}/gen ${.CURDIR}/gen
==== //depot/projects/trustedbsd/capabilities/src/lib/libc/gen/Symbol.map#12 (text) ====
@@ -1,5 +1,5 @@
/*
- * $FreeBSD: src/lib/libc/gen/Symbol.map,v 1.22 2009/09/19 18:01:32 alc Exp $
+ * $FreeBSD: src/lib/libc/gen/Symbol.map,v 1.23 2009/10/06 14:05:57 rwatson Exp $
*/
FBSD_1.0 {
@@ -370,6 +370,7 @@
};
FBSD_1.2 {
+ basename_r;
getpagesizes;
};
==== //depot/projects/trustedbsd/capabilities/src/lib/libc/gen/basename.3#3 (text+ko) ====
@@ -25,9 +25,9 @@
.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" $OpenBSD: basename.3,v 1.12 2000/04/18 03:01:25 aaron Exp $
-.\" $FreeBSD: src/lib/libc/gen/basename.3,v 1.8 2006/10/12 14:31:17 ru Exp $
+.\" $FreeBSD: src/lib/libc/gen/basename.3,v 1.9 2009/10/06 14:05:57 rwatson Exp $
.\"
-.Dd October 12, 2006
+.Dd October 6, 2009
.Dt BASENAME 3
.Os
.Sh NAME
==== //depot/projects/trustedbsd/capabilities/src/lib/libc/gen/basename.c#3 (text+ko) ====
@@ -31,7 +31,7 @@
#endif /* not lint */
#endif
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libc/gen/basename.c,v 1.7 2002/12/30 01:41:14 marcel Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/gen/basename.c,v 1.8 2009/10/06 14:05:57 rwatson Exp $");
#include <errno.h>
#include <libgen.h>
==== //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf/map_object.c#7 (text+ko) ====
@@ -22,7 +22,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/libexec/rtld-elf/map_object.c,v 1.22 2009/07/17 19:32:04 kib Exp $
+ * $FreeBSD: src/libexec/rtld-elf/map_object.c,v 1.23 2009/10/06 17:14:39 rwatson Exp $
*/
#include <sys/param.h>
==== //depot/projects/trustedbsd/capabilities/src/sys/amd64/include/atomic.h#4 (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/amd64/include/atomic.h,v 1.46 2008/11/22 05:55:56 kmacy Exp $
+ * $FreeBSD: src/sys/amd64/include/atomic.h,v 1.47 2009/10/06 13:45:49 attilio Exp $
*/
#ifndef _MACHINE_ATOMIC_H_
#define _MACHINE_ATOMIC_H_
@@ -73,10 +73,13 @@
*/
#if defined(KLD_MODULE) || !defined(__GNUCLIKE_ASM)
#define ATOMIC_ASM(NAME, TYPE, OP, CONS, V) \
-void atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v)
+void atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v); \
+void atomic_##NAME##_barr_##TYPE(volatile u_##TYPE *p, u_##TYPE v)
int atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src);
int atomic_cmpset_long(volatile u_long *dst, u_long exp, u_long src);
+int atomic_cmpset_barr_int(volatile u_int *dst, u_int exp, u_int src);
+int atomic_cmpset_barr_long(volatile u_long *dst, u_long exp, u_long src);
u_int atomic_fetchadd_int(volatile u_int *p, u_int v);
u_long atomic_fetchadd_long(volatile u_long *p, u_long v);
@@ -97,8 +100,9 @@
#endif
/*
- * The assembly is volatilized to demark potential before-and-after side
- * effects if an interrupt or SMP collision were to occur.
+ * The assembly is volatilized to avoid code chunk removal by the compiler.
+ * GCC aggressively reorders operations and memory clobbering is necessary
+ * in order to avoid that for memory barriers.
*/
#define ATOMIC_ASM(NAME, TYPE, OP, CONS, V) \
static __inline void \
@@ -108,6 +112,15 @@
: "=m" (*p) \
: CONS (V), "m" (*p)); \
} \
+ \
+static __inline void \
+atomic_##NAME##_barr_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\
+{ \
+ __asm __volatile(MPLOCKED OP \
+ : "=m" (*p) \
+ : CONS (V), "m" (*p) \
+ : "memory"); \
+} \
struct __hack
/*
@@ -160,6 +173,9 @@
return (res);
}
+#define atomic_cmpset_barr_int atomic_cmpset_int
+#define atomic_cmpset_barr_long atomic_cmpset_long
+
/*
* Atomically add the value of v to the integer pointed to by p and return
* the previous value of *p.
@@ -205,18 +221,23 @@
* PentiumPro or higher, reads may pass writes, so for that case we have
* to use a serializing instruction (i.e. with LOCK) to do the load in
* SMP kernels. For UP kernels, however, the cache of the single processor
- * is always consistent, so we don't need any memory barriers.
+ * is always consistent, so we only need to take care of compiler.
*/
#define ATOMIC_STORE_LOAD(TYPE, LOP, SOP) \
static __inline u_##TYPE \
atomic_load_acq_##TYPE(volatile u_##TYPE *p) \
{ \
- return (*p); \
+ u_##TYPE tmp; \
+ \
+ tmp = *p; \
+ __asm __volatile ("" : : : "memory"); \
+ return (tmp); \
} \
\
static __inline void \
atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\
{ \
+ __asm __volatile ("" : : : "memory"); \
*p = v; \
} \
struct __hack
@@ -247,7 +268,8 @@
__asm __volatile(SOP \
: "=m" (*p), /* 0 */ \
"+r" (v) /* 1 */ \
- : "m" (*p)); /* 2 */ \
+ : "m" (*p) /* 2 */ \
+ : "memory"); \
} \
struct __hack
@@ -327,46 +349,45 @@
#endif /* __GNUCLIKE_ASM */
-/* Acquire and release variants are identical to the normal ones. */
-#define atomic_set_acq_char atomic_set_char
-#define atomic_set_rel_char atomic_set_char
-#define atomic_clear_acq_char atomic_clear_char
-#define atomic_clear_rel_char atomic_clear_char
-#define atomic_add_acq_char atomic_add_char
-#define atomic_add_rel_char atomic_add_char
-#define atomic_subtract_acq_char atomic_subtract_char
-#define atomic_subtract_rel_char atomic_subtract_char
+#define atomic_set_acq_char atomic_set_barr_char
+#define atomic_set_rel_char atomic_set_barr_char
+#define atomic_clear_acq_char atomic_clear_barr_char
+#define atomic_clear_rel_char atomic_clear_barr_char
+#define atomic_add_acq_char atomic_add_barr_char
+#define atomic_add_rel_char atomic_add_barr_char
+#define atomic_subtract_acq_char atomic_subtract_barr_char
+#define atomic_subtract_rel_char atomic_subtract_barr_char
-#define atomic_set_acq_short atomic_set_short
-#define atomic_set_rel_short atomic_set_short
-#define atomic_clear_acq_short atomic_clear_short
-#define atomic_clear_rel_short atomic_clear_short
-#define atomic_add_acq_short atomic_add_short
-#define atomic_add_rel_short atomic_add_short
-#define atomic_subtract_acq_short atomic_subtract_short
-#define atomic_subtract_rel_short atomic_subtract_short
+#define atomic_set_acq_short atomic_set_barr_short
+#define atomic_set_rel_short atomic_set_barr_short
+#define atomic_clear_acq_short atomic_clear_barr_short
+#define atomic_clear_rel_short atomic_clear_barr_short
+#define atomic_add_acq_short atomic_add_barr_short
+#define atomic_add_rel_short atomic_add_barr_short
+#define atomic_subtract_acq_short atomic_subtract_barr_short
+#define atomic_subtract_rel_short atomic_subtract_barr_short
-#define atomic_set_acq_int atomic_set_int
-#define atomic_set_rel_int atomic_set_int
-#define atomic_clear_acq_int atomic_clear_int
-#define atomic_clear_rel_int atomic_clear_int
-#define atomic_add_acq_int atomic_add_int
-#define atomic_add_rel_int atomic_add_int
-#define atomic_subtract_acq_int atomic_subtract_int
-#define atomic_subtract_rel_int atomic_subtract_int
-#define atomic_cmpset_acq_int atomic_cmpset_int
-#define atomic_cmpset_rel_int atomic_cmpset_int
+#define atomic_set_acq_int atomic_set_barr_int
+#define atomic_set_rel_int atomic_set_barr_int
+#define atomic_clear_acq_int atomic_clear_barr_int
+#define atomic_clear_rel_int atomic_clear_barr_int
+#define atomic_add_acq_int atomic_add_barr_int
+#define atomic_add_rel_int atomic_add_barr_int
+#define atomic_subtract_acq_int atomic_subtract_barr_int
+#define atomic_subtract_rel_int atomic_subtract_barr_int
+#define atomic_cmpset_acq_int atomic_cmpset_barr_int
+#define atomic_cmpset_rel_int atomic_cmpset_barr_int
-#define atomic_set_acq_long atomic_set_long
-#define atomic_set_rel_long atomic_set_long
-#define atomic_clear_acq_long atomic_clear_long
-#define atomic_clear_rel_long atomic_clear_long
-#define atomic_add_acq_long atomic_add_long
-#define atomic_add_rel_long atomic_add_long
-#define atomic_subtract_acq_long atomic_subtract_long
-#define atomic_subtract_rel_long atomic_subtract_long
-#define atomic_cmpset_acq_long atomic_cmpset_long
-#define atomic_cmpset_rel_long atomic_cmpset_long
+#define atomic_set_acq_long atomic_set_barr_long
+#define atomic_set_rel_long atomic_set_barr_long
+#define atomic_clear_acq_long atomic_clear_barr_long
+#define atomic_clear_rel_long atomic_clear_barr_long
+#define atomic_add_acq_long atomic_add_barr_long
+#define atomic_add_rel_long atomic_add_barr_long
+#define atomic_subtract_acq_long atomic_subtract_barr_long
+#define atomic_subtract_rel_long atomic_subtract_barr_long
+#define atomic_cmpset_acq_long atomic_cmpset_barr_long
+#define atomic_cmpset_rel_long atomic_cmpset_barr_long
/* Operations on 8-bit bytes. */
#define atomic_set_8 atomic_set_char
==== //depot/projects/trustedbsd/capabilities/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c#6 (text+ko) ====
@@ -1821,6 +1821,12 @@
#endif
#ifdef _KERNEL
+ if (needfree)
+ return (1);
+ if (arc_size > arc_c_max)
+ return (1);
+ if (arc_size <= arc_c_min)
+ return (0);
/*
* If pages are needed or we're within 2048 pages
@@ -1829,9 +1835,6 @@
if (vm_pages_needed || (vm_paging_target() > -2048))
return (1);
- if (needfree)
- return (1);
-
#if 0
/*
* take 'desfree' extra pages, so we reclaim sooner, rather than later
==== //depot/projects/trustedbsd/capabilities/src/sys/i386/include/atomic.h#4 (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/i386/include/atomic.h,v 1.51 2008/12/06 21:33:44 kib Exp $
+ * $FreeBSD: src/sys/i386/include/atomic.h,v 1.52 2009/10/06 13:45:49 attilio Exp $
*/
#ifndef _MACHINE_ATOMIC_H_
#define _MACHINE_ATOMIC_H_
@@ -73,9 +73,11 @@
*/
#if defined(KLD_MODULE) || !defined(__GNUCLIKE_ASM)
#define ATOMIC_ASM(NAME, TYPE, OP, CONS, V) \
-void atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v)
+void atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v); \
+void atomic_##NAME##_barr_##TYPE(volatile u_##TYPE *p, u_##TYPE v)
int atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src);
+int atomic_cmpset_barr_int(volatile u_int *dst, u_int exp, u_int src);
u_int atomic_fetchadd_int(volatile u_int *p, u_int v);
#define ATOMIC_STORE_LOAD(TYPE, LOP, SOP) \
@@ -95,8 +97,9 @@
#endif
/*
- * The assembly is volatilized to demark potential before-and-after side
- * effects if an interrupt or SMP collision were to occur.
+ * The assembly is volatilized to avoid code chunk removal by the compiler.
+ * GCC aggressively reorders operations and memory clobbering is necessary
+ * in order to avoid that for memory barriers.
*/
#define ATOMIC_ASM(NAME, TYPE, OP, CONS, V) \
static __inline void \
@@ -106,6 +109,15 @@
: "=m" (*p) \
: CONS (V), "m" (*p)); \
} \
+ \
+static __inline void \
+atomic_##NAME##_barr_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\
+{ \
+ __asm __volatile(MPLOCKED OP \
+ : "=m" (*p) \
+ : CONS (V), "m" (*p) \
+ : "memory"); \
+} \
struct __hack
/*
@@ -168,6 +180,8 @@
#endif /* CPU_DISABLE_CMPXCHG */
+#define atomic_cmpset_barr_int atomic_cmpset_int
+
/*
* Atomically add the value of v to the integer pointed to by p and return
* the previous value of *p.
@@ -194,18 +208,23 @@
* PentiumPro or higher, reads may pass writes, so for that case we have
* to use a serializing instruction (i.e. with LOCK) to do the load in
* SMP kernels. For UP kernels, however, the cache of the single processor
- * is always consistent, so we don't need any memory barriers.
+ * is always consistent, so we only need to take care of compiler.
*/
#define ATOMIC_STORE_LOAD(TYPE, LOP, SOP) \
static __inline u_##TYPE \
atomic_load_acq_##TYPE(volatile u_##TYPE *p) \
{ \
- return (*p); \
+ u_##TYPE tmp; \
+ \
+ tmp = *p; \
+ __asm __volatile("" : : : "memory"); \
+ return (tmp); \
} \
\
static __inline void \
atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\
{ \
+ __asm __volatile("" : : : "memory"); \
*p = v; \
} \
struct __hack
@@ -236,7 +255,8 @@
__asm __volatile(SOP \
: "=m" (*p), /* 0 */ \
"+r" (v) /* 1 */ \
- : "m" (*p)); /* 2 */ \
+ : "m" (*p) /* 2 */ \
+ : "memory"); \
} \
struct __hack
@@ -282,6 +302,14 @@
(u_int)src));
}
+static __inline int
+atomic_cmpset_barr_long(volatile u_long *dst, u_long exp, u_long src)
+{
+
+ return (atomic_cmpset_barr_int((volatile u_int *)dst, (u_int)exp,
+ (u_int)src));
+}
+
static __inline u_long
atomic_fetchadd_long(volatile u_long *p, u_long v)
{
@@ -331,46 +359,45 @@
#endif /* __GNUCLIKE_ASM */
-/* Acquire and release variants are identical to the normal ones. */
-#define atomic_set_acq_char atomic_set_char
-#define atomic_set_rel_char atomic_set_char
-#define atomic_clear_acq_char atomic_clear_char
-#define atomic_clear_rel_char atomic_clear_char
-#define atomic_add_acq_char atomic_add_char
-#define atomic_add_rel_char atomic_add_char
-#define atomic_subtract_acq_char atomic_subtract_char
-#define atomic_subtract_rel_char atomic_subtract_char
+#define atomic_set_acq_char atomic_set_barr_char
+#define atomic_set_rel_char atomic_set_barr_char
+#define atomic_clear_acq_char atomic_clear_barr_char
+#define atomic_clear_rel_char atomic_clear_barr_char
+#define atomic_add_acq_char atomic_add_barr_char
+#define atomic_add_rel_char atomic_add_barr_char
+#define atomic_subtract_acq_char atomic_subtract_barr_char
+#define atomic_subtract_rel_char atomic_subtract_barr_char
-#define atomic_set_acq_short atomic_set_short
-#define atomic_set_rel_short atomic_set_short
-#define atomic_clear_acq_short atomic_clear_short
-#define atomic_clear_rel_short atomic_clear_short
-#define atomic_add_acq_short atomic_add_short
-#define atomic_add_rel_short atomic_add_short
-#define atomic_subtract_acq_short atomic_subtract_short
-#define atomic_subtract_rel_short atomic_subtract_short
+#define atomic_set_acq_short atomic_set_barr_short
+#define atomic_set_rel_short atomic_set_barr_short
+#define atomic_clear_acq_short atomic_clear_barr_short
+#define atomic_clear_rel_short atomic_clear_barr_short
+#define atomic_add_acq_short atomic_add_barr_short
+#define atomic_add_rel_short atomic_add_barr_short
+#define atomic_subtract_acq_short atomic_subtract_barr_short
+#define atomic_subtract_rel_short atomic_subtract_barr_short
-#define atomic_set_acq_int atomic_set_int
-#define atomic_set_rel_int atomic_set_int
-#define atomic_clear_acq_int atomic_clear_int
-#define atomic_clear_rel_int atomic_clear_int
-#define atomic_add_acq_int atomic_add_int
-#define atomic_add_rel_int atomic_add_int
-#define atomic_subtract_acq_int atomic_subtract_int
-#define atomic_subtract_rel_int atomic_subtract_int
-#define atomic_cmpset_acq_int atomic_cmpset_int
-#define atomic_cmpset_rel_int atomic_cmpset_int
+#define atomic_set_acq_int atomic_set_barr_int
+#define atomic_set_rel_int atomic_set_barr_int
+#define atomic_clear_acq_int atomic_clear_barr_int
+#define atomic_clear_rel_int atomic_clear_barr_int
+#define atomic_add_acq_int atomic_add_barr_int
+#define atomic_add_rel_int atomic_add_barr_int
+#define atomic_subtract_acq_int atomic_subtract_barr_int
+#define atomic_subtract_rel_int atomic_subtract_barr_int
+#define atomic_cmpset_acq_int atomic_cmpset_barr_int
+#define atomic_cmpset_rel_int atomic_cmpset_barr_int
-#define atomic_set_acq_long atomic_set_long
-#define atomic_set_rel_long atomic_set_long
-#define atomic_clear_acq_long atomic_clear_long
-#define atomic_clear_rel_long atomic_clear_long
-#define atomic_add_acq_long atomic_add_long
-#define atomic_add_rel_long atomic_add_long
-#define atomic_subtract_acq_long atomic_subtract_long
-#define atomic_subtract_rel_long atomic_subtract_long
-#define atomic_cmpset_acq_long atomic_cmpset_long
-#define atomic_cmpset_rel_long atomic_cmpset_long
+#define atomic_set_acq_long atomic_set_barr_long
+#define atomic_set_rel_long atomic_set_barr_long
+#define atomic_clear_acq_long atomic_clear_barr_long
+#define atomic_clear_rel_long atomic_clear_barr_long
+#define atomic_add_acq_long atomic_add_barr_long
+#define atomic_add_rel_long atomic_add_barr_long
+#define atomic_subtract_acq_long atomic_subtract_barr_long
+#define atomic_subtract_rel_long atomic_subtract_barr_long
+#define atomic_cmpset_acq_long atomic_cmpset_barr_long
+#define atomic_cmpset_rel_long atomic_cmpset_barr_long
/* Operations on 8-bit bytes. */
#define atomic_set_8 atomic_set_char
==== //depot/projects/trustedbsd/capabilities/src/sys/netinet/tcp_input.c#13 (text+ko) ====
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/netinet/tcp_input.c,v 1.412 2009/10/05 22:24:13 rwatson Exp $");
+__FBSDID("$FreeBSD: src/sys/netinet/tcp_input.c,v 1.413 2009/10/06 20:35:41 rwatson Exp $");
#include "opt_ipfw.h" /* for ipfw_fwd */
#include "opt_inet.h"
@@ -180,26 +180,6 @@
SYSCTL_INT(_net_inet_tcp, OID_AUTO, read_locking, CTLFLAG_RW,
&tcp_read_locking, 0, "Enable read locking strategy");
-int tcp_rlock_atfirst;
-SYSCTL_INT(_net_inet_tcp, OID_AUTO, rlock_atfirst, CTLFLAG_RD,
- &tcp_rlock_atfirst, 0, "");
-
-int tcp_wlock_atfirst;
-SYSCTL_INT(_net_inet_tcp, OID_AUTO, tcp_wlock_atfirst, CTLFLAG_RD,
- &tcp_wlock_atfirst, 0, "");
-
-int tcp_wlock_upgraded;
-SYSCTL_INT(_net_inet_tcp, OID_AUTO, wlock_upgraded, CTLFLAG_RD,
- &tcp_wlock_upgraded, 0, "");
-
-int tcp_wlock_relocked;
-SYSCTL_INT(_net_inet_tcp, OID_AUTO, wlock_relocked, CTLFLAG_RD,
- &tcp_wlock_relocked, 0, "");
-
-int tcp_wlock_looped;
-SYSCTL_INT(_net_inet_tcp, OID_AUTO, wlock_looped, CTLFLAG_RD,
- &tcp_wlock_looped, 0, "");
-
VNET_DEFINE(struct inpcbhead, tcb);
VNET_DEFINE(struct inpcbinfo, tcbinfo);
#define tcb6 tcb /* for KAME src sync over BSD*'s */
@@ -505,11 +485,9 @@
tcp_read_locking == 0) {
INP_INFO_WLOCK(&V_tcbinfo);
ti_locked = TI_WLOCKED;
- tcp_wlock_atfirst++;
} else {
INP_INFO_RLOCK(&V_tcbinfo);
ti_locked = TI_RLOCKED;
- tcp_rlock_atfirst++;
}
findpcb:
@@ -662,15 +640,11 @@
ti_locked = TI_WLOCKED;
INP_WLOCK(inp);
if (in_pcbrele(inp)) {
- tcp_wlock_looped++;
inp = NULL;
goto findpcb;
}
- tcp_wlock_relocked++;
- } else {
+ } else
ti_locked = TI_WLOCKED;
- tcp_wlock_upgraded++;
- }
}
INP_INFO_WLOCK_ASSERT(&V_tcbinfo);
@@ -717,16 +691,12 @@
ti_locked = TI_WLOCKED;
INP_WLOCK(inp);
if (in_pcbrele(inp)) {
- tcp_wlock_looped++;
inp = NULL;
goto findpcb;
}
- tcp_wlock_relocked++;
goto relocked;
- } else {
+ } else
ti_locked = TI_WLOCKED;
- tcp_wlock_upgraded++;
- }
}
INP_INFO_WLOCK_ASSERT(&V_tcbinfo);
}
More information about the p4-projects
mailing list