From 22c52834eb703c132b4e7c6bd591610f1129d32d Mon Sep 17 00:00:00 2001 From: davidxu Date: Tue, 9 Dec 2003 02:20:56 +0000 Subject: Rename _thr_enter_cancellation_point to _thr_cancel_enter, rename _thr_leave_cancellation_point to _thr_cancel_leave, add a parameter to _thr_cancel_leave to indicate whether cancellation point should be checked, this gives us an option to not check cancallation point if a syscall successfully returns to avoid any leaks, current I have creat(), open() and fcntl(F_DUPFD) to not check cancellation point after they sucessfully returned. Replace some members in structure kse with bit flags to same some memory. Conditionally compile THR_ASSERT to nothing if _PTHREAD_INVARIANTS is not defined. Inline some small functions in thr_cancel.c. Use __predict_false in thr_kern.c for some executed only once code. Reviewd by: deischen --- lib/libpthread/thread/thr_join.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'lib/libpthread/thread/thr_join.c') diff --git a/lib/libpthread/thread/thr_join.c b/lib/libpthread/thread/thr_join.c index 592aa3a..9f940da 100644 --- a/lib/libpthread/thread/thr_join.c +++ b/lib/libpthread/thread/thr_join.c @@ -45,19 +45,19 @@ _pthread_join(pthread_t pthread, void **thread_return) kse_critical_t crit; int ret = 0; - _thr_enter_cancellation_point(curthread); + _thr_cancel_enter(curthread); /* Check if the caller has specified an invalid thread: */ if (pthread == NULL || pthread->magic != THR_MAGIC) { /* Invalid thread: */ - _thr_leave_cancellation_point(curthread); + _thr_cancel_leave(curthread, 1); return (EINVAL); } /* Check if the caller has specified itself: */ if (pthread == curthread) { /* Avoid a deadlock condition: */ - _thr_leave_cancellation_point(curthread); + _thr_cancel_leave(curthread, 1); return (EDEADLK); } @@ -67,7 +67,7 @@ _pthread_join(pthread_t pthread, void **thread_return) */ if ((ret = _thr_ref_add(curthread, pthread, /*include dead*/1)) != 0) { /* Return an error: */ - _thr_leave_cancellation_point(curthread); + _thr_cancel_leave(curthread, 1); return (ESRCH); } @@ -155,7 +155,7 @@ _pthread_join(pthread_t pthread, void **thread_return) *thread_return = curthread->join_status.ret; } } - _thr_leave_cancellation_point(curthread); + _thr_cancel_leave(curthread, 1); /* Return the completion status: */ return (ret); -- cgit v1.1