diff --git a/ports/include/noux_session/sysio.h b/ports/include/noux_session/sysio.h index 5729ebd73f..f3cf19b8b0 100644 --- a/ports/include/noux_session/sysio.h +++ b/ports/include/noux_session/sysio.h @@ -92,9 +92,10 @@ namespace Noux { */ struct Ioctl_in { - enum Opcode { OP_UNDEFINED, OP_TIOCGWINSZ }; + enum Opcode { OP_UNDEFINED, OP_TIOCGWINSZ, OP_FIONBIO }; Opcode request; + int argp; }; /** diff --git a/ports/src/lib/libc_noux/plugin.cc b/ports/src/lib/libc_noux/plugin.cc index 01b9edfb5d..8caad5b2f2 100644 --- a/ports/src/lib/libc_noux/plugin.cc +++ b/ports/src/lib/libc_noux/plugin.cc @@ -861,9 +861,18 @@ namespace { break; + case FIONBIO: + { + if (verbose) + PDBG("FIONBIO - *argp=%d", *argp); + + sysio()->ioctl_in.request = Noux::Sysio::Ioctl_in::OP_FIONBIO; + sysio()->ioctl_in.argp = argp ? *(int*)argp : 0; + } + default: - PWRN("unsupported ioctl (request=0x%x", request); + PWRN("unsupported ioctl (request=0x%x)", request); break; } @@ -892,6 +901,9 @@ namespace { return 0; } + case FIONBIO: + return 0; + default: return -1; }