mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 14:50:05 +00:00
Linux: Cleanups after librt move
librt.so is no longer installed for PTHREAD_IN_LIBC, and tests are not linked against it. $(librt) is introduced globally for shared tests that need to be linked for both PTHREAD_IN_LIBC and !PTHREAD_IN_LIBC. GLIBC_PRIVATE symbols that were needed during the transition are removed again. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
parent
477910b83e
commit
30639e79d3
@ -1174,7 +1174,6 @@ localplt-built-dso := $(addprefix $(common-objpfx),\
|
|||||||
libc.so \
|
libc.so \
|
||||||
elf/ld.so \
|
elf/ld.so \
|
||||||
math/libm.so \
|
math/libm.so \
|
||||||
rt/librt.so \
|
|
||||||
dlfcn/libdl.so \
|
dlfcn/libdl.so \
|
||||||
resolv/libresolv.so \
|
resolv/libresolv.so \
|
||||||
)
|
)
|
||||||
@ -1187,6 +1186,9 @@ endif
|
|||||||
ifeq ($(build-crypt),yes)
|
ifeq ($(build-crypt),yes)
|
||||||
localplt-built-dso += $(addprefix $(common-objpfx), crypt/libcrypt.so)
|
localplt-built-dso += $(addprefix $(common-objpfx), crypt/libcrypt.so)
|
||||||
endif
|
endif
|
||||||
|
ifneq ($(pthread-in-libc),yes)
|
||||||
|
localplt-built-dso += $(addprefix $(common-objpfx), rt/librt.so)
|
||||||
|
endif
|
||||||
|
|
||||||
vpath localplt.data $(+sysdep_dirs)
|
vpath localplt.data $(+sysdep_dirs)
|
||||||
|
|
||||||
|
@ -148,12 +148,6 @@ CFLAGS-brk.op = $(no-stack-protector)
|
|||||||
|
|
||||||
include ../Rules
|
include ../Rules
|
||||||
|
|
||||||
ifeq (yes,$(build-shared))
|
|
||||||
librt = $(common-objpfx)rt/librt.so
|
|
||||||
else
|
|
||||||
librt = $(common-objpfx)rt/librt.a
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(objpfx)libg.a: $(dep-dummy-lib); $(make-dummy-lib)
|
$(objpfx)libg.a: $(dep-dummy-lib); $(make-dummy-lib)
|
||||||
|
|
||||||
$(objpfx)tst-tsearch: $(libm)
|
$(objpfx)tst-tsearch: $(libm)
|
||||||
|
@ -535,15 +535,6 @@ $(objpfx)tst-tls6.out: tst-tls6.sh $(objpfx)tst-tls5 \
|
|||||||
$(evaluate-test)
|
$(evaluate-test)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (yes,$(build-shared))
|
|
||||||
librt = $(common-objpfx)rt/librt.so
|
|
||||||
else
|
|
||||||
librt = $(common-objpfx)rt/librt.a
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(objpfx)tst-cancel17: $(librt)
|
|
||||||
$(objpfx)tst-cancelx17: $(librt)
|
|
||||||
|
|
||||||
LDLIBS-tst-cancel24 = -Wl,--no-as-needed -lstdc++
|
LDLIBS-tst-cancel24 = -Wl,--no-as-needed -lstdc++
|
||||||
LDLIBS-tst-cancel24-static = $(LDLIBS-tst-cancel24)
|
LDLIBS-tst-cancel24-static = $(LDLIBS-tst-cancel24)
|
||||||
|
|
||||||
|
13
rt/Makefile
13
rt/Makefile
@ -28,9 +28,7 @@ routines = \
|
|||||||
shm_open \
|
shm_open \
|
||||||
shm_unlink \
|
shm_unlink \
|
||||||
|
|
||||||
librt-routines = \
|
librt-routines = librt-compat
|
||||||
librt-compat \
|
|
||||||
|
|
||||||
librt-shared-only-routines = librt-compat
|
librt-shared-only-routines = librt-compat
|
||||||
|
|
||||||
$(librt-routines-var) += \
|
$(librt-routines-var) += \
|
||||||
@ -64,6 +62,13 @@ $(librt-routines-var) += \
|
|||||||
timer_gettime \
|
timer_gettime \
|
||||||
timer_settime \
|
timer_settime \
|
||||||
|
|
||||||
|
ifeq ($(pthread-in-libc),yes)
|
||||||
|
# Pretend that librt.so is a linker script, so that the symbolic
|
||||||
|
# link is not installed.
|
||||||
|
install-lib-ldscripts = librt.so
|
||||||
|
$(inst_libdir)/librt.so:
|
||||||
|
endif
|
||||||
|
|
||||||
tests := tst-shm tst-timer tst-timer2 \
|
tests := tst-shm tst-timer tst-timer2 \
|
||||||
tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \
|
tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \
|
||||||
tst-aio7 tst-aio8 tst-aio9 tst-aio10 \
|
tst-aio7 tst-aio8 tst-aio9 tst-aio10 \
|
||||||
@ -98,6 +103,7 @@ LDFLAGS-rt.so = -Wl,--enable-new-dtags,-z,nodelete
|
|||||||
|
|
||||||
$(objpfx)librt.so: $(shared-thread-library)
|
$(objpfx)librt.so: $(shared-thread-library)
|
||||||
|
|
||||||
|
ifneq ($(pthread-in-libc),yes)
|
||||||
ifeq (yes,$(build-shared))
|
ifeq (yes,$(build-shared))
|
||||||
$(addprefix $(objpfx),$(tests) $(tests-internal)): \
|
$(addprefix $(objpfx),$(tests) $(tests-internal)): \
|
||||||
$(objpfx)librt.so $(shared-thread-library)
|
$(objpfx)librt.so $(shared-thread-library)
|
||||||
@ -105,5 +111,6 @@ else
|
|||||||
$(addprefix $(objpfx),$(tests)) $(tests-internal): \
|
$(addprefix $(objpfx),$(tests)) $(tests-internal): \
|
||||||
$(objpfx)librt.a $(static-thread-library)
|
$(objpfx)librt.a $(static-thread-library)
|
||||||
endif
|
endif
|
||||||
|
endif # !$(pthread-in-libc)
|
||||||
|
|
||||||
tst-mqueue7-ARGS = -- $(host-test-program-cmd)
|
tst-mqueue7-ARGS = -- $(host-test-program-cmd)
|
||||||
|
13
rt/Versions
13
rt/Versions
@ -95,19 +95,6 @@ libc {
|
|||||||
shm_open;
|
shm_open;
|
||||||
shm_unlink;
|
shm_unlink;
|
||||||
}
|
}
|
||||||
%if PTHREAD_IN_LIBC
|
|
||||||
GLIBC_PRIVATE {
|
|
||||||
__aio_enqueue_request;
|
|
||||||
__aio_find_req;
|
|
||||||
__aio_find_req_fd;
|
|
||||||
__aio_free_request;
|
|
||||||
__aio_notify;
|
|
||||||
__aio_notify_only;
|
|
||||||
__aio_remove_request;
|
|
||||||
__aio_requests_mutex;
|
|
||||||
__aio_sigqueue;
|
|
||||||
}
|
|
||||||
%endif
|
|
||||||
}
|
}
|
||||||
librt {
|
librt {
|
||||||
GLIBC_2.1 {
|
GLIBC_2.1 {
|
||||||
|
@ -735,24 +735,10 @@ add_request_to_runlist (struct requestlist *newrequest)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if PTHREAD_IN_LIBC
|
#if PTHREAD_IN_LIBC
|
||||||
libc_hidden_data_def (__aio_requests_mutex)
|
|
||||||
libc_hidden_def (__aio_enqueue_request)
|
|
||||||
libc_hidden_def (__aio_find_req)
|
|
||||||
libc_hidden_def (__aio_find_req_fd)
|
|
||||||
libc_hidden_def (__aio_free_request)
|
|
||||||
libc_hidden_def (__aio_remove_request)
|
|
||||||
|
|
||||||
versioned_symbol (libc, __aio_init, aio_init, GLIBC_2_34);
|
versioned_symbol (libc, __aio_init, aio_init, GLIBC_2_34);
|
||||||
# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
|
# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34)
|
||||||
compat_symbol (librt, __aio_init, aio_init, GLIBC_2_1);
|
compat_symbol (librt, __aio_init, aio_init, GLIBC_2_1);
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
#else /* !PTHREAD_IN_LIBC */
|
#else /* !PTHREAD_IN_LIBC */
|
||||||
librt_hidden_data_def (__aio_requests_mutex)
|
|
||||||
librt_hidden_def (__aio_enqueue_request)
|
|
||||||
librt_hidden_def (__aio_find_req)
|
|
||||||
librt_hidden_def (__aio_find_req_fd)
|
|
||||||
librt_hidden_def (__aio_free_request)
|
|
||||||
librt_hidden_def (__aio_remove_request)
|
|
||||||
weak_alias (__aio_init, aio_init)
|
weak_alias (__aio_init, aio_init)
|
||||||
#endif /* !PTHREAD_IN_LIBC */
|
#endif /* !PTHREAD_IN_LIBC */
|
||||||
|
@ -160,11 +160,3 @@ __aio_notify (struct requestlist *req)
|
|||||||
waitlist = next;
|
waitlist = next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if PTHREAD_IN_LIBC
|
|
||||||
libc_hidden_def (__aio_notify)
|
|
||||||
libc_hidden_def (__aio_notify_only)
|
|
||||||
#else
|
|
||||||
librt_hidden_def (__aio_notify)
|
|
||||||
librt_hidden_def (__aio_notify_only)
|
|
||||||
#endif
|
|
||||||
|
@ -28,5 +28,4 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
|
|||||||
__set_errno (ENOSYS);
|
__set_errno (ENOSYS);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
librt_hidden_def (__aio_sigqueue)
|
|
||||||
stub_warning (__aio_sigqueue)
|
stub_warning (__aio_sigqueue)
|
||||||
|
@ -87,55 +87,36 @@ struct requestlist
|
|||||||
|
|
||||||
|
|
||||||
/* Lock for global I/O list of requests. */
|
/* Lock for global I/O list of requests. */
|
||||||
extern pthread_mutex_t __aio_requests_mutex;
|
extern pthread_mutex_t __aio_requests_mutex attribute_hidden;
|
||||||
|
|
||||||
|
|
||||||
/* Enqueue request. */
|
/* Enqueue request. */
|
||||||
extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
|
extern struct requestlist *__aio_enqueue_request (aiocb_union *aiocbp,
|
||||||
int operation);
|
int operation)
|
||||||
|
attribute_hidden;
|
||||||
|
|
||||||
/* Find request entry for given AIO control block. */
|
/* Find request entry for given AIO control block. */
|
||||||
extern struct requestlist *__aio_find_req (aiocb_union *elem);
|
extern struct requestlist *__aio_find_req (aiocb_union *elem) attribute_hidden;
|
||||||
|
|
||||||
/* Find request entry for given file descriptor. */
|
/* Find request entry for given file descriptor. */
|
||||||
extern struct requestlist *__aio_find_req_fd (int fildes);
|
extern struct requestlist *__aio_find_req_fd (int fildes) attribute_hidden;
|
||||||
|
|
||||||
/* Remove request from the list. */
|
/* Remove request from the list. */
|
||||||
extern void __aio_remove_request (struct requestlist *last,
|
extern void __aio_remove_request (struct requestlist *last,
|
||||||
struct requestlist *req, int all);
|
struct requestlist *req, int all)
|
||||||
|
attribute_hidden;
|
||||||
|
|
||||||
/* Release the entry for the request. */
|
/* Release the entry for the request. */
|
||||||
extern void __aio_free_request (struct requestlist *req);
|
extern void __aio_free_request (struct requestlist *req) attribute_hidden;
|
||||||
|
|
||||||
/* Notify initiator of request and tell this everybody listening. */
|
/* Notify initiator of request and tell this everybody listening. */
|
||||||
extern void __aio_notify (struct requestlist *req);
|
extern void __aio_notify (struct requestlist *req) attribute_hidden;
|
||||||
|
|
||||||
/* Notify initiator of request. */
|
/* Notify initiator of request. */
|
||||||
extern int __aio_notify_only (struct sigevent *sigev);
|
extern int __aio_notify_only (struct sigevent *sigev) attribute_hidden;
|
||||||
|
|
||||||
/* Send the signal. */
|
/* Send the signal. */
|
||||||
extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid);
|
extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
|
||||||
|
attribute_hidden;
|
||||||
#if PTHREAD_IN_LIBC
|
|
||||||
libc_hidden_proto (__aio_enqueue_request)
|
|
||||||
libc_hidden_proto (__aio_find_req)
|
|
||||||
libc_hidden_proto (__aio_find_req_fd)
|
|
||||||
libc_hidden_proto (__aio_free_request)
|
|
||||||
libc_hidden_proto (__aio_notify)
|
|
||||||
libc_hidden_proto (__aio_notify_only)
|
|
||||||
libc_hidden_proto (__aio_remove_request)
|
|
||||||
libc_hidden_proto (__aio_requests_mutex)
|
|
||||||
libc_hidden_proto (__aio_sigqueue)
|
|
||||||
#else
|
|
||||||
librt_hidden_proto (__aio_enqueue_request)
|
|
||||||
librt_hidden_proto (__aio_find_req)
|
|
||||||
librt_hidden_proto (__aio_find_req_fd)
|
|
||||||
librt_hidden_proto (__aio_free_request)
|
|
||||||
librt_hidden_proto (__aio_notify)
|
|
||||||
librt_hidden_proto (__aio_notify_only)
|
|
||||||
librt_hidden_proto (__aio_remove_request)
|
|
||||||
librt_hidden_proto (__aio_requests_mutex)
|
|
||||||
librt_hidden_proto (__aio_sigqueue)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* aio_misc.h */
|
#endif /* aio_misc.h */
|
||||||
|
@ -7,4 +7,10 @@ shared-thread-library = $(common-objpfx)htl/libpthread.so
|
|||||||
static-thread-library = $(..)htl/libpthread_syms.a $(common-objpfx)htl/libpthread.a
|
static-thread-library = $(..)htl/libpthread_syms.a $(common-objpfx)htl/libpthread.a
|
||||||
bounded-thread-library = $(static-thread-library)
|
bounded-thread-library = $(static-thread-library)
|
||||||
|
|
||||||
|
ifeq (yes,$(build-shared))
|
||||||
|
librt = $(common-objpfx)rt/librt.so
|
||||||
|
else
|
||||||
|
librt = $(common-objpfx)rt/librt.a $(static-thread-library)
|
||||||
|
endif
|
||||||
|
|
||||||
rpath-dirs += htl
|
rpath-dirs += htl
|
||||||
|
@ -24,6 +24,7 @@ have-thread-library = yes
|
|||||||
# The thread library is integrated.
|
# The thread library is integrated.
|
||||||
shared-thread-library =
|
shared-thread-library =
|
||||||
static-thread-library =
|
static-thread-library =
|
||||||
|
librt =
|
||||||
|
|
||||||
# Some tests need this to load their own test objects, and system
|
# Some tests need this to load their own test objects, and system
|
||||||
# libraries used by memusagestat need to link against the empty
|
# libraries used by memusagestat need to link against the empty
|
||||||
|
@ -17,13 +17,7 @@
|
|||||||
# <https://www.gnu.org/licenses/>.
|
# <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
ifeq ($(subdir),rt)
|
ifeq ($(subdir),rt)
|
||||||
|
$(objpfx)tst-timer: $(librt)
|
||||||
ifeq (yes,$(build-shared))
|
|
||||||
$(objpfx)tst-timer: $(objpfx)librt.so $(shared-thread-library)
|
|
||||||
else
|
|
||||||
$(objpfx)tst-timer: $(objpfx)librt.a $(static-thread-library)
|
|
||||||
endif
|
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (,$(filter $(subdir),htl nptl))
|
ifneq (,$(filter $(subdir),htl nptl))
|
||||||
@ -232,12 +226,10 @@ $(objpfx)tst-cleanup0.out: /dev/null $(objpfx)tst-cleanup0
|
|||||||
$(objpfx)tst-cleanup0-cmp.out: $(..)sysdeps/pthread/tst-cleanup0.expect $(objpfx)tst-cleanup0.out
|
$(objpfx)tst-cleanup0-cmp.out: $(..)sysdeps/pthread/tst-cleanup0.expect $(objpfx)tst-cleanup0.out
|
||||||
cmp $^ > $@; \
|
cmp $^ > $@; \
|
||||||
$(evaluate-test)
|
$(evaluate-test)
|
||||||
|
|
||||||
$(objpfx)tst-cancel28: $(common-objpfx)rt/librt.so
|
|
||||||
else
|
|
||||||
$(objpfx)tst-cancel28: $(common-objpfx)rt/librt.a
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
$(objpfx)tst-cancel28: $(librt)
|
||||||
|
|
||||||
$(objpfx)tst-fini1: $(shared-thread-library) $(objpfx)tst-fini1mod.so
|
$(objpfx)tst-fini1: $(shared-thread-library) $(objpfx)tst-fini1mod.so
|
||||||
|
|
||||||
$(objpfx)tst-fini1mod.so: $(shared-thread-library)
|
$(objpfx)tst-fini1mod.so: $(shared-thread-library)
|
||||||
|
@ -137,19 +137,6 @@ tests-time64 += \
|
|||||||
|
|
||||||
CFLAGS-tst-sigcontext-get_pc.c = -fasynchronous-unwind-tables
|
CFLAGS-tst-sigcontext-get_pc.c = -fasynchronous-unwind-tables
|
||||||
|
|
||||||
ifeq (yes,$(build-shared))
|
|
||||||
librt = $(common-objpfx)rt/librt.so
|
|
||||||
else
|
|
||||||
librt = $(common-objpfx)rt/librt.a
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(objpfx)tst-ppoll: $(librt)
|
|
||||||
$(objpfx)tst-ppoll-time64: $(librt)
|
|
||||||
$(objpfx)tst-sigtimedwait: $(librt)
|
|
||||||
$(objpfx)tst-sigtimedwait-time64: $(librt)
|
|
||||||
$(objpfx)tst-timerfd: $(librt)
|
|
||||||
$(objpfx)tst-timerfd-time64: $(librt)
|
|
||||||
|
|
||||||
# Generate the list of SYS_* macros for the system calls (__NR_*
|
# Generate the list of SYS_* macros for the system calls (__NR_*
|
||||||
# macros). The file syscall-names.list contains all possible system
|
# macros). The file syscall-names.list contains all possible system
|
||||||
# call names, and the generated header file produces SYS_* macros for
|
# call names, and the generated header file produces SYS_* macros for
|
||||||
|
@ -291,12 +291,6 @@ libc {
|
|||||||
__pread64_nocancel;
|
__pread64_nocancel;
|
||||||
__close_nocancel;
|
__close_nocancel;
|
||||||
__sigtimedwait;
|
__sigtimedwait;
|
||||||
__timer_active_sigev_thread;
|
|
||||||
__timer_active_sigev_thread_lock;
|
|
||||||
__timer_compat_list;
|
|
||||||
__timer_helper_once;
|
|
||||||
__timer_helper_tid;
|
|
||||||
__timer_start_helper_thread;
|
|
||||||
# functions used by nscd
|
# functions used by nscd
|
||||||
__netlink_assert_response;
|
__netlink_assert_response;
|
||||||
}
|
}
|
||||||
|
@ -44,4 +44,3 @@ __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
|
|||||||
|
|
||||||
return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info);
|
return INLINE_SYSCALL (rt_sigqueueinfo, 3, info.si_pid, sig, &info);
|
||||||
}
|
}
|
||||||
libc_hidden_def (__aio_sigqueue)
|
|
||||||
|
@ -26,27 +26,23 @@
|
|||||||
extern int __no_posix_timers attribute_hidden;
|
extern int __no_posix_timers attribute_hidden;
|
||||||
|
|
||||||
/* Callback to start helper thread. */
|
/* Callback to start helper thread. */
|
||||||
extern void __timer_start_helper_thread (void);
|
extern void __timer_start_helper_thread (void) attribute_hidden;
|
||||||
libc_hidden_proto (__timer_start_helper_thread)
|
|
||||||
|
|
||||||
/* Control variable for helper thread creation. */
|
/* Control variable for helper thread creation. */
|
||||||
extern pthread_once_t __timer_helper_once;
|
extern pthread_once_t __timer_helper_once attribute_hidden;
|
||||||
libc_hidden_proto (__timer_helper_once)
|
|
||||||
|
|
||||||
/* Called from fork so that the new subprocess re-creates the
|
/* Called from fork so that the new subprocess re-creates the
|
||||||
notification thread if necessary. */
|
notification thread if necessary. */
|
||||||
void __timer_fork_subprocess (void) attribute_hidden;
|
void __timer_fork_subprocess (void) attribute_hidden;
|
||||||
|
|
||||||
/* TID of the helper thread. */
|
/* TID of the helper thread. */
|
||||||
extern pid_t __timer_helper_tid;
|
extern pid_t __timer_helper_tid attribute_hidden;
|
||||||
libc_hidden_proto (__timer_helper_tid)
|
|
||||||
|
|
||||||
/* List of active SIGEV_THREAD timers. */
|
/* List of active SIGEV_THREAD timers. */
|
||||||
extern struct timer *__timer_active_sigev_thread;
|
extern struct timer *__timer_active_sigev_thread attribute_hidden;
|
||||||
libc_hidden_proto (__timer_active_sigev_thread)
|
|
||||||
/* Lock for __timer_active_sigev_thread. */
|
/* Lock for __timer_active_sigev_thread. */
|
||||||
extern pthread_mutex_t __timer_active_sigev_thread_lock;
|
extern pthread_mutex_t __timer_active_sigev_thread_lock attribute_hidden;
|
||||||
libc_hidden_proto (__timer_active_sigev_thread_lock)
|
|
||||||
|
|
||||||
extern __typeof (timer_create) __timer_create;
|
extern __typeof (timer_create) __timer_create;
|
||||||
libc_hidden_proto (__timer_create)
|
libc_hidden_proto (__timer_create)
|
||||||
@ -118,5 +114,4 @@ timerid_to_kernel_timer (timer_t timerid)
|
|||||||
#if TIMER_T_WAS_INT_COMPAT
|
#if TIMER_T_WAS_INT_COMPAT
|
||||||
# define OLD_TIMER_MAX 256
|
# define OLD_TIMER_MAX 256
|
||||||
extern timer_t __timer_compat_list[OLD_TIMER_MAX];
|
extern timer_t __timer_compat_list[OLD_TIMER_MAX];
|
||||||
libc_hidden_proto (__timer_compat_list)
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -146,8 +146,7 @@ compat_symbol (librt, ___timer_create, timer_create, GLIBC_2_3_3);
|
|||||||
# endif
|
# endif
|
||||||
|
|
||||||
# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
|
# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_2, GLIBC_2_3_3)
|
||||||
timer_t __timer_compat_list[OLD_TIMER_MAX] __attribute__ ((nocommon));
|
timer_t __timer_compat_list[OLD_TIMER_MAX];
|
||||||
libc_hidden_data_def (__timer_compat_list)
|
|
||||||
|
|
||||||
int
|
int
|
||||||
__timer_create_old (clockid_t clock_id, struct sigevent *evp, int *timerid)
|
__timer_create_old (clockid_t clock_id, struct sigevent *evp, int *timerid)
|
||||||
|
@ -26,13 +26,10 @@
|
|||||||
|
|
||||||
|
|
||||||
/* List of active SIGEV_THREAD timers. */
|
/* List of active SIGEV_THREAD timers. */
|
||||||
struct timer *__timer_active_sigev_thread __attribute__ ((nocommon));
|
struct timer *__timer_active_sigev_thread;
|
||||||
libc_hidden_data_def (__timer_active_sigev_thread)
|
|
||||||
|
|
||||||
/* Lock for _timer_active_sigev_thread. */
|
/* Lock for _timer_active_sigev_thread. */
|
||||||
pthread_mutex_t __timer_active_sigev_thread_lock __attribute__ ((nocommon))
|
pthread_mutex_t __timer_active_sigev_thread_lock = PTHREAD_MUTEX_INITIALIZER;
|
||||||
= PTHREAD_MUTEX_INITIALIZER;
|
|
||||||
libc_hidden_data_def (__timer_active_sigev_thread_lock)
|
|
||||||
|
|
||||||
struct thread_start_data
|
struct thread_start_data
|
||||||
{
|
{
|
||||||
@ -112,12 +109,10 @@ timer_helper_thread (void *arg)
|
|||||||
/* Control variable for helper thread creation. */
|
/* Control variable for helper thread creation. */
|
||||||
pthread_once_t __timer_helper_once __attribute__ ((nocommon))
|
pthread_once_t __timer_helper_once __attribute__ ((nocommon))
|
||||||
= PTHREAD_ONCE_INIT;
|
= PTHREAD_ONCE_INIT;
|
||||||
libc_hidden_data_def (__timer_helper_once)
|
|
||||||
|
|
||||||
|
|
||||||
/* TID of the helper thread. */
|
/* TID of the helper thread. */
|
||||||
pid_t __timer_helper_tid __attribute__ ((nocommon));
|
pid_t __timer_helper_tid __attribute__ ((nocommon));
|
||||||
libc_hidden_data_def (__timer_helper_tid)
|
|
||||||
|
|
||||||
|
|
||||||
/* Reset variables so that after a fork a new helper thread gets started. */
|
/* Reset variables so that after a fork a new helper thread gets started. */
|
||||||
@ -159,4 +154,3 @@ __timer_start_helper_thread (void)
|
|||||||
/* No need for the attribute anymore. */
|
/* No need for the attribute anymore. */
|
||||||
__pthread_attr_destroy (&attr);
|
__pthread_attr_destroy (&attr);
|
||||||
}
|
}
|
||||||
libc_hidden_def (__timer_start_helper_thread)
|
|
||||||
|
@ -39,11 +39,5 @@ include ../Rules
|
|||||||
CFLAGS-msgrcv.c += -fexceptions -fasynchronous-unwind-tables
|
CFLAGS-msgrcv.c += -fexceptions -fasynchronous-unwind-tables
|
||||||
CFLAGS-msgsnd.c += -fexceptions -fasynchronous-unwind-tables
|
CFLAGS-msgsnd.c += -fexceptions -fasynchronous-unwind-tables
|
||||||
|
|
||||||
ifeq (yes,$(build-shared))
|
|
||||||
librt = $(common-objpfx)rt/librt.so
|
|
||||||
else
|
|
||||||
librt = $(common-objpfx)rt/librt.a
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(objpfx)test-sysvsem: $(librt)
|
$(objpfx)test-sysvsem: $(librt)
|
||||||
$(objpfx)test-sysvsem-time64: $(librt)
|
$(objpfx)test-sysvsem-time64: $(librt)
|
||||||
|
@ -86,12 +86,6 @@ $(objpfx)tst-strftime2.out: $(gen-locales)
|
|||||||
$(objpfx)tst-strftime3.out: $(gen-locales)
|
$(objpfx)tst-strftime3.out: $(gen-locales)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (yes,$(build-shared))
|
|
||||||
librt = $(common-objpfx)rt/librt.so
|
|
||||||
else
|
|
||||||
librt = $(common-objpfx)rt/librt.a
|
|
||||||
endif
|
|
||||||
|
|
||||||
$(objpfx)tst-clock_nanosleep: $(librt)
|
$(objpfx)tst-clock_nanosleep: $(librt)
|
||||||
$(objpfx)tst-clock_nanosleep-time64: $(librt)
|
$(objpfx)tst-clock_nanosleep-time64: $(librt)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user