IPC and lib Functions

Inter-Process Communication and library functions have two small directories dedicated to them.

The ipc directory includes a generic file called util.c and one source file for each communication facility: sem.c, shm.c, and msg.c. msg.c is in charge of message queues and the kerneld engine, kerneld_send. If IPC is not enabled at compile time, util.c exports empty functions that implement IPC-related system calls by returning -ENOSYS.

The library functions are like the utilities and variables that you usually use in C programs: sprintf, vsprintf, the errno integer variable, and the _ctype array used by the various <linux/ctype.h> macros. The file string.c contains portable implementations of the string functions, but they are compiled only if the architecture-specific code does not include optimized inline functions. If the inline functions are defined in the header, the implementations in string.c are left out of the game by #ifdef statements.

The most ``interesting'' file in lib is inflate.c, which is the ``gunzip'' part of gzip, extracted from gzip itself to allow using a compressed RAM disk at boot time. This technique is used whenever the needed data wouldn’t fit on a floppy unless compressed.

Get Linux Device Drivers now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.