This implementation of the popular open source lwIP TCP/IP stack has been carefully designed for hard real-time control-type applications, in which the TCP/IP stack is used to monitor and configure the device as well as to provide remote user interface by means of the embedded web server (HTTP server). In particular, the lwIP stack, which is not reentrant, is strictly encapsulated inside a dedicated state machine object, so interrupt locking around the lwIP calls is unnecessary, which is critical for low interrupt latency. Also, the Ethernet interrupt service routine (ISR) runs very fast without performing any lengthy packet copying. This means that hard-real-time processing can be done at the task level, especially when you use the preemptive QK kernel built into QP for executing your application. No external RTOS component is needed to achieve fully deterministic real-time response of any tasks prioritized above the lwiP task.
The QP-lwIP integration uses exclusively the event-driven lwIP API. The heavyweight Berkeley-like socket API requiring a blocking RTOS and is not used, which results in much better performance of the lwIP stack and less memory consumption.
The lwIP source code has not been modified in any way to match the event-driven, run-to-completion execution model underlying QP. In other words, QP works with the standard lwIP code, as distributed from the lwIP homepage.
The QP-lwIP integration has been also carefully designed for portability. All hardware-specific code is clearly separated in the Ethernet/lwIP device driver with the clean interface to the lwIP stack and the QP application.