Skip to content

Port I/O and Networking

0x30 (Send value to port)

Write one byte to a hardware I/O port. Both args are pointers — the kernel dereferences them.

Argument 1 Argument 2 Implemented
pointer to port number (*const u16) pointer to value (*const u32; low byte written)

0x31 (Receive value from port)

Read a 32-bit value from a hardware I/O port. Both args are pointers — the kernel dereferences them.

Argument 1 Argument 2 Implemented
pointer to port number (*const u16) pointer to output (*mut u32; receives the result)

0x32 (Serial port)

UART port COM1.

Argument 1 Argument 2 Meaning Implemented
0x01 0x00 Serial port initialization.
0x02 pointer to value Read from the serial port.
0x03 pointer to value Write to the serial port.

0x33 (Create packet)

Argument 1 Argument 2 Meaning Implemented
0x01 pointer to buffer Create an IPv4 packet.
0x02 pointer to buffer Create an ICMP packet.
0x03 pointer to buffer Create a TCP packet.

0x34 (Send frame/packet)

Argument 1 Argument 2 Meaning Implemented
0x01 pointer to buffer Send an IPv4 packet (derives frame length from the IP header).
0x04 pointer to raw Ethernet frame Send a raw Ethernet frame. Length is derived from the EtherType field (0x0800 = IPv4, 0x0806 = ARP).

0x35 (Socket receive)

Pops a message from the calling process' MQ. Non-blocking returns 0 immediately if the queue is empty; blocking suspends the process until a frame arrives.

Argument 1 Argument 2 Implemented
0x00 = non-blocking, non-zero = blocking pointer to buffer

0x36 (Socket send)

Copies 512 bytes from the buffer and pushes a message to the target process' MQ, then wakes the target.

Argument 1 Argument 2 Implemented
target process PID pointer to buffer

0x37 (Register Ethernet driver, bind TCP port)

Ethernet driver registration, or port binding.

Argument 1 Argument 2 Implemented
TCP port number (0 for global driver) unused

0x38 (Get networking status)

Query network status (read-only). Writes { mac[6], ip[4], drv_active, n_ports, ports[16] } into the struct.

Returns InvalidInput on invalid pointer, Ok otherwise.

Argument 1 Argument 2 Implemented
pointer to NetStatus struct unused