}
+/* Copied verbatim from Linuxthreads */
+/* Redefine raise() to send signal to calling thread only,
+ as per POSIX 1003.1c */
+int raise (int sig)
+{
+ int retcode = pthread_kill(pthread_self(), sig);
+ if (retcode == 0)
+ return 0;
+ else {
+ errno = retcode;
+ return -1;
+ }
+}
+
+
/* ---------------------------------------------------
THREAD-SPECIFICs
------------------------------------------------ */
}
+extern
+int __libc_sendmsg(int s, const struct msghdr *msg, int flags);
+__attribute__((weak))
+int sendmsg(int s, const struct msghdr *msg, int flags)
+{
+ return __libc_sendmsg(s, msg, flags);
+}
+
+
extern
int __libc_recvfrom(int s, void *buf, size_t len, int flags,
struct sockaddr *from, socklen_t *fromlen);
//void pthread_setspecific ( void ) { unimp("pthread_setspecific"); }
//void pthread_sigmask ( void ) { unimp("pthread_sigmask"); }
//void pthread_testcancel ( void ) { unimp("pthread_testcancel"); }
-void raise ( void ) { unimp("raise"); }
+//void raise ( void ) { unimp("raise"); }
void sem_close ( void ) { unimp("sem_close"); }
void sem_open ( void ) { unimp("sem_open"); }
void sem_timedwait ( void ) { unimp("sem_timedwait"); }
__attribute__((weak)) void pause ( void ) { vgPlain_unimp("pause"); }
__attribute__((weak)) void recvfrom ( void ) { vgPlain_unimp("recvfrom"); }
__attribute__((weak)) void recvmsg ( void ) { vgPlain_unimp("recvmsg"); }
-__attribute__((weak)) void sendmsg ( void ) { vgPlain_unimp("sendmsg"); }
+//__attribute__((weak)) void sendmsg ( void ) { vgPlain_unimp("sendmsg"); }
__attribute__((weak)) void tcdrain ( void ) { vgPlain_unimp("tcdrain"); }
__attribute__((weak)) void vfork ( void ) { vgPlain_unimp("vfork"); }
}
+/* Copied verbatim from Linuxthreads */
+/* Redefine raise() to send signal to calling thread only,
+ as per POSIX 1003.1c */
+int raise (int sig)
+{
+ int retcode = pthread_kill(pthread_self(), sig);
+ if (retcode == 0)
+ return 0;
+ else {
+ errno = retcode;
+ return -1;
+ }
+}
+
+
/* ---------------------------------------------------
THREAD-SPECIFICs
------------------------------------------------ */
}
+extern
+int __libc_sendmsg(int s, const struct msghdr *msg, int flags);
+__attribute__((weak))
+int sendmsg(int s, const struct msghdr *msg, int flags)
+{
+ return __libc_sendmsg(s, msg, flags);
+}
+
+
extern
int __libc_recvfrom(int s, void *buf, size_t len, int flags,
struct sockaddr *from, socklen_t *fromlen);
//void pthread_setspecific ( void ) { unimp("pthread_setspecific"); }
//void pthread_sigmask ( void ) { unimp("pthread_sigmask"); }
//void pthread_testcancel ( void ) { unimp("pthread_testcancel"); }
-void raise ( void ) { unimp("raise"); }
+//void raise ( void ) { unimp("raise"); }
void sem_close ( void ) { unimp("sem_close"); }
void sem_open ( void ) { unimp("sem_open"); }
void sem_timedwait ( void ) { unimp("sem_timedwait"); }
__attribute__((weak)) void pause ( void ) { vgPlain_unimp("pause"); }
__attribute__((weak)) void recvfrom ( void ) { vgPlain_unimp("recvfrom"); }
__attribute__((weak)) void recvmsg ( void ) { vgPlain_unimp("recvmsg"); }
-__attribute__((weak)) void sendmsg ( void ) { vgPlain_unimp("sendmsg"); }
+//__attribute__((weak)) void sendmsg ( void ) { vgPlain_unimp("sendmsg"); }
__attribute__((weak)) void tcdrain ( void ) { vgPlain_unimp("tcdrain"); }
__attribute__((weak)) void vfork ( void ) { vgPlain_unimp("vfork"); }
}
+/* Copied verbatim from Linuxthreads */
+/* Redefine raise() to send signal to calling thread only,
+ as per POSIX 1003.1c */
+int raise (int sig)
+{
+ int retcode = pthread_kill(pthread_self(), sig);
+ if (retcode == 0)
+ return 0;
+ else {
+ errno = retcode;
+ return -1;
+ }
+}
+
+
/* ---------------------------------------------------
THREAD-SPECIFICs
------------------------------------------------ */
}
+extern
+int __libc_sendmsg(int s, const struct msghdr *msg, int flags);
+__attribute__((weak))
+int sendmsg(int s, const struct msghdr *msg, int flags)
+{
+ return __libc_sendmsg(s, msg, flags);
+}
+
+
extern
int __libc_recvfrom(int s, void *buf, size_t len, int flags,
struct sockaddr *from, socklen_t *fromlen);
//void pthread_setspecific ( void ) { unimp("pthread_setspecific"); }
//void pthread_sigmask ( void ) { unimp("pthread_sigmask"); }
//void pthread_testcancel ( void ) { unimp("pthread_testcancel"); }
-void raise ( void ) { unimp("raise"); }
+//void raise ( void ) { unimp("raise"); }
void sem_close ( void ) { unimp("sem_close"); }
void sem_open ( void ) { unimp("sem_open"); }
void sem_timedwait ( void ) { unimp("sem_timedwait"); }
__attribute__((weak)) void pause ( void ) { vgPlain_unimp("pause"); }
__attribute__((weak)) void recvfrom ( void ) { vgPlain_unimp("recvfrom"); }
__attribute__((weak)) void recvmsg ( void ) { vgPlain_unimp("recvmsg"); }
-__attribute__((weak)) void sendmsg ( void ) { vgPlain_unimp("sendmsg"); }
+//__attribute__((weak)) void sendmsg ( void ) { vgPlain_unimp("sendmsg"); }
__attribute__((weak)) void tcdrain ( void ) { vgPlain_unimp("tcdrain"); }
__attribute__((weak)) void vfork ( void ) { vgPlain_unimp("vfork"); }