diff options
author | deischen <deischen@FreeBSD.org> | 2001-01-24 13:03:38 +0000 |
---|---|---|
committer | deischen <deischen@FreeBSD.org> | 2001-01-24 13:03:38 +0000 |
commit | ee1de6a067c70fbd8cb73facd64c3b0b275f9f83 (patch) | |
tree | 71d2853de2f283028592fa4119320bab82c18d68 /lib/libpthread/thread/thr_close.c | |
parent | 274959d59337555267567d4bde9a5a841c47d84f (diff) | |
download | FreeBSD-src-ee1de6a067c70fbd8cb73facd64c3b0b275f9f83.zip FreeBSD-src-ee1de6a067c70fbd8cb73facd64c3b0b275f9f83.tar.gz |
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
Diffstat (limited to 'lib/libpthread/thread/thr_close.c')
-rw-r--r-- | lib/libpthread/thread/thr_close.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/libpthread/thread/thr_close.c b/lib/libpthread/thread/thr_close.c index 9dee2bc..43c3b22 100644 --- a/lib/libpthread/thread/thr_close.c +++ b/lib/libpthread/thread/thr_close.c @@ -36,10 +36,11 @@ #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> -#ifdef _THREAD_SAFE #include <pthread.h> #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 |