From e5106342c6de9cbe26c4827e4e29bae309cd8cfb Mon Sep 17 00:00:00 2001 From: Daniel Eischen Date: Wed, 24 Jan 2001 13:03:38 +0000 Subject: Add weak definitions for wrapped system calls. In general: _foo - wrapped system call foo - weak definition to _foo and for cancellation points: _foo - wrapped system call __foo - enter cancellation point, call _foo(), leave cancellation point foo - weak definition to __foo Change use of global _thread_run to call a function to get the currently running thread. Make all pthread_foo functions weak definitions to _pthread_foo, where _pthread_foo is the implementation. This allows an application to provide its own pthread functions. Provide slightly different versions of pthread_mutex_lock and pthread_mutex_init so that we can tell the difference between a libc mutex and an application mutex. Threads holding mutexes internal to libc should never be allowed to exit, call signal handlers, or cancel. Approved by: -arch --- lib/libpthread/thread/thr_close.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'lib/libpthread/thread/thr_close.c') diff --git a/lib/libpthread/thread/thr_close.c b/lib/libpthread/thread/thr_close.c index 9dee2bc8b56e..43c3b22712df 100644 --- a/lib/libpthread/thread/thr_close.c +++ b/lib/libpthread/thread/thr_close.c @@ -36,10 +36,11 @@ #include #include #include -#ifdef _THREAD_SAFE #include #include "pthread_private.h" +#pragma weak close=__close + int _close(int fd) { @@ -60,7 +61,7 @@ _close(int fd) * the file descriptor status: */ else if (((ret = _FD_LOCK(fd, FD_RDWR, NULL)) == 0) && - ((ret = _thread_sys_fstat(fd, &sb)) == 0)) { + ((ret = __sys_fstat(fd, &sb)) == 0)) { /* * Check if the file should be left as blocking. * @@ -83,9 +84,9 @@ _close(int fd) */ if ((S_ISREG(sb.st_mode) || S_ISCHR(sb.st_mode)) && (_thread_fd_table[fd]->flags & O_NONBLOCK) == 0) { /* Get the current flags: */ - flags = _thread_sys_fcntl(fd, F_GETFL, NULL); + flags = __sys_fcntl(fd, F_GETFL, NULL); /* Clear the nonblocking file descriptor flag: */ - _thread_sys_fcntl(fd, F_SETFL, flags & ~O_NONBLOCK); + __sys_fcntl(fd, F_SETFL, flags & ~O_NONBLOCK); } /* XXX: Assumes well behaved threads. */ @@ -95,13 +96,13 @@ _close(int fd) free(entry); /* Close the file descriptor: */ - ret = _thread_sys_close(fd); + ret = __sys_close(fd); } return (ret); } int -close(int fd) +__close(int fd) { int ret; @@ -111,4 +112,3 @@ close(int fd) return ret; } -#endif -- cgit v1.2.3