@@ -1,6 +1,16 @@
#include_next <pthread.h>
#ifndef _ISOMAC
+/* Prototypes repeated instead of using __typeof because pthread.h is
+ included in C++ tests, and declaring functions with __typeof and
+ __THROW doesn't work for C++. */
+extern int __pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
+ const pthread_barrierattr_t *__restrict
+ __attr, unsigned int __count)
+ __THROW __nonnull ((1));
+extern int __pthread_barrier_wait (pthread_barrier_t *__barrier)
+ __THROWNL __nonnull ((1));
+
/* This function is called to initialize the pthread library. */
extern void __pthread_initialize (void) __attribute__ ((weak));
#endif
@@ -273,6 +273,7 @@ libpthread {
__pthread_initialize_minimal;
__pthread_clock_gettime; __pthread_clock_settime;
__pthread_unwind; __pthread_get_minstack;
+ __pthread_barrier_init; __pthread_barrier_wait;
__shm_directory;
}
}
@@ -29,7 +29,7 @@ static const struct pthread_barrierattr default_barrierattr =
int
-pthread_barrier_init (barrier, attr, count)
+__pthread_barrier_init (barrier, attr, count)
pthread_barrier_t *barrier;
const pthread_barrierattr_t *attr;
unsigned int count;
@@ -68,3 +68,4 @@ pthread_barrier_init (barrier, attr, count)
return 0;
}
+weak_alias (__pthread_barrier_init, pthread_barrier_init)
@@ -24,7 +24,7 @@
/* Wait on barrier. */
int
-pthread_barrier_wait (barrier)
+__pthread_barrier_wait (barrier)
pthread_barrier_t *barrier;
{
struct pthread_barrier *ibarrier = (struct pthread_barrier *) barrier;
@@ -76,3 +76,4 @@ pthread_barrier_wait (barrier)
return result;
}
+weak_alias (__pthread_barrier_wait, pthread_barrier_wait)
@@ -22,7 +22,7 @@
#include <sparc-nptl.h>
int
-pthread_barrier_init (barrier, attr, count)
+__pthread_barrier_init (barrier, attr, count)
pthread_barrier_t *barrier;
const pthread_barrierattr_t *attr;
unsigned int count;
@@ -53,3 +53,4 @@ pthread_barrier_init (barrier, attr, count)
return 0;
}
+weak_alias (__pthread_barrier_init, pthread_barrier_init)
@@ -24,7 +24,7 @@
/* Wait on barrier. */
int
-pthread_barrier_wait (barrier)
+__pthread_barrier_wait (barrier)
pthread_barrier_t *barrier;
{
union sparc_pthread_barrier *ibarrier
@@ -76,3 +76,4 @@ pthread_barrier_wait (barrier)
return result;
}
+weak_alias (__pthread_barrier_wait, pthread_barrier_wait)
@@ -24,7 +24,7 @@
/* Wait on barrier. */
int
-pthread_barrier_wait (barrier)
+__pthread_barrier_wait (barrier)
pthread_barrier_t *barrier;
{
union sparc_pthread_barrier *ibarrier
@@ -92,3 +92,4 @@ pthread_barrier_wait (barrier)
return result;
}
+weak_alias (__pthread_barrier_wait, pthread_barrier_wait)
@@ -22,10 +22,10 @@
.text
- .globl pthread_barrier_wait
- .type pthread_barrier_wait,@function
+ .globl __pthread_barrier_wait
+ .type __pthread_barrier_wait,@function
.align 16
-pthread_barrier_wait:
+__pthread_barrier_wait:
cfi_startproc
pushl %ebx
cfi_adjust_cfa_offset(4)
@@ -183,4 +183,5 @@ pthread_barrier_wait:
call __lll_unlock_wake
jmp 10b
cfi_endproc
- .size pthread_barrier_wait,.-pthread_barrier_wait
+ .size __pthread_barrier_wait,.-__pthread_barrier_wait
+weak_alias (__pthread_barrier_wait, pthread_barrier_wait)
@@ -92,7 +92,7 @@ notification_function (void *arg)
union sigval param = data->param;
/* Let the parent go. */
- (void) pthread_barrier_wait (¬ify_barrier);
+ (void) __pthread_barrier_wait (¬ify_barrier);
/* Make the thread detached. */
(void) pthread_detach (pthread_self ());
@@ -132,7 +132,7 @@ helper_thread (void *arg)
== 0, 0))
/* Since we passed a pointer to DATA to the new thread we have
to wait until it is done with it. */
- (void) pthread_barrier_wait (¬ify_barrier);
+ (void) __pthread_barrier_wait (¬ify_barrier);
}
else if (data.raw[NOTIFY_COOKIE_LEN - 1] == NOTIFY_REMOVED)
/* The only state we keep is the copy of the thread attributes. */
@@ -166,7 +166,7 @@ init_mq_netlink (void)
int err = 1;
/* Initialize the barrier. */
- if (__builtin_expect (pthread_barrier_init (¬ify_barrier, NULL, 2) == 0,
+ if (__builtin_expect (__pthread_barrier_init (¬ify_barrier, NULL, 2) == 0,
0))
{
/* Create the helper thread. */
@@ -23,10 +23,10 @@
.text
- .globl pthread_barrier_wait
- .type pthread_barrier_wait,@function
+ .globl __pthread_barrier_wait
+ .type __pthread_barrier_wait,@function
.align 16
-pthread_barrier_wait:
+__pthread_barrier_wait:
/* Get the mutex. */
xorl %eax, %eax
movl $1, %esi
@@ -157,4 +157,5 @@ pthread_barrier_wait:
xorl $LLL_SHARED, %esi
callq __lll_unlock_wake
jmp 10b
- .size pthread_barrier_wait,.-pthread_barrier_wait
+ .size __pthread_barrier_wait,.-__pthread_barrier_wait
+weak_alias (__pthread_barrier_wait, pthread_barrier_wait)