>

Пакеты Conan>

linux-syscall-support

linux-syscall-support

Набор заголовочных файлов, предоставляющий безопасные и переносимые обёртки для прямых системных вызовов Linux. Библиотека позволяет выполнять системные вызовы напрямую, минуя стандартную библиотеку C (libc), что полезно для низкоуровневых компонентов, рантаймов и инструментов, требующих минимальных зависимостей или полного контроля над взаимодействием с ядром.

Особенности

  • предоставляет макросы и функции для прямых системных вызовов Linux;
  • независима от стандартной библиотеки C (libc);
  • безопасные обёртки с проверкой ошибок и поддержкой 64-битных аргументов;
  • совместима с различными версиями ядра Linux.

Основные компоненты

LSS состоит из набора заголовочных файлов, которые определяют макросы и inline-функции для выполнения системных вызовов. Каждый системный вызов инкапсулирован в безопасную обёртку, скрывающую архитектурные различия (подробнее с документацией можно ознакомиться здесь).

Обёртки для системных вызовов

Библиотека предоставляет макросы и функции для наиболее часто используемых системных вызовов, таких как управление памятью, файловый ввод-вывод, управление процессами и сетевая коммуникация. Каждая обёртка гарантирует правильную передачу аргументов и обработку возвращаемых значений.

Основные системные вызовы:

  • sys_mmap(), sys_munmap() — управление памятью;
  • sys_open(), sys_read(), sys_write(), sys_close() — файловый ввод-вывод;
  • sys_brk() — изменение размера сегмента данных;
  • sys_clone(), sys_exit(), sys_waitpid() — управление процессами;
  • sys_socket(), sys_connect(), sys_sendto(), sys_recvfrom() — сетевая коммуникация;
  • sys_rt_sigaction(), sys_rt_sigprocmask() — управление сигналами.

Поддержка множества архитектур

LSS включает реализации системных вызовов для различных архитектур процессоров, используя соответствующие соглашения о вызовах и номера системных вызовов. Это позволяет одному и тому же коду работать на разных платформах без изменений.

Поддерживаемые архитектуры:

  • x86 (32-битный) с использованием int 0x80 или sysenter;
  • x86-64 (64-битный) с использованием syscall;
  • ARM (32-битный) с использованием swi или svc;
  • ARM64 (AArch64) с использованием svc;
  • MIPS (32-битный и 64-битный);
  • PowerPC (32-битный и 64-битный).

Безопасные обёртки и обработка ошибок

Все обёртки LSS проверяют результат системного вызова и возвращают ошибки в стандартизированном формате. Это упрощает обработку ошибок и делает код более надежным.

Особенности безопасных обёрток:

  • Проверка возвращаемых значений на ошибки;
  • Установка errno в случае ошибки (если используется вместе с libc);
  • Поддержка 64-битных аргументов на 32-битных архитектурах;
  • Гарантия атомарности операций, где это требуется;
  • Корректная обработка сигналов и прерываний.

Совместимость с разными версиями ядра

LSS учитывает различия в системных вызовах между разными версиями ядра Linux, обеспечивая корректную работу как на старых, так и на новых системах. Это включает поддержку устаревших системных вызовов и использование более новых, когда они доступны.

Особенности совместимости:

  • Автоматическое определение доступных системных вызовов;
  • Поддержка устаревших интерфейсов для обратной совместимости;
  • Использование расширенных системных вызовов (например, preadv2, pwritev2) при наличии;
  • Учет различий в ABI между версиями ядра.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "linux-syscall-support/cci.20200813@aurora",
    )    

Процесс локальной сборки описан в документации.

linux-syscall-support

Linux Syscall Support provides a header file that can be included into your application whenever you need to make direct system calls.
Лицензия
BSD-3-Clause
Версия
Скачать
package
27.61 Kb
MD5: 63bdf464b77c3b4ef645e5f9e8aeff43
Updated: 04.09.2025, 09:42:03
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.