diff options
author | archie <archie@FreeBSD.org> | 2002-05-02 19:58:43 +0000 |
---|---|---|
committer | archie <archie@FreeBSD.org> | 2002-05-02 19:58:43 +0000 |
commit | b163f64d4ed7fcae172128db398cbc49e9c22536 (patch) | |
tree | 1119b760226c7870af16a85be9b494a6c3fa3a24 /lib/libkse | |
parent | 7efe637f5aea25bb5a5edc7e5b0b376e4bfaa671 (diff) | |
download | FreeBSD-src-b163f64d4ed7fcae172128db398cbc49e9c22536.zip FreeBSD-src-b163f64d4ed7fcae172128db398cbc49e9c22536.tar.gz |
Make these functions cancellation points like they should be:
poll(2), readv(2), select(2), wait4(2), writev(2).
PR: bin/37658
Reviewed by: deischen
MFC after: 1 week
Diffstat (limited to 'lib/libkse')
-rw-r--r-- | lib/libkse/thread/thr_poll.c | 14 | ||||
-rw-r--r-- | lib/libkse/thread/thr_readv.c | 14 | ||||
-rw-r--r-- | lib/libkse/thread/thr_select.c | 15 | ||||
-rw-r--r-- | lib/libkse/thread/thr_wait4.c | 14 | ||||
-rw-r--r-- | lib/libkse/thread/thr_writev.c | 14 |
5 files changed, 66 insertions, 5 deletions
diff --git a/lib/libkse/thread/thr_poll.c b/lib/libkse/thread/thr_poll.c index e2a7cc0..62b2613 100644 --- a/lib/libkse/thread/thr_poll.c +++ b/lib/libkse/thread/thr_poll.c @@ -41,7 +41,7 @@ #include <pthread.h> #include "pthread_private.h" -__weak_reference(_poll, poll); +__weak_reference(__poll, poll); int _poll(struct pollfd *fds, unsigned int nfds, int timeout) @@ -97,3 +97,15 @@ _poll(struct pollfd *fds, unsigned int nfds, int timeout) return (ret); } + +int +__poll(struct pollfd *fds, unsigned int nfds, int timeout) +{ + int ret; + + _thread_enter_cancellation_point(); + ret = _poll(fds, nfds, timeout); + _thread_leave_cancellation_point(); + + return ret; +} diff --git a/lib/libkse/thread/thr_readv.c b/lib/libkse/thread/thr_readv.c index 2759819..0aa6c15 100644 --- a/lib/libkse/thread/thr_readv.c +++ b/lib/libkse/thread/thr_readv.c @@ -40,7 +40,7 @@ #include <pthread.h> #include "pthread_private.h" -__weak_reference(_readv, readv); +__weak_reference(__readv, readv); ssize_t _readv(int fd, const struct iovec * iov, int iovcnt) @@ -92,3 +92,15 @@ _readv(int fd, const struct iovec * iov, int iovcnt) } return (ret); } + +ssize_t +__readv(int fd, const struct iovec *iov, int iovcnt) +{ + ssize_t ret; + + _thread_enter_cancellation_point(); + ret = _readv(fd, iov, iovcnt); + _thread_leave_cancellation_point(); + + return ret; +} diff --git a/lib/libkse/thread/thr_select.c b/lib/libkse/thread/thr_select.c index 8d03bbd..a3a9a9d 100644 --- a/lib/libkse/thread/thr_select.c +++ b/lib/libkse/thread/thr_select.c @@ -43,7 +43,7 @@ #include <pthread.h> #include "pthread_private.h" -__weak_reference(_select, select); +__weak_reference(__select, select); int _select(int numfds, fd_set * readfds, fd_set * writefds, fd_set * exceptfds, @@ -214,3 +214,16 @@ _select(int numfds, fd_set * readfds, fd_set * writefds, fd_set * exceptfds, return (ret); } + +int +__select(int numfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, + struct timeval *timeout) +{ + int ret; + + _thread_enter_cancellation_point(); + ret = _select(numfds, readfds, writefds, exceptfds, timeout); + _thread_leave_cancellation_point(); + + return ret; +} diff --git a/lib/libkse/thread/thr_wait4.c b/lib/libkse/thread/thr_wait4.c index 6c4e068..05ed065 100644 --- a/lib/libkse/thread/thr_wait4.c +++ b/lib/libkse/thread/thr_wait4.c @@ -38,7 +38,7 @@ #include <pthread.h> #include "pthread_private.h" -__weak_reference(_wait4, wait4); +__weak_reference(__wait4, wait4); pid_t _wait4(pid_t pid, int *istat, int options, struct rusage * rusage) @@ -68,3 +68,15 @@ _wait4(pid_t pid, int *istat, int options, struct rusage * rusage) return (ret); } + +pid_t +__wait4(pid_t pid, int *istat, int options, struct rusage *rusage) +{ + pid_t ret; + + _thread_enter_cancellation_point(); + ret = _wait4(pid, istat, options, rusage); + _thread_leave_cancellation_point(); + + return ret; +} diff --git a/lib/libkse/thread/thr_writev.c b/lib/libkse/thread/thr_writev.c index c084cd0..ec77258 100644 --- a/lib/libkse/thread/thr_writev.c +++ b/lib/libkse/thread/thr_writev.c @@ -42,7 +42,7 @@ #include <pthread.h> #include "pthread_private.h" -__weak_reference(_writev, writev); +__weak_reference(__writev, writev); ssize_t _writev(int fd, const struct iovec * iov, int iovcnt) @@ -202,3 +202,15 @@ _writev(int fd, const struct iovec * iov, int iovcnt) return (ret); } + +ssize_t +__writev(int fd, const struct iovec *iov, int iovcnt) +{ + ssize_t ret; + + _thread_enter_cancellation_point(); + ret = _writev(fd, iov, iovcnt); + _thread_leave_cancellation_point(); + + return ret; +} |