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:
parent
02a1a5c18b
commit
c91bd3283a
7 changed files with 27 additions and 18 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue