diff options
author | Carmelo Amoroso <carmelo.amoroso@st.com> | 2007-11-19 15:35:12 +0000 |
---|---|---|
committer | Carmelo Amoroso <carmelo.amoroso@st.com> | 2007-11-19 15:35:12 +0000 |
commit | 414d8e5f2a73aff8e9404684571a65f85b27bf89 (patch) | |
tree | 879ac217d477f76cf965b244d98b383b663ff47b /libpthread/nptl/sysdeps/unix/sysv/linux | |
parent | 381fb7688d356f03e35b9254796adb29c941532b (diff) | |
download | uClibc-alpine-414d8e5f2a73aff8e9404684571a65f85b27bf89.tar.bz2 uClibc-alpine-414d8e5f2a73aff8e9404684571a65f85b27bf89.tar.xz |
Synch nptl branch with SH port: as requested by sjhill for mips-ash4 merge
Diffstat (limited to 'libpthread/nptl/sysdeps/unix/sysv/linux')
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in | 75 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/close.S | 14 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/fork.c | 1 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/open.S | 14 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/read.S | 12 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/sigwait.c | 2 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/waitpid.S | 19 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/write.S | 12 |
8 files changed, 108 insertions, 41 deletions
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in index 0c73e61c2..9826a3de4 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in @@ -5,34 +5,28 @@ # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. # -libpthread_CSRC := pt-raise.c pthread_attr_getaffinity.c \ - pthread_attr_setaffinity.c pthread_getaffinity.c \ - pthread_getcpuclockid.c pthread_kill.c \ - pthread_mutex_cond_lock.c pthread_setaffinity.c \ - pthread_yield.c sem_post.c sem_timedwait.c \ - sem_trywait.c sem_wait.c pt-fork.c \ - sigtimedwait.c sigwaitinfo.c pt-sigwait.c pt-sleep.c \ - pt-msgsnd.c pt-msgrcv.c pt-waitpid.c pt-wait.c \ - pt-open64.c pt-tcdrain.c pt-fcntl.c pt-pread_pwrite.c \ - pt-llseek.c pt-fsync.c - -libpthread_SSRC := pt-close.S pt-open.S pt-read.S pt-write.S \ - pt-nanosleep.S pt-pause.S pt-lseek.S pt-accept.S \ - pt-connect.S pt-recv.S pt-recvfrom.S pt-recvmsg.S \ - pt-send.S pt-sendmsg.S pt-sendto.S - -libc_CSRC := libc_pthread_init.c libc_multiple_threads.c \ - register-atfork.c unregister-atfork.c getpid.c \ - raise.c sleep.c - -libc_SSRC := exit-thread.S close.S open.S read.S write.S nanosleep.S \ - creat.S pause.S msync.S lseek.S accept.S connect.S recv.S \ - recvfrom.S recvmsg.S send.S sendmsg.S sendto.S +libpthread_CSRC = pthread_attr_getaffinity.c \ + pthread_attr_setaffinity.c pthread_getaffinity.c \ + pthread_getcpuclockid.c pthread_kill.c \ + pthread_mutex_cond_lock.c pthread_setaffinity.c \ + pthread_yield.c sem_post.c sem_timedwait.c \ + sem_trywait.c sem_wait.c pt-fork.c \ + sigtimedwait.c sigwaitinfo.c sigwait.c pt-sleep.c + +libpthread_SSRC = #ptw-close.S ptw-open.S ptw-waitid.S ptw-waidpid.S ptw-write.S + +libc_CSRC = libc_pthread_init.c libc_multiple_threads.c \ + register-atfork.c unregister-atfork.c getpid.c \ + raise.c sleep.c jmp-unwind.c + +# These provide both a cancellable and a not cancellable implementation +libc_SSRC = close.S open.S waitpid.S write.S read.S librt_CSRC := mq_notify.c timer_create.c timer_delete.c \ timer_getoverr.c timer_gettime.c timer_routines.c \ timer_settime.c + ifeq ($(TARGET_ARCH),alpha) libpthread_CSRC += lowlevellock.c libc_CSRC += libc-lowlevellock.c @@ -56,6 +50,12 @@ libc_CSRC += libc-lowlevellock.c librt_CSRC := mq_notify.c endif +ifeq ($(TARGET_ARCH),sh) +SH_PTHREAD_SPECIFIC := sem_post.c sem_wait.c sem_timedwait.c sem_trywait.c +libpthread_CSRC := $(filter-out $(SH_PTHREAD_SPECIFIC),$(libpthread_CSRC)) +endif + + ifeq ($(TARGET_ARCH),x86_64) librt_CSRC := mq_notify.c endif @@ -82,24 +82,13 @@ CFLAGS-OMIT-getpid.c = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 CFLAGS-OMIT-raise.c = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 CFLAGS-OMIT-sleep.c = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 CFLAGS-OMIT-libc-lowlevellock.c = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-exit-thread.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 + CFLAGS-OMIT-close.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 CFLAGS-OMIT-open.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 CFLAGS-OMIT-read.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 CFLAGS-OMIT-write.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-nanosleep.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-creat.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-pause.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-accept.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-connect.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-recv.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-recvfrom.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-recvmsg.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-send.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-sendmsg.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-sendto.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-lseek.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 -CFLAGS-OMIT-msync.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 +CFLAGS-OMIT-waitpid.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 + CFLAGS-OMIT-mq_notify.c = -DIS_IN_libpthread=1 CFLAGS-OMIT-timer_create.c = -DIS_IN_libpthread=1 CFLAGS-OMIT-timer_delete.c = -DIS_IN_libpthread=1 @@ -116,8 +105,15 @@ PTHREAD_LINUX_OBJ += $(patsubst %.S,$(PTHREAD_LINUX_OUT)/%.o,$(libpthread_SSRC)) libpthread-a-y += $(PTHREAD_LINUX_OBJ) libpthread-so-y += $(PTHREAD_LINUX_OBJ:.o=.oS) +libpthread-so-y += $(PTHREAD_LINUX_OUT)/pt-raise.oS libpthread-nomulti-y += $(PTHREAD_LINUX_OBJ) +ASFLAGS-open.S = -D_LIBC_REENTRANT +ASFLAGS-close.S = -D_LIBC_REENTRANT +ASFLAGS-read.S = -D_LIBC_REENTRANT +ASFLAGS-write.S = -D_LIBC_REENTRANT +ASFLAGS-waitpid.S = -D_LIBC_REENTRANT + LIBC_LINUX_OBJ := $(patsubst %.c,$(PTHREAD_LINUX_OUT)/%.o,$(libc_CSRC)) LIBC_LINUX_OBJ += $(patsubst %.S,$(PTHREAD_LINUX_OUT)/%.o,$(libc_SSRC)) @@ -177,11 +173,16 @@ $(PTHREAD_LINUX_OUT)/lowlevelrwlock.h: $(PTHREAD_LINUX_OUT)/lowlevelrwlock.s $(PTHREAD_LINUX_OUT)/unwindbuf.h: $(PTHREAD_LINUX_OUT)/unwindbuf.s @sed -n "s/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$\/#define \1 \2/p" $< > $@ +$(PTHREAD_LINUX_DIR)/pt-sleep.c: + $(LN) -s sleep.c $@ + nptl_linux_headers: $(MAKE) $(PTHREAD_LINUX_OUT)/lowlevelbarrier.h $(MAKE) $(PTHREAD_LINUX_OUT)/lowlevelcond.h $(MAKE) $(PTHREAD_LINUX_OUT)/lowlevelrwlock.h $(MAKE) $(PTHREAD_LINUX_OUT)/unwindbuf.h + +nptl_linux_headers_bootstrap: $(LN) -sf ../../$(PTHREAD_LINUX_DIR)/bits/local_lim.h $(top_builddir)include/bits nptl_linux_headers_clean: diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/close.S b/libpthread/nptl/sysdeps/unix/sysv/linux/close.S index b1cd59469..cf50a1eae 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/close.S +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/close.S @@ -1,9 +1,21 @@ #include <sysdep-cancel.h> + +/* +extern int __close_nocancel (int) attribute_hidden; +*/ +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt + + PSEUDO (__libc_close, close, 1) ret -PSEUDO_END (__libc_close) +PSEUDO_END(__libc_close) + +libc_hidden_def (__close_nocancel) libc_hidden_def (__libc_close) weak_alias (__libc_close, __close) libc_hidden_weak (__close) weak_alias (__libc_close, close) libc_hidden_weak (close) + + +#endif diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/fork.c b/libpthread/nptl/sysdeps/unix/sysv/linux/fork.c index 5d894225a..f8a64c0cb 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/fork.c +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/fork.c @@ -227,6 +227,7 @@ pid_t __libc_fork (void) return pid; } +weak_alias(__libc_fork,__fork) libc_hidden_proto(fork) weak_alias(__libc_fork,fork) libc_hidden_weak(fork) diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/open.S b/libpthread/nptl/sysdeps/unix/sysv/linux/open.S index 50e4bcef0..486686a22 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/open.S +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/open.S @@ -1,9 +1,21 @@ #include <sysdep-cancel.h> + +/* +extern int __open_nocancel (const char *, int, ...) attribute_hidden; +*/ +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt + PSEUDO (__libc_open, open, 3) ret -PSEUDO_END (__libc_open) +PSEUDO_END(__libc_open) + +libc_hidden_def (__open_nocancel) libc_hidden_def (__libc_open) weak_alias (__libc_open, __open) libc_hidden_weak (__open) weak_alias (__libc_open, open) libc_hidden_weak (open) + + + +#endif diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/read.S b/libpthread/nptl/sysdeps/unix/sysv/linux/read.S index dc63d1763..d3adfa84c 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/read.S +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/read.S @@ -1,9 +1,19 @@ #include <sysdep-cancel.h> + +/* +extern int __read_nocancel (int, void *, size_t) attribute_hidden; +*/ +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt + PSEUDO (__libc_read, read, 3) ret -PSEUDO_END (__libc_read) +PSEUDO_END(__libc_read) + +libc_hidden_def (__read_nocancel) libc_hidden_def (__libc_read) weak_alias (__libc_read, __read) libc_hidden_weak (__read) weak_alias (__libc_read, read) libc_hidden_weak (read) + +#endif diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sigwait.c b/libpthread/nptl/sysdeps/unix/sysv/linux/sigwait.c new file mode 100644 index 000000000..bde0a9292 --- /dev/null +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sigwait.c @@ -0,0 +1,2 @@ +#include <pthreadP.h> +#include "../../../../../../libc/signal/sigwait.c" diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/waitpid.S b/libpthread/nptl/sysdeps/unix/sysv/linux/waitpid.S new file mode 100644 index 000000000..f55d34629 --- /dev/null +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/waitpid.S @@ -0,0 +1,19 @@ +#include <sysdep-cancel.h> + +/* +extern pid_t __waitpid_nocancel (pid_t, int *, int) attribute_hidden; +*/ +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt + + +PSEUDO (__waitpid, waitpid, 3) +ret +PSEUDO_END(__waitpid) + +libc_hidden_def (__waitpid) +weak_alias (__waitpid, waitpid) +libc_hidden_weak (waitpid) +weak_alias (__waitpid, __libc_waitpid) +libc_hidden_weak (__libc_waitpid) + +#endif diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/write.S b/libpthread/nptl/sysdeps/unix/sysv/linux/write.S index 168eab95c..43de3320d 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/write.S +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/write.S @@ -1,9 +1,19 @@ #include <sysdep-cancel.h> + +/* +extern int __write_nocancel (int, const void *, size_t) attribute_hidden; +*/ +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt + PSEUDO (__libc_write, write, 3) ret -PSEUDO_END (__libc_write) +PSEUDO_END(__libc_write) + +libc_hidden_def (__write_nocancel) libc_hidden_def (__libc_write) weak_alias (__libc_write, __write) libc_hidden_weak (__write) weak_alias (__libc_write, write) libc_hidden_weak (write) + +#endif |