summaryrefslogtreecommitdiff
path: root/lib/libpthread
diff options
context:
space:
mode:
authornathanw <nathanw@NetBSD.org>2003-01-27 20:57:41 +0000
committernathanw <nathanw@NetBSD.org>2003-01-27 20:57:41 +0000
commit05a755440a040dc996846ec84d883d328f8a4db0 (patch)
tree63094487f22e549945b8ebbfa1bed5f89a4c09e4 /lib/libpthread
parent161423ddcae13bfac45c7fb5dbc33d52dbc16711 (diff)
Add cancellation stubs for accept() and connect().
Diffstat (limited to 'lib/libpthread')
-rw-r--r--lib/libpthread/pthread_cancelstub.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/lib/libpthread/pthread_cancelstub.c b/lib/libpthread/pthread_cancelstub.c
index b829127da83..e41e262380c 100644
--- a/lib/libpthread/pthread_cancelstub.c
+++ b/lib/libpthread/pthread_cancelstub.c
@@ -1,4 +1,4 @@
-/* $NetBSD: pthread_cancelstub.c,v 1.2 2003/01/18 10:34:15 thorpej Exp $ */
+/* $NetBSD: pthread_cancelstub.c,v 1.3 2003/01/27 20:57:41 nathanw Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -56,11 +56,14 @@ int pthread__cancel_stub_binder;
#define __LIBC12_SOURCE__
#include <signal.h>
#include <sys/mman.h>
+#include <sys/socket.h>
#include "pthread.h"
#include "pthread_int.h"
+int _sys_accept(int, struct sockaddr *, socklen_t *);
int _sys_close(int);
+int _sys_connect(int, const struct sockaddr *, socklen_t);
int _sys_fcntl(int, int, ...);
int _sys_fsync(int);
ssize_t _sys_msgrcv(int, void *, size_t, long, int);
@@ -80,6 +83,20 @@ ssize_t _sys_writev(int, const struct iovec *, int);
int
+accept(int s, struct sockaddr *addr, socklen_t *addrlen)
+{
+ int retval;
+ pthread_t self;
+
+ self = pthread__self();
+ pthread__testcancel(self);
+ retval = _sys_accept(s, addr, addrlen);
+ pthread__testcancel(self);
+
+ return retval;
+}
+
+int
close(int d)
{
int retval;
@@ -94,6 +111,20 @@ close(int d)
}
int
+connect(int s, const struct sockaddr *addr, socklen_t namelen)
+{
+ int retval;
+ pthread_t self;
+
+ self = pthread__self();
+ pthread__testcancel(self);
+ retval = _sys_connect(s, addr, namelen);
+ pthread__testcancel(self);
+
+ return retval;
+}
+
+int
fcntl(int fd, int cmd, ...)
{
int retval;