Implement _lwp_*
authorDavid Bartley <dtbartle@maltodextrin.csclub.uwaterloo.ca>
Thu, 4 Sep 2008 16:53:46 +0000 (16:53 +0000)
committerDavid Bartley <dtbartle@maltodextrin.csclub.uwaterloo.ca>
Thu, 4 Sep 2008 16:53:46 +0000 (16:53 +0000)
22 files changed:
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/Makefile
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/Versions
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/cond_broadcast.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/cond_reltimedwait.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/cond_signal.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/cond_timedwait.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/cond_wait.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/mutex_lock.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/mutex_trylock.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/mutex_unlock.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/pthread_kill.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/pthread_self.c [new file with mode: 0644]
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sema_post.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sema_trywait.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sema_wait.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/synch.h
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/lwp.h [new file with mode: 0644]
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/thr_continue.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/thr_suspend.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/Makefile
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/bits/types.h
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/lwp.h [deleted file]

index 02a3a5b..de19b65 100644 (file)
@@ -1,5 +1,5 @@
 ifeq ($(subdir),nptl)
-headers += synch.h bits/synch.h sys/synch.h thread.h
+headers += synch.h bits/synch.h sys/synch.h thread.h sys/lwp.h
 sysdep_routines += register-atfork unregister-atfork libc_pthread_init \
     libc_multiple_threads fastlock
 libpthread-sysdep_routines += pt-fork fastlock clock_gettime \
@@ -18,7 +18,7 @@ libpthread-routines += mutex_init mutex_lock mutex_trylock mutex_unlock \
     sema_wait sema_trywait sema_post sema_timedwait thr_create thr_join \
     thr_exit thr_self thr_main thr_yield thr_sigsetmask thr_getspecific \
     thr_setspecific thr_keycreate thr_min_stack thr_getconcurrency \
-    thr_setconcurrency thr_continue thr_suspend
+    thr_setconcurrency thr_continue thr_suspend _lwp_sema_init _lwp_info
 endif
 
 ifeq ($(subdir),posix)
index 0946bd7..c3c7064 100644 (file)
@@ -18,6 +18,13 @@ libpthread {
     cond_init; cond_destroy; cond_wait; cond_timedwait; cond_reltimedwait;
     cond_signal; cond_broadcast;
 
+    # l
+    _lwp_cond_broadcast; _lwp_cond_timedwait; _lwp_cond_reltimedwait;
+    _lwp_cond_signal; _lwp_cond_wait; _lwp_continue; _lwp_info; _lwp_kill;
+    _lwp_mutex_lock; _lwp_mutex_trylock; _lwp_mutex_unlock; _lwp_self;
+    _lwp_sema_init; _lwp_sema_post; _lwp_sema_trywait; _lwp_sema_wait;
+    _lwp_suspend;
+
     # m
     mutex_init; mutex_destroy; mutex_consistent; mutex_lock; mutex_trylock;
     mutex_unlock;
index 00d6885..1681df6 100644 (file)
@@ -34,3 +34,5 @@ int cond_broadcast (cond)
 
   return INLINE_SYSCALL (lwp_cond_broadcast, 1, cond);
 }
+
+weak_alias (cond_broadcast, _lwp_cond_broadcast)
index 45222eb..99e98fa 100644 (file)
@@ -156,3 +156,5 @@ int cond_reltimedwait (cond, mutex, reltime)
 {
   return __cond_reltimedwait_internal (cond, mutex, reltime, 1);
 }
+
+weak_alias (cond_reltimedwait, _lwp_cond_reltimedwait)
index 0c39bc5..6b1701d 100644 (file)
@@ -34,3 +34,5 @@ int cond_signal (cond)
 
   return INLINE_SYSCALL (lwp_cond_signal, 1, cond);
 }
+
+weak_alias (cond_signal, __lwp_cond_signal)
index 8577ef1..9d6e2bd 100644 (file)
@@ -36,3 +36,5 @@ int cond_timedwait (cond, mutex, abstime)
   struct timespec *reltime = abstime_to_reltime (abstime, &_reltime);
   return cond_reltimedwait (cond, mutex, reltime);
 }
+
+weak_alias (cond_timedwait, _lwp_cond_timedwait)
index 40c0280..2a8aae5 100644 (file)
@@ -29,3 +29,5 @@ int cond_wait (cond, mutex)
 {
   return cond_reltimedwait (cond, mutex, NULL);
 }
+
+weak_alias (cond_wait, _lwp_cond_wait)
index 0f7a1bb..72bacea 100644 (file)
@@ -25,3 +25,5 @@ int mutex_lock (mutex)
 {
   return __mutex_timedlock (mutex, NULL);
 }
+
+weak_alias (mutex_lock, _lwp_mutex_lock)
index 5023446..5908821 100644 (file)
@@ -54,3 +54,4 @@ __pthread_kill (threadid, signo)
          ? INTERNAL_SYSCALL_ERRNO (val, err) : 0);
 }
 strong_alias (__pthread_kill, pthread_kill)
+weak_alias (__pthread_kill, _lwp_kill)
diff --git a/nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/pthread_self.c b/nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/pthread_self.c
new file mode 100644 (file)
index 0000000..4f301b0
--- /dev/null
@@ -0,0 +1,2 @@
+#include <pthread_self.c>
+weak_alias (__pthread_self, _lwp_self)
index 4b5230e..b782ba8 100644 (file)
@@ -28,3 +28,5 @@ int sema_post (sem)
 {
   return INLINE_SYSCALL (lwp_sema_post, 1, sem);
 }
+
+weak_alias (sema_post, _lwp_sema_post)
index 14197b6..5f0f8bf 100644 (file)
@@ -28,3 +28,5 @@ int sema_trywait (sem)
 {
   return INLINE_SYSCALL (lwp_sema_trywait, 1, sem);
 }
+
+weak_alias (sema_trywait, _lwp_sema_trywait)
index 605e4ab..1a90df5 100644 (file)
@@ -26,3 +26,5 @@ int sema_wait (sem)
 {
   return __sema_timedwait (sem, NULL);
 }
+
+weak_alias (sema_wait, _lwp_sema_wait)
index 498293e..e8a0391 100644 (file)
@@ -33,67 +33,59 @@ typedef lwp_sema_t sema_t;
 
 __BEGIN_DECLS
 
-/* condition variables */
-
-int    cond_init(cond_t *, int, void *);
-
-int    cond_destroy(cond_t *);
-
-int    cond_wait(cond_t *, mutex_t *);
-
-int    cond_timedwait(cond_t *, mutex_t *, struct timespec *);
-
-int    cond_reltimedwait(cond_t *, mutex_t *, struct timespec *);
+/* syscalls */
+
+int _lwp_mutex_lock (lwp_mutex_t *);
+int _lwp_mutex_unlock (lwp_mutex_t *);
+int _lwp_mutex_trylock (lwp_mutex_t *);
+int _lwp_cond_wait (lwp_cond_t *, lwp_mutex_t *);
+int _lwp_cond_timedwait (lwp_cond_t *, lwp_mutex_t *, struct timespec *);
+int _lwp_cond_reltimedwait (lwp_cond_t *, lwp_mutex_t *, struct timespec *);
+int _lwp_cond_signal (lwp_cond_t *);
+int _lwp_cond_broadcast (lwp_cond_t *);
+int _lwp_sema_init (lwp_sema_t *, int);
+int _lwp_sema_wait (lwp_sema_t *);
+int _lwp_sema_trywait (lwp_sema_t *);
+int _lwp_sema_post (lwp_sema_t *);
 
-int    cond_signal(cond_t *);
+/* condition variables */
 
-int    cond_broadcast(cond_t *);
+int cond_init(cond_t *, int, void *);
+int cond_destroy(cond_t *);
+int cond_wait(cond_t *, mutex_t *);
+int cond_timedwait(cond_t *, mutex_t *, struct timespec *);
+int cond_reltimedwait(cond_t *, mutex_t *, struct timespec *);
+int cond_signal(cond_t *);
+int cond_broadcast(cond_t *);
 
 /* mutexes */
 
-int    mutex_init(mutex_t *, int, void *);
-
-int    mutex_destroy(mutex_t *);
-
-int    mutex_consistent(mutex_t *);
-
-int    mutex_lock(mutex_t *);
-
-int    mutex_trylock(mutex_t *);
-
-int    mutex_unlock(mutex_t *);
+int mutex_init(mutex_t *, int, void *);
+int mutex_destroy(mutex_t *);
+int mutex_consistent(mutex_t *);
+int mutex_lock(mutex_t *);
+int mutex_trylock(mutex_t *);
+int mutex_unlock(mutex_t *);
 
 /* reader/writer locks */
 
-int    rwlock_init(rwlock_t *, int, void *);
-
-int    rwlock_destroy(rwlock_t *);
-
-int    rw_rdlock(rwlock_t *);
-
-int    rw_wrlock(rwlock_t *);
-
-int    rw_unlock(rwlock_t *);
-
-int    rw_tryrdlock(rwlock_t *);
-
-int    rw_trywrlock(rwlock_t *);
+int rwlock_init(rwlock_t *, int, void *);
+int rwlock_destroy(rwlock_t *);
+int rw_rdlock(rwlock_t *);
+int rw_wrlock(rwlock_t *);
+int rw_unlock(rwlock_t *);
+int rw_tryrdlock(rwlock_t *);
+int rw_trywrlock(rwlock_t *);
 
 /* semaphores */
 
-int    sema_init(sema_t *, unsigned int, int, void *);
-
-int    sema_destroy(sema_t *);
-
-int    sema_wait(sema_t *);
-
-int    sema_timedwait(sema_t *, struct timespec *);
-
-int    sema_reltimedwait(sema_t *, const struct timespec *);
-
-int    sema_post(sema_t *);
-
-int    sema_trywait(sema_t *);
+int sema_init(sema_t *, unsigned int, int, void *);
+int sema_destroy(sema_t *);
+int sema_wait(sema_t *);
+int sema_timedwait(sema_t *, struct timespec *);
+int sema_reltimedwait(sema_t *, const struct timespec *);
+int sema_post(sema_t *);
+int sema_trywait(sema_t *);
 
 __END_DECLS
 
diff --git a/nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/lwp.h b/nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/lwp.h
new file mode 100644 (file)
index 0000000..9fd405c
--- /dev/null
@@ -0,0 +1,57 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   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, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _SYS_LWP_H
+#define _SYS_LWP_H
+
+#include <sys/types.h>
+#include <features.h>
+#define __need_timespec
+#include <time.h>
+
+typedef unsigned int lwpid_t;
+
+struct lwpinfo
+{
+    struct timespec lwp_utime;
+    struct timespec lwp_stime;
+    long lwpinfo_pad[64];
+};
+
+#define LWP_DAEMON             0x00000020
+#define LWP_DETACHED   0x00000040
+#define LWP_SUSPENDED  0x00000080
+
+#define _LWP_FSBASE            0
+#define _LWP_GSBASE            1
+
+#define _LWP_SETPRIVATE                0
+#define _LWP_GETPRIVATE                1
+
+__BEGIN_DECLS
+
+int _lwp_kill (lwpid_t, int);
+int _lwp_info (struct lwpinfo *);
+lwpid_t _lwp_self (void);
+int _lwp_suspend (lwpid_t);
+int _lwp_continue (lwpid_t);
+
+__END_DECLS
+
+#endif /* _SYS_LWP_H */
index 749e737..199070b 100644 (file)
@@ -31,3 +31,5 @@ int thr_continue (thread_t target_thread)
 
   return INLINE_SYSCALL (lwp_continue, 1, target_thread);
 }
+
+weak_alias (thr_continue, _lwp_continue)
index ae5ef29..d47307c 100644 (file)
@@ -31,3 +31,5 @@ int thr_suspend (thread_t target_thread)
 
   return INLINE_SYSCALL (lwp_suspend, 1, target_thread);
 }
+
+weak_alias (thr_suspend, _lwp_suspend)
index b9e993c..356313f 100644 (file)
@@ -31,7 +31,7 @@ sysdep_routines += sys_fdsync sys_sysconfig sys_brk sys_fcntl sys_utssys \
     sys_ucred_get sys_privsys sys_syslabeling sys_putmsg sys_putpmsg \
     sys_meminfo sys_pset_getloadavg sys_zone_create sys_allocids \
     sys_settaskid sys_zone_lookup
-sysdep_headers += sys/feature_tests.h sys/lwp.h sys/mount.h sys/cred.h \
+sysdep_headers += sys/feature_tests.h sys/mount.h sys/cred.h \
     sys/systeminfo.h sys/uadmin.h sys/utssys.h sys/fstyp.h sys/fsid.h \
     sys/priocntl.h sys/procset.h sys/ptyvar.h sys/stream.h sys/synch.h \
     sys/sockio.h sys/ioccom.h sys/tty.h sys/trap.h sys/sysconfig.h \
index 70a5c19..20d1a35 100644 (file)
@@ -203,7 +203,6 @@ typedef __id_t      zoneid_t;
 typedef __id_t ctid_t;
 typedef short  pri_t;
 typedef long long      offset_t;
-typedef unsigned int   lwpid_t;
 typedef unsigned char  uchar_t;
 typedef unsigned int   uint_t;
 typedef unsigned short ushort_t;
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/lwp.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/lwp.h
deleted file mode 100644 (file)
index 1932e89..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (C) 2008 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
-
-   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, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#ifndef _SYS_LWP_H
-#define _SYS_LWP_H
-
-#include <sys/types.h>
-
-#define __need_timespec
-#include <time.h>
-
-struct lwpinfo
-{
-    struct timespec lwp_utime;
-    struct timespec lwp_stime;
-    long lwpinfo_pad[64];
-};
-
-#define LWP_DAEMON             0x00000020
-#define LWP_DETACHED   0x00000040
-#define LWP_SUSPENDED  0x00000080
-
-#define _LWP_FSBASE            0
-#define _LWP_GSBASE            1
-
-#define _LWP_SETPRIVATE                0
-#define _LWP_GETPRIVATE                1
-
-#endif /* _SYS_LWP_H */