mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-27 14:58:30 +00:00
Fix POLLIN|POLLOUT when together on Windows
This commit is contained in:
parent
33d280c8ba
commit
c48ee8e4fe
3 changed files with 32 additions and 4 deletions
|
@ -131,7 +131,7 @@ textwindows int sys_poll_nt(struct pollfd *fds, uint64_t nfds, uint64_t *ms,
|
||||||
if (pipefds[i].events & POLLOUT) {
|
if (pipefds[i].events & POLLOUT) {
|
||||||
// we have no way of polling if a non-socket is writeable yet
|
// we have no way of polling if a non-socket is writeable yet
|
||||||
// therefore we assume that if it can happen, it shall happen
|
// therefore we assume that if it can happen, it shall happen
|
||||||
pipefds[i].revents = POLLOUT;
|
pipefds[i].revents |= POLLOUT;
|
||||||
}
|
}
|
||||||
if (pipefds[i].events & POLLIN) {
|
if (pipefds[i].events & POLLIN) {
|
||||||
if (GetFileType(pipefds[i].handle) == kNtFileTypePipe) {
|
if (GetFileType(pipefds[i].handle) == kNtFileTypePipe) {
|
||||||
|
@ -140,15 +140,15 @@ textwindows int sys_poll_nt(struct pollfd *fds, uint64_t nfds, uint64_t *ms,
|
||||||
pipefds[i].handle, avail, ok);
|
pipefds[i].handle, avail, ok);
|
||||||
if (ok) {
|
if (ok) {
|
||||||
if (avail) {
|
if (avail) {
|
||||||
pipefds[i].revents = POLLIN;
|
pipefds[i].revents |= POLLIN;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pipefds[i].revents = POLLERR;
|
pipefds[i].revents |= POLLERR;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// we have no way of polling if a non-socket is readable yet
|
// we have no way of polling if a non-socket is readable yet
|
||||||
// therefore we assume that if it can happen it shall happen
|
// therefore we assume that if it can happen it shall happen
|
||||||
pipefds[i].revents = POLLIN;
|
pipefds[i].revents |= POLLIN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (pipefds[i].revents) {
|
if (pipefds[i].revents) {
|
||||||
|
|
27
libc/intrin/isatleastwindows10.c
Normal file
27
libc/intrin/isatleastwindows10.c
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
|
||||||
|
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
|
||||||
|
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||||
|
│ Copyright 2023 Justine Alexandra Roberts Tunney │
|
||||||
|
│ │
|
||||||
|
│ Permission to use, copy, modify, and/or distribute this software for │
|
||||||
|
│ any purpose with or without fee is hereby granted, provided that the │
|
||||||
|
│ above copyright notice and this permission notice appear in all copies. │
|
||||||
|
│ │
|
||||||
|
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
|
||||||
|
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
|
||||||
|
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
|
||||||
|
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
|
||||||
|
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
|
||||||
|
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
|
||||||
|
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||||
|
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||||
|
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||||
|
#include "libc/nt/version.h"
|
||||||
|
|
||||||
|
bool(IsAtLeastWindows10)(void) {
|
||||||
|
#ifdef __x86_64__
|
||||||
|
return IsAtLeastWindows10();
|
||||||
|
#else
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
}
|
|
@ -4,6 +4,7 @@
|
||||||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||||
COSMOPOLITAN_C_START_
|
COSMOPOLITAN_C_START_
|
||||||
|
|
||||||
|
bool IsAtLeastWindows10(void) pureconst;
|
||||||
bool32 GetVersionEx(struct NtOsVersionInfo *lpVersionInformation);
|
bool32 GetVersionEx(struct NtOsVersionInfo *lpVersionInformation);
|
||||||
|
|
||||||
#if defined(__GNUC__) && !defined(__STRICT_ANSI__) && defined(__x86_64__)
|
#if defined(__GNUC__) && !defined(__STRICT_ANSI__) && defined(__x86_64__)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue