mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
Add a configure option to enable lock elision and disable by default
Can be enabled with --enable-lock-elision=yes at configure time.
This commit is contained in:
parent
49186d21ef
commit
1717da59ae
@ -1,3 +1,11 @@
|
||||
2013-07-02 Andi Kleen <ak@linux.intel.com>
|
||||
|
||||
* config.h.in (ENABLE_LOCK_ELISION): Add.
|
||||
* configure.in (--enable-lock-elision): Add option.
|
||||
* manual/install.texi: Document --enable lock elision.
|
||||
* configure: Regenerate
|
||||
* INSTALL: Regenerate.
|
||||
|
||||
2013-07-02 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* sysdeps/i386/i686/multiarch/strcasecmp.S (__strcasecmp): Enable
|
||||
|
3
INSTALL
3
INSTALL
@ -133,6 +133,9 @@ will be used, and CFLAGS sets optimization options for the compiler.
|
||||
library. This option hardcodes the newly built C library path in
|
||||
dynamic tests so that they can be invoked directly.
|
||||
|
||||
`--enable-lock-elision=yes'
|
||||
Enable lock elision for pthread mutexes and rwlocks by default.
|
||||
|
||||
`--build=BUILD-SYSTEM'
|
||||
`--host=HOST-SYSTEM'
|
||||
These options are for cross-compiling. If you specify both
|
||||
|
@ -164,6 +164,9 @@
|
||||
/* Define if __stack_chk_guard canary should be randomized at program startup. */
|
||||
#undef ENABLE_STACKGUARD_RANDOMIZE
|
||||
|
||||
/* Define if lock elision should be enabled by default. */
|
||||
#undef ENABLE_LOCK_ELISION
|
||||
|
||||
/* Package description. */
|
||||
#undef PKGVERSION
|
||||
|
||||
|
16
configure
vendored
16
configure
vendored
@ -742,6 +742,7 @@ enable_versioning
|
||||
enable_oldest_abi
|
||||
enable_hardcoded_path_in_tests
|
||||
enable_stackguard_randomization
|
||||
enable_lock_elision
|
||||
enable_add_ons
|
||||
enable_hidden_plt
|
||||
enable_bind_now
|
||||
@ -1399,6 +1400,9 @@ Optional Features:
|
||||
--enable-stackguard-randomization
|
||||
initialize __stack_chk_guard canary with a random
|
||||
number at program start
|
||||
--enable-lock-elision=yes/no
|
||||
Enable lock elision for pthread mutexes and rwlocks
|
||||
by default
|
||||
--enable-add-ons[=DIRS...]
|
||||
configure and build add-ons in DIR1,DIR2,... search
|
||||
for add-ons if no parameter given
|
||||
@ -3472,6 +3476,18 @@ if test "$enable_stackguard_randomize" = yes; then
|
||||
|
||||
fi
|
||||
|
||||
# Check whether --enable-lock-elision was given.
|
||||
if test "${enable_lock_elision+set}" = set; then :
|
||||
enableval=$enable_lock_elision; enable_lock_elision=$enableval
|
||||
else
|
||||
enable_lock_elision=no
|
||||
fi
|
||||
|
||||
if test "$enable_lock_elision" = yes ; then
|
||||
$as_echo "#define ENABLE_LOCK_ELISION 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
# Check whether --enable-add-ons was given.
|
||||
if test "${enable_add_ons+set}" = set; then :
|
||||
enableval=$enable_add_ons;
|
||||
|
@ -184,6 +184,15 @@ if test "$enable_stackguard_randomize" = yes; then
|
||||
AC_DEFINE(ENABLE_STACKGUARD_RANDOMIZE)
|
||||
fi
|
||||
|
||||
AC_ARG_ENABLE([lock-elision],
|
||||
AC_HELP_STRING([--enable-lock-elision[=yes/no]],
|
||||
[Enable lock elision for pthread mutexes and rwlocks by default]),
|
||||
[enable_lock_elision=$enableval],
|
||||
[enable_lock_elision=no])
|
||||
if test "$enable_lock_elision" = yes ; then
|
||||
AC_DEFINE(ENABLE_LOCK_ELISION)
|
||||
fi
|
||||
|
||||
dnl Generic infrastructure for drop-in additions to libc.
|
||||
AC_ARG_ENABLE([add-ons],
|
||||
AC_HELP_STRING([--enable-add-ons@<:@=DIRS...@:>@],
|
||||
|
@ -160,6 +160,9 @@ By default, dynamic tests are linked to run with the installed C library.
|
||||
This option hardcodes the newly built C library path in dynamic tests
|
||||
so that they can be invoked directly.
|
||||
|
||||
@item --enable-lock-elision=yes
|
||||
Enable lock elision for pthread mutexes by default.
|
||||
|
||||
@item --build=@var{build-system}
|
||||
@itemx --host=@var{host-system}
|
||||
These options are for cross-compiling. If you specify both options and
|
||||
|
@ -1,3 +1,8 @@
|
||||
2013-07-02 Andi Kleen <ak@linux.intel.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/x86/elision-conf.c (elision_init):
|
||||
Check ENABLE_LOCK_ELISION.
|
||||
|
||||
2013-07-02 Andi Kleen <ak@linux.intel.com>
|
||||
|
||||
* pthread_mutexattr_settype.c (__pthread_mutexattr_settype):
|
||||
|
@ -16,6 +16,7 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include "config.h"
|
||||
#include <pthreadP.h>
|
||||
#include <init-arch.h>
|
||||
#include <elision-conf.h>
|
||||
@ -70,8 +71,10 @@ elision_init (int argc __attribute__ ((unused)),
|
||||
char **environ)
|
||||
{
|
||||
__elision_available = HAS_RTM;
|
||||
#ifdef ENABLE_LOCK_ELISION
|
||||
__pthread_force_elision = __libc_enable_secure ? 0 : __elision_available;
|
||||
__rwlock_rtm_enabled = __libc_enable_secure ? 0 : __elision_available;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef SHARED
|
||||
|
Loading…
Reference in New Issue
Block a user