diff options
author | julian <julian@FreeBSD.org> | 1996-08-20 08:22:01 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 1996-08-20 08:22:01 +0000 |
commit | 7350d1d3b2ec940c89a2b20f9d09985d9fd9e9d7 (patch) | |
tree | b14348030d1048f8628b798374a8a061a990aae3 /lib/libkse/thread/thr_select.c | |
parent | 60125bd1a9e42a8b02f15396ba886b417c95bbc1 (diff) | |
download | FreeBSD-src-7350d1d3b2ec940c89a2b20f9d09985d9fd9e9d7.zip FreeBSD-src-7350d1d3b2ec940c89a2b20f9d09985d9fd9e9d7.tar.gz |
Submitted by: John Birrell <cimaxp1!jb@werple.net.au>
Here are the diffs for libc_r to get it one step closer to P1003.1c
These make most of the thread/mutex/condvar structures opaque to the
user. There are three functions which have been renamed with _np
suffixes because they are extensions to P1003.1c (I did them for JAVA,
which needs to suspend/resume threads and also start threads suspended).
I've created a new header (pthread_np.h) for the non-POSIX stuff.
The egrep tags stuff in /usr/src/lib/libc_r/Makefile that I uncommented
doesn't work. I think its best to delete it. I don't think libc_r needs
tags anyway, 'cause most of the source is in libc which does have tags.
also:
Here's the first batch of man pages for the thread functions.
The diff to /usr/src/lib/libc_r/Makefile removes some stuff that was
inherited from /usr/src/lib/libc/Makefile that should only be done with
libc.
also:
I should have sent this diff with the pthread(3) man page.
It allows people to type
make -DWANT_LIBC_R world
to get libc_r built with the rest of the world. I put this in the
pthread(3) man page. The default is still not to build libc_r.
also:
The diff attached adds a pthread(3) man page to /usr/src/share/man/man3.
The idea is that without libc_r installed, this man page will give people
enough info to know that they have to build libc_r.
Diffstat (limited to 'lib/libkse/thread/thr_select.c')
-rw-r--r-- | lib/libkse/thread/thr_select.c | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/lib/libkse/thread/thr_select.c b/lib/libkse/thread/thr_select.c index b3f5483..7db3ed2 100644 --- a/lib/libkse/thread/thr_select.c +++ b/lib/libkse/thread/thr_select.c @@ -142,36 +142,29 @@ select(int numfds, fd_set * readfds, fd_set * writefds, if (ret > 0) { if (readfds != NULL) { - FD_ZERO(readfds); for (i = 0; i < numfds; i++) { - if (FD_ISSET(i, &data.readfds)) { - FD_SET(i, readfds); + if (FD_ISSET(i, readfds) && + !FD_ISSET(i, &data.readfds)) { + FD_CLR(i, readfds); } } } if (writefds != NULL) { - FD_ZERO(writefds); for (i = 0; i < numfds; i++) { - if (FD_ISSET(i, &data.writefds)) { - FD_SET(i, writefds); + if (FD_ISSET(i, writefds) && + !FD_ISSET(i, &data.writefds)) { + FD_CLR(i, writefds); } } } if (exceptfds != NULL) { - FD_ZERO(exceptfds); for (i = 0; i < numfds; i++) { - if (FD_ISSET(i, &data.exceptfds)) { - FD_SET(i, exceptfds); + if (FD_ISSET(i, exceptfds) && + !FD_ISSET(i, &data.exceptfds)) { + FD_CLR(i, exceptfds); } } } - } else { - if (exceptfds != NULL) - FD_ZERO(exceptfds); - if (writefds != NULL) - FD_ZERO(writefds); - if (readfds != NULL) - FD_ZERO(readfds); } return (ret); |