В KasperskyOS ограниченно реализован POSIX с ориентацией на стандарт POSIX.1-2008. Прежде всего ограничения связаны с обеспечением безопасности.
Отсутствует поддержка XSI и опциональной функциональности.
Ограничения затрагивают:
Ограничения представлены:
errno значения ENOSYS и возвращения значения -1.В KasperskyOS сигналы не могут прервать системные вызовы Call(), Recv(), Reply(), которые обеспечивают работу библиотек, реализующих интерфейс POSIX.
Ядро KasperskyOS не посылает сигналы.
На аппаратных платформах с процессорной архитектурой Arm входные и выходные параметры интерфейсов POSIX нельзя сохранять в памяти типа "Device memory", поскольку это может привести к неопределенному поведению. Параметры интерфейсов POSIX нужно сохранять в памяти типа "Normal memory". Чтобы копировать данные из памяти типа "Device memory" в память типа "Normal memory" и обратно, нужно использовать функцию RtlPedanticMemcpy(), объявленную в заголовочном файле sysroot-*-kos/include/rtl/string_pedantic.h из состава KasperskyOS SDK.
Ограничения взаимодействия между процессами
Интерфейс  | 
Назначение  | 
Реализация  | 
Заголовочный файл по стандарту POSIX.1-2008  | 
|---|---|---|---|
  | 
Создать новый (дочерний) процесс.  | 
Не реализован.  | 
  | 
 
  | 
Зарегистрировать обработчики, которые вызываются перед и после создания дочернего процесса.  | 
Не реализован.  | 
  | 
  | 
Ожидать остановки или завершения дочернего процесса.  | 
Заглушка.  | 
  | 
  | 
Ожидать изменения состояния дочернего процесса.  | 
Не реализован.  | 
  | 
  | 
Ожидать остановки или завершения дочернего процесса.  | 
Заглушка.  | 
  | 
  | 
Запустить исполняемый файл.  | 
Не реализован.  | 
  | 
  | 
Запустить исполняемый файл.  | 
Не реализован.  | 
  | 
  | 
Запустить исполняемый файл.  | 
Не реализован.  | 
  | 
  | 
Запустить исполняемый файл.  | 
Не реализован.  | 
  | 
  | 
Запустить исполняемый файл.  | 
Не реализован.  | 
  | 
  | 
Запустить исполняемый файл.  | 
Не реализован.  | 
  | 
  | 
Запустить исполняемый файл.  | 
Не реализован.  | 
  | 
  | 
Перевести процесс в другую группу или создать группу.  | 
Заглушка.  | 
  | 
  | 
Создать сессию.  | 
Заглушка.  | 
  | 
  | 
Получить идентификатор группы вызывающего процесса.  | 
Заглушка.  | 
  | 
  | 
Получить идентификатор группы.  | 
Заглушка.  | 
  | 
  | 
Получить идентификатор родительского процесса.  | 
Заглушка.  | 
  | 
  | 
Получить идентификатор сессии.  | 
Заглушка.  | 
  | 
  | 
Получить значения времени для процесса и его потомков.  | 
Заглушка.  | 
  | 
  | 
Послать сигнал процессу или группе процессов.  | 
Можно посылать только сигнал   | 
  | 
  | 
Ожидать сигнала.  | 
Заглушка.  | 
  | 
  | 
Проверить наличие полученных заблокированных сигналов.  | 
Не реализован.  | 
  | 
  | 
Послать сигнал процессу.  | 
Не реализован.  | 
  | 
  | 
Ожидать сигнала из заданного набора сигналов.  | 
Не реализован.  | 
  | 
  | 
Ожидать сигнала из заданного набора сигналов.  | 
Не реализован.  | 
  | 
  | 
Создать неименованный семафор.  | 
Нельзя создать неименованный семафор для синхронизации между процессами. Если передать ненулевое значение через параметр   | 
  | 
  | 
Создать/открыть именованный семафор.  | 
Нельзя открыть именованный семафор, который был создан другим процессом. Именованные семафоры (как и неименованные) являются локальными, то есть они доступны только тому процессу, который их создал.  | 
  | 
 
  | 
Создать спин-блокировку.  | 
Нельзя создать спин-блокировку для синхронизации между процессами. Если передать значение   | 
  | 
  | 
Отобразить в память.  | 
Нельзя выполнить отображение в память для взаимодействия между процессами. Если передать значения   | 
  | 
  | 
Задать права доступа к памяти.  | 
Для целей безопасности некоторые конфигурации ядра KasperskyOS запрещают предоставлять доступ к регионам виртуальной памяти на запись и исполнение одновременно. Если при использовании такой конфигурации ядра через параметр   | 
  | 
  | 
Создать неименованный канал.  | 
Нельзя использовать неименованный канал для передачи данных между процессами. Неименованные каналы являются локальными, то есть они доступны только тому процессу, который их создал.  | 
  | 
  | 
Создать специальный файл FIFO (именованный канал).  | 
Заглушка.  | 
  | 
  | 
Создать специальный файл FIFO (именованный канал).  | 
Не реализован.  | 
  | 
Ограничения взаимодействия между потоками исполнения посредством сигналов
Интерфейс  | 
Назначение  | 
Реализация  | 
Заголовочный файл по стандарту POSIX.1-2008  | 
|---|---|---|---|
  | 
Послать сигнал потоку исполнения.  | 
Нельзя послать сигнал потоку исполнения. Если передать номер сигнала через параметр   | 
  | 
  | 
Восстановить состояние потока управления и маску сигналов.  | 
Не реализован.  | 
  | 
  | 
Сохранить состояние потока управления и маску сигналов.  | 
Не реализован.  | 
  | 
Ограничения асинхронного ввода-вывода
Интерфейс  | 
Назначение  | 
Реализация  | 
Заголовочный файл по стандарту POSIX.1-2008  | 
|---|---|---|---|
  | 
Отменить запросы ввода-вывода, которые ожидают обработки.  | 
Не реализован.  | 
  | 
  | 
Получить ошибку операции асинхронного ввода-вывода.  | 
Не реализован.  | 
  | 
  | 
Запросить выполнение операций ввода-вывода.  | 
Не реализован.  | 
  | 
  | 
Запросить чтение из файла.  | 
Не реализован.  | 
  | 
  | 
Получить статус операции асинхронного ввода-вывода.  | 
Не реализован.  | 
  | 
  | 
Ожидать завершения операций асинхронного ввода-вывода.  | 
Не реализован.  | 
  | 
  | 
Запросить запись в файл.  | 
Не реализован.  | 
  | 
  | 
Запросить выполнение набора операций ввода-вывода.  | 
Не реализован.  | 
  | 
Ограничения использования робастных мьютексов
Интерфейс  | 
Назначение  | 
Реализация  | 
Заголовочный файл по стандарту POSIX.1-2008  | 
|---|---|---|---|
  | 
Вернуть робастный мьютекс в консистентное состояние.  | 
Не реализован.  | 
  | 
  | 
Получить атрибут робастности мьютекса.  | 
Не реализован.  | 
  | 
  | 
Задать атрибут робастности мьютекса.  | 
Не реализован.  | 
  | 
Ограничения работы с терминалом
Интерфейс  | 
Назначение  | 
Реализация  | 
Заголовочный файл по стандарту POSIX.1-2008  | 
|---|---|---|---|
  | 
Получить путь к файлу управляющего терминала.  | 
Только возвращает или передает через параметр   | 
  | 
  | 
Задать параметры терминала.  | 
Скорость ввода, скорость вывода и другие параметры, специфичные для аппаратных терминалов, игнорируются.  | 
  | 
  | 
Ожидать завершения вывода.  | 
Только возвращает значение   | 
  | 
  | 
Приостановить или возобновить прием или передачу данных.  | 
Приостановка вывода и запуск приостановленного вывода не поддерживаются.  | 
  | 
  | 
Очистить очередь ввода или очередь вывода, или обе эти очереди.  | 
Только возвращает значение   | 
  | 
  | 
Разорвать соединение с терминалом на заданное время.  | 
Только возвращает значение   | 
  | 
  | 
Получить путь к файлу терминала.  | 
Только возвращает нулевой указатель.  | 
  | 
  | 
Получить путь к файлу терминала.  | 
Только возвращает значение ошибки.  | 
  | 
  | 
Получить идентификатор группы процессов, использующих терминал.  | 
Только возвращает значение   | 
  | 
  | 
Задать идентификатор группы процессов, использующих терминал.  | 
Только возвращает значение   | 
  | 
  | 
Получить идентификатор группы процессов для лидера сессии, связанной с терминалом.  | 
Только возвращает значение   | 
  | 
Ограничения работы с оболочкой
Интерфейс  | 
Назначение  | 
Реализация  | 
Заголовочный файл по стандарту POSIX.1-2008  | 
|---|---|---|---|
  | 
Создать дочерний процесс для выполнения команды и неименованный канал с этим процессом.  | 
Не реализован.  | 
  | 
  | 
Закрыть неименованный канал с дочерним процессом, созданным   | 
Не реализован.  | 
  | 
  | 
Создать дочерний процесс для выполнения команды.  | 
Заглушка.  | 
  | 
  | 
Раскрыть строку как в оболочке.  | 
Не реализован.  | 
  | 
  | 
Освободить память, выделенную для результатов вызова   | 
Не реализован.  | 
  | 
Ограничения управления дескрипторами файлов
Интерфейс  | 
Назначение  | 
Реализация  | 
Заголовочный файл по стандарту POSIX.1-2008  | 
|---|---|---|---|
  | 
Сделать копию дескриптора открытого файла.  | 
Поддерживаются дескрипторы обычных файлов, стандартных потоков ввода-вывода, сокетов и каналов. Не гарантируется, что будет получен наименьший свободный дескриптор.  | 
  | 
  | 
Сделать копию дескриптора открытого файла.  | 
Поддерживаются дескрипторы обычных файлов, стандартных потоков ввода-вывода, сокетов и каналов. Через параметр   | 
  | 
Ограничения использования таймеров
Интерфейс  | 
Назначение  | 
Реализация  | 
Заголовочный файл по стандарту POSIX.1-2008  | 
|---|---|---|---|
  | 
Получить значение времени.  | 
Если передать значение   | 
  | 
  | 
Получить процессорное время, затраченное на исполнение вызывающего процесса.  | 
Возвращает время с момента запуска ядра KasperskyOS в миллисекундах.  | 
  | 
Получение системных параметров
Интерфейс  | 
Назначение  | 
Реализация  | 
Заголовочный файл по стандарту POSIX.1-2008  | 
|---|---|---|---|
  | 
Получить системный параметр.  | 
Заглушка.  | 
  |