Module Name: src Committed By: jruoho Date: Fri Dec 17 07:10:38 UTC 2010
Modified Files: src/distrib/sets/lists/comp: mi src/share/man/man3: Makefile cdefs.3 Added Files: src/share/man/man3: __insn_barrier.3 Log Message: Add __insn_barrier(3). XXX: Someone more knowledgeable may want to check this. To generate a diff of this commit: cvs rdiff -u -r1.1551 -r1.1552 src/distrib/sets/lists/comp/mi cvs rdiff -u -r1.61 -r1.62 src/share/man/man3/Makefile cvs rdiff -u -r0 -r1.1 src/share/man/man3/__insn_barrier.3 cvs rdiff -u -r1.1 -r1.2 src/share/man/man3/cdefs.3 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/comp/mi diff -u src/distrib/sets/lists/comp/mi:1.1551 src/distrib/sets/lists/comp/mi:1.1552 --- src/distrib/sets/lists/comp/mi:1.1551 Thu Dec 16 23:01:56 2010 +++ src/distrib/sets/lists/comp/mi Fri Dec 17 07:10:37 2010 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.1551 2010/12/16 23:01:56 joerg Exp $ +# $NetBSD: mi,v 1.1552 2010/12/17 07:10:37 jruoho Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -4910,6 +4910,7 @@ ./usr/share/man/cat3/__builtin_object_size.0 comp-c-catman .cat ./usr/share/man/cat3/__constfunc.0 comp-c-catman .cat ./usr/share/man/cat3/__dead.0 comp-c-catman .cat +./usr/share/man/cat3/__insn_barrier.0 comp-c-catman .cat ./usr/share/man/cat3/__noinline.0 comp-c-catman .cat ./usr/share/man/cat3/__packed.0 comp-c-catman .cat ./usr/share/man/cat3/__pure.0 comp-c-catman .cat @@ -10994,6 +10995,7 @@ ./usr/share/man/html3/__builtin_object_size.html comp-c-htmlman html ./usr/share/man/html3/__constfunc.html comp-c-htmlman html ./usr/share/man/html3/__dead.html comp-c-htmlman html +./usr/share/man/html3/__insn_barrier.html comp-c-htmlman html ./usr/share/man/html3/__noinline.html comp-c-htmlman html ./usr/share/man/html3/__packed.html comp-c-htmlman html ./usr/share/man/html3/__pure.html comp-c-htmlman html @@ -16878,6 +16880,7 @@ ./usr/share/man/man3/__builtin_object_size.3 comp-c-man .man ./usr/share/man/man3/__constfunc.3 comp-c-man .man ./usr/share/man/man3/__dead.3 comp-c-man .man +./usr/share/man/man3/__insn_barrier.3 comp-c-man .man ./usr/share/man/man3/__noinline.3 comp-c-man .man ./usr/share/man/man3/__packed.3 comp-c-man .man ./usr/share/man/man3/__pure.3 comp-c-man .man Index: src/share/man/man3/Makefile diff -u src/share/man/man3/Makefile:1.61 src/share/man/man3/Makefile:1.62 --- src/share/man/man3/Makefile:1.61 Thu Dec 16 17:47:54 2010 +++ src/share/man/man3/Makefile Fri Dec 17 07:10:38 2010 @@ -1,8 +1,9 @@ -# $NetBSD: Makefile,v 1.61 2010/12/16 17:47:54 jruoho Exp $ +# $NetBSD: Makefile,v 1.62 2010/12/17 07:10:38 jruoho Exp $ # @(#)Makefile 8.2 (Berkeley) 12/13/93 MAN= _DIAGASSERT.3 __CONCAT.3 __UNCONST.3 CMSG_DATA.3 \ - __arraycount.3 assert.3 attribute.3 bits.3 bitstring.3 \ + __arraycount.3 __insn_barrier.3 \ + assert.3 attribute.3 bits.3 bitstring.3 \ cdefs.3 dirent.3 dlfcn.3 dl_iterate_phdr.3 end.3 \ fast_divide32.3 ffs32.3 gcq.3 \ ilog2.3 intro.3 inttypes.3 iso646.3 \ Index: src/share/man/man3/cdefs.3 diff -u src/share/man/man3/cdefs.3:1.1 src/share/man/man3/cdefs.3:1.2 --- src/share/man/man3/cdefs.3:1.1 Thu Dec 16 10:19:14 2010 +++ src/share/man/man3/cdefs.3 Fri Dec 17 07:10:38 2010 @@ -1,4 +1,4 @@ -.\" $NetBSD: cdefs.3,v 1.1 2010/12/16 10:19:14 jruoho Exp $ +.\" $NetBSD: cdefs.3,v 1.2 2010/12/17 07:10:38 jruoho Exp $ .\" .\" Copyright (c) 2010 The NetBSD Foundation, Inc. .\" All rights reserved. @@ -27,7 +27,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd December 16, 2010 +.Dd December 17, 2010 .Dt CDEFS 3 .Os .Sh NAME @@ -54,10 +54,11 @@ .Tn C99 . .It Macros and definitions specific to compilers, preprocessors, and linkers; see -.Xr attribute 3 , .Xr __CONCAT 3 , +.Xr __UNCONST 3 , +.Xr __insn_barrier 3 , and -.Xr __UNCONST 3 . +.Xr attribute 3 . .It Utility macros provided for convenience; see .Xr __arraycount 3 @@ -87,7 +88,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: cdefs.3,v 1.1 2010/12/16 10:19:14 jruoho Exp $"); +__RCSID("$NetBSD: cdefs.3,v 1.2 2010/12/17 07:10:38 jruoho Exp $"); .Ed .Pp It is possible to identify the Added files: Index: src/share/man/man3/__insn_barrier.3 diff -u /dev/null src/share/man/man3/__insn_barrier.3:1.1 --- /dev/null Fri Dec 17 07:10:38 2010 +++ src/share/man/man3/__insn_barrier.3 Fri Dec 17 07:10:38 2010 @@ -0,0 +1,64 @@ +.\" $NetBSD: __insn_barrier.3,v 1.1 2010/12/17 07:10:38 jruoho Exp $ +.\" +.\" Copyright (c) 2010 Jukka Ruohonen <jruoho...@iki.fi> +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\" POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd December 17, 2010 +.Dt __INSN_BARRIER 3 +.Os +.Sh NAME +.Nm __insn_barrier +.Nd compiler reorder barrier +.Sh SYNOPSIS +.In sys/cdefs.h +.Ft void +.Fn __insn_barrier +.Sh DESCRIPTION +The +.Fn __insn_barrier +macro prevents +.Tn GCC +from moving code across the barrier. +In other words, the compiler is not allowed to reorder read and write +commands below the barrier with the code preceding the barrier. +Like with the +.Em volatile +type qualifier, +.Fn __insn_barrier +may be necessary in some corner cases to prevent the compiler +from misoptimizing. +.Sh SEE ALSO +.Xr gcc 1 , +.Xr cdefs 3 +.Rs +.%A Paul E. McKenney +.%T Memory Barriers: a Hardware View for Software Hackers +.%D June 7, 2010 +.%U http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2010.06.07c.pdf +.Re +.Sh HISTORY +The +.Fn __insn_barrier +macro first appeared in +.Nx 2.0 .