Pipes cannot use SOCK_DGRAM. Back to SOCK_STREAM.

Add debugging to fdwait.

Rewrite getcallerpc on PowerMac to be correct.
This commit is contained in:
rsc 2004-03-05 02:25:41 +00:00
parent 02a1a5c18b
commit c91bd3283a
7 changed files with 27 additions and 18 deletions

View file

@ -167,7 +167,7 @@ threadfdwaitsetup(void)
}
void
threadfdwait(int fd, int rw)
_threadfdwait(int fd, int rw, ulong pc)
{
int i;
@ -192,10 +192,17 @@ threadfdwait(int fd, int rw)
pfd[i].fd = fd;
pfd[i].events = rw=='r' ? POLLIN : POLLOUT;
polls[i].c = &s.c;
//threadstate("fdwait %d %d", f->fd, e);
//fprint(2, "%s [%3d] fdwait %d %c list *0x%lux\n",
argv0, threadid(), fd, rw, pc);
recvul(&s.c);
}
void
threadfdwait(int fd, int rw)
{
_threadfdwait(fd, rw, getcallerpc(&fd));
}
void
threadsleep(int ms)
{
@ -230,7 +237,7 @@ again:
if(errno == EINTR)
goto again;
if(errno == EAGAIN || errno == EWOULDBLOCK){
threadfdwait(fd, 'r');
_threadfdwait(fd, 'r', getcallerpc(&fd));
goto again;
}
}
@ -249,7 +256,7 @@ again:
if(errno == EINTR)
goto again;
if(errno == EAGAIN || errno == EWOULDBLOCK){
threadfdwait(fd, 'r');
_threadfdwait(fd, 'r', getcallerpc(&fd));
goto again;
}
}
@ -268,7 +275,7 @@ again:
if(errno == EINTR)
goto again;
if(errno == EAGAIN || errno == EWOULDBLOCK){
threadfdwait(fd, 'w');
_threadfdwait(fd, 'w', getcallerpc(&fd));
goto again;
}
}
@ -303,7 +310,7 @@ again:
if(errno == EINTR)
goto again;
if(errno == EAGAIN || errno == EWOULDBLOCK){
threadfdwait(fd, 'w');
_threadfdwait(fd, 'w', getcallerpc(&fd));
goto again;
}
}