diff options
Diffstat (limited to 'misc')
-rw-r--r-- | misc/Makefile | 5 | ||||
-rw-r--r-- | misc/Versions | 3 | ||||
-rw-r--r-- | misc/single_threaded.c | 27 | ||||
-rw-r--r-- | misc/sys/single_threaded.h | 33 |
4 files changed, 66 insertions, 2 deletions
diff --git a/misc/Makefile b/misc/Makefile index 67c5237f97..58959f6913 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -37,7 +37,8 @@ headers := sys/uio.h bits/uio-ext.h bits/uio_lim.h \ bits/syslog.h bits/syslog-ldbl.h bits/syslog-path.h bits/error.h \ bits/select2.h bits/hwcap.h sys/auxv.h \ sys/sysmacros.h bits/sysmacros.h bits/types/struct_iovec.h \ - bits/err-ldbl.h bits/error-ldbl.h + bits/err-ldbl.h bits/error-ldbl.h \ + sys/single_threaded.h routines := brk sbrk sstk ioctl \ readv writev preadv preadv64 pwritev pwritev64 \ @@ -72,7 +73,7 @@ routines := brk sbrk sstk ioctl \ fgetxattr flistxattr fremovexattr fsetxattr getxattr \ listxattr lgetxattr llistxattr lremovexattr lsetxattr \ removexattr setxattr getauxval ifunc-impl-list makedev \ - allocate_once fd_to_filename + allocate_once fd_to_filename single_threaded generated += tst-error1.mtrace tst-error1-mem.out \ tst-allocate_once.mtrace tst-allocate_once-mem.out diff --git a/misc/Versions b/misc/Versions index e749582369..95666f6548 100644 --- a/misc/Versions +++ b/misc/Versions @@ -161,6 +161,9 @@ libc { GLIBC_2.30 { twalk_r; } + GLIBC_2.32 { + __libc_single_threaded; + } GLIBC_PRIVATE { __madvise; __mktemp; diff --git a/misc/single_threaded.c b/misc/single_threaded.c new file mode 100644 index 0000000000..6d975c0eaa --- /dev/null +++ b/misc/single_threaded.c @@ -0,0 +1,27 @@ +/* Support for single-thread optimizations. Statically linked version. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#include <sys/single_threaded.h> + +/* In dynamically linked programs, this variable is initialized in + __libc_early_init (as false for inner libcs). */ +#ifdef SHARED +char __libc_single_threaded; +#else +char __libc_single_threaded = 1; +#endif diff --git a/misc/sys/single_threaded.h b/misc/sys/single_threaded.h new file mode 100644 index 0000000000..648fc2e00a --- /dev/null +++ b/misc/sys/single_threaded.h @@ -0,0 +1,33 @@ +/* Support for single-thread optimizations. + Copyright (C) 2020 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#ifndef _SYS_SINGLE_THREADED_H +#define _SYS_SINGLE_THREADED_H + +#include <features.h> + +__BEGIN_DECLS + +/* If this variable is non-zero, then the current thread is the only + thread in the process image. If it is zero, the process might be + multi-threaded. */ +extern char __libc_single_threaded; + +__END_DECLS + +#endif /* _SYS_SINGLE_THREADED_H */ |