mirror of
https://github.com/ksherlock/marignotti.git
synced 2024-12-11 17:51:04 +00:00
ioctl(2)
This commit is contained in:
parent
20095e12d2
commit
b71ea9536d
46
mioctl.c
Normal file
46
mioctl.c
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#include "marignotti.h"
|
||||||
|
#include <gno/kerntool.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
|
||||||
|
#pragma noroot
|
||||||
|
#pragma optimize 79
|
||||||
|
|
||||||
|
int mioctl(Entry *e, void *p1, void *p2, void *p3, void *p4, void *p5)
|
||||||
|
{
|
||||||
|
Word t;
|
||||||
|
Word terr;
|
||||||
|
|
||||||
|
LongWord tioc = *(LongWord *)p1;
|
||||||
|
void *data = (void *)p3;
|
||||||
|
|
||||||
|
if (tioc == FIONREAD)
|
||||||
|
{
|
||||||
|
// return # of bytes available
|
||||||
|
IncBusy();
|
||||||
|
terr = TCPIPStatusTCP(e->ipid, &e->sr);
|
||||||
|
t = _toolErr;
|
||||||
|
DecBusy();
|
||||||
|
if (t) terr = t;
|
||||||
|
|
||||||
|
if (data) *(Word *)data = e->sr.srRcvQueued;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tioc == FIONBIO)
|
||||||
|
{
|
||||||
|
// set/clear non-blocking io.
|
||||||
|
int tmp;
|
||||||
|
|
||||||
|
tmp = data ? *(int *)data : 0;
|
||||||
|
e->_NONBLOCK = tmp ? 1 : 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// SIOCSHIWAT / SIOCGHIWAT ?
|
||||||
|
// SIOCSLOWAT / SIOCGLOWAT ?
|
||||||
|
|
||||||
|
return EINVAL;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user