Skip to content

Day53 - UNIX Domain Socket and Local IPC Architecture

Summary

Today I implemented a complete AF_UNIX based local IPC middleware daemon.

The project evolved from a simple UNIX socket server into a multi-client event-driven dispatcher architecture integrated with a custom kernel driver.

Major focus areas included:

  • UNIX domain socket IPC
  • epoll-based dispatcher architecture
  • non-blocking socket design
  • TX queue management
  • flow control and backpressure
  • /dev/mypoll integration
  • kernel event broadcast
  • middleware daemon architecture

Implemented Features

AF_UNIX IPC

Implemented:

  • AF_UNIX stream socket server
  • UNIX socket client
  • socket file path handling
  • local IPC communication

Event Dispatcher

Built:

  • epoll event loop
  • event source abstraction
  • event dispatch architecture
  • handler-based processing flow

Multi-Client Support

Implemented:

  • linked-list based client management
  • connection lifecycle handling
  • client cleanup
  • epoll integration per client

Non-Blocking I/O

Integrated:

  • non-blocking socket mode
  • EAGAIN/EWOULDBLOCK handling
  • epoll-driven TX/RX flow

TX Queue

Designed a fixed-size TX queue:

struct tx_queue {
    char buf[TX_QUEUE_SIZE];
    size_t len;
    size_t offset;
};

Implemented helper APIs:

  • append
  • consume
  • clear
  • peek
  • read

Flow Control

Implemented:

  • EPOLLIN / EPOLLOUT switching
  • TX queue pressure handling
  • backpressure behavior
  • queue full protection

Verified that:

  • dispatcher does not block
  • server survives slow clients
  • client send eventually stalls correctly

Command Parser

Implemented command parser supporting:

  • start_timer
  • stop_timer
  • trigger
  • echo

Server now acts as a middleware layer controlling /dev/mypoll.


Kernel Event Integration

Integrated:

/dev/mypoll
epoll
broadcast
AF_UNIX clients

Successfully created a kernel-to-userspace event forwarding model.


Architecture Learned

This chapter introduced a complete middleware/service model similar to:

  • dbus-daemon
  • bluetoothd
  • modemmanager
  • MQTT broker

Key concepts learned:

  • local IPC daemon architecture
  • multi-event-source epoll loop
  • userspace event broker
  • kernel event forwarding
  • flow control
  • backpressure handling
  • middleware abstraction

Result

The final system supports:

  • local IPC
  • multi-client communication
  • command parser
  • asynchronous kernel events
  • event broadcast
  • epoll-based dispatcher
  • middleware daemon architecture