Request
| Index Word
 | 
Description
 | 
| 0
 | 
Header code [0x00140084]
 | 
| 1
 | 
nfds_t nfds
 | 
| 2
 | 
int timeout
 | 
| 3
 | 
Value 0x20 (processID header)
 | 
| 4
 | 
ProcessID set by the ARM11 kernel.
 | 
| 5
 | 
(insize<<14)  | 0x2802
 | 
| 6
 | 
Pointer to input pollfd struct array
 | 
The following is located 0x100-bytes after the beginning of the above command buffer:
| Index Word
 | 
Description
 | 
| 0
 | 
(outsize<<14)  | 2
 | 
| 1
 | 
Pointer to output pollfd struct array
 | 
Response
| Index Word
 | 
Description
 | 
| 0
 | 
Header code
 | 
| 1
 | 
Result code
 | 
| 2
 | 
POSIX return value
 | 
pollfd struct
| Type
 | 
Name
 | 
Description
 | 
| u32
 | 
fd
 | 
Socket handle
 | 
| u32
 | 
events
 | 
Events to poll for (input)
 | 
| u32
 | 
revents
 | 
Events received (output)
 | 
Events
Events are a bitwise set of these flags.
| Value
 | 
Name
 | 
Input/Output
 | 
Description
 | 
| 0x01
 | 
POLLIN
 | 
Both
 | 
Can recv() data from socket without blocking. For listen sockets, this means you can accept() a connection without blocking.
 | 
| 0x02
 | 
POLLPRI
 | 
Both
 | 
There is OOB data ready to recv(). Appears that recv()'ing without OOB flag still reads OOB data?
 | 
| 0x04
 | 
???
 | 
???
 | 
Have never seen this flag. Could possibly be POLLHUP (need to test).
 | 
| 0x08
 | 
POLLERR
 | 
Out
 | 
Socket has an error condition.
 | 
| 0x10
 | 
POLLOUT
 | 
Both
 | 
Can send() data to socket without blocking. For a non-blocking connect(), this means the connection has completed (need to test).
 | 
| 0x20
 | 
POLLNVAL
 | 
Out
 | 
Invalid socket handle. This is set if you use fd=-1, which is non-standard behavior.
 | 
| ???
 | 
POLLHUP
 | 
Out
 | 
Socket has been disconnected.
 |