POSIX implementation specifics

In KasperskyOS, the specific implementation of some POSIX interfaces not entirely defined by the POSIX.1-2008 standard differs from the implementation of these interfaces in Linux and other UNIX-like operating systems. Information about these interfaces is provided in the table below.

POSIX interfaces and their implementation specifics

Interface

Purpose

Implementation

Header file based on the POSIX.1-2008 standard

bind()

Assign a name to a socket.

When using a VFS version that supports only network operations, files of sockets in the AF_UNIX family are saved in a special file system implemented by this VFS version when bind() is called. A socket file can be created only in the root of the file system or in the /tmp directory, and it can be re-used after the socket is closed.

sys/socket.h

mmap()

Map to memory.

The MAP_FIXED flag in the flags parameter is not supported.

Mapping more than 4 GB is not supported on hardware platforms running an AArch64 (Arm64) processor architecture.

sys/mman.h

read()

Read from a file.

If the size of the buf buffer exceeds the size of the read data, the remainder of this buffer is filled with zeros.

unistd.h

poll()

Track the state of file handles.

You cannot combine invalid file handles (for example, closed handles, unavailable handles, or handles with invalid values) with a negative timeout parameter value (unlimited timeout). In this case, the function returns -1, and errno is set to EINVAL.

sys/poll.h

select()

Track the state of file handles.

You cannot call a function with null values for all parameters. In this case, the function returns -1, and errno is set to EINVAL.

sys/select.h

fcntl()

Perform operations with a file handle.

The Linux-specific F_SETPIPE_SZ and F_GETPIPE_SZ macros are supported.

fcntl.h

In KasperskyOS, the errno variable can take the values of both standard POSIX error codes and those specific to KasperskyOS. For information about error codes specific to KasperskyOS, see Return codes.

Page top