Использование файловой системы ROMFS (romfs.h)

API определен в заголовочном файле sysroot-*-kos/include/kos/romfs.h из состава KasperskyOS SDK.

API предназначен для работы с файловыми системами ROMFS: образом ROMFS, поставляемым в составе образа ядра KasperskyOS, и образом ROMFS, помещаемым в память загрузчиком (аналогично initrd в Linux). Механизм, реализующий API, не использует VFS.

Входные и выходные данные некоторых функций API связаны с BLOB-объектами, поскольку в реализации API romfs.h используется API blob_api.h, который предназначен для получения доступа к именованным BLOB-объектам.

Сведения о функциях API приведены в таблице ниже.

Монтирование образа ROMFS

Чтобы смонтировать образ ROMFS, нужно вызвать функцию KosRomFsMount() или KosRomFsMountByHandle().

Через параметр romFsName функций KosRomFsMount() или KosRomFsMountByHandle() нужно задать произвольное имя точки монтирования, размер которого не должен превышать значения константы KOS_ROMFS_MAX_NAME (без учета терминирующего нуля). В одном процессе каждая точка монтирования должна иметь уникальное имя.

Через параметр blobName функции KosRomFsMount() нужно задать имя BLOB-объекта с требуемым образом ROMFS: romfs.0 или romfs.1. В первом случае будет смонтирован образ ROMFS из состава образа ядра, во втором случае будет смонтирован образ ROMFS, помещаемый в память загрузчиком.

В параметре blob функции KosRomFsMountByHandle() нужно указать дескриптор BLOB-объекта с требуемым образом ROMFS. Этот дескриптор нужно получить вызовом функции KnBlobGet() из API blob_api.h. Через параметр name функции KnBlobGet() нужно задать имя BLOB-объекта с требуемым образом ROMFS: romfs.0 или romfs.1 (аналогично параметру blobName функции KosRomFsMount()). После монтирования можно закрыть дескриптор BLOB-объекта.

Функции KosRomFsMount() и KosRomFsMountByHandle() выполняют монтирование только в вызывающем процессе. Для одного и того же образа ROMFS может существовать одновременно несколько точек монтирования, созданных вызовами функции KosRomFsMount() или KosRomFsMountByHandle(), в одном или нескольких процессах.

Открытие файла

Чтобы открыть файл, нужно вызвать функцию KosRomFsOpen(), указав строку вида <имя точки монтирования>/<имя файла> через параметр path.

Для одного и того же файла может существовать одновременно несколько идентификаторов, полученных вызовами функции KosRomFsOpen(), в одном или нескольких процессах. При этом операции с файлом через разные идентификаторы выполняются без взаимного влияния.

Чтение данных из файла

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

Получение сведений о файле

Чтобы получить размер файла, нужно вызвать функцию KosRomFsGetFileSize().

Чтобы получить сведения, включающие размер файла, уникальный идентификатор файла в ROMFS и SID для BLOB-объекта с образом ROMFS, нужно вызвать функцию KosRomFsGetFileStat().

Закрытие файла

Чтобы закрыть файл, нужно вызвать функцию KosRomFsClose().

Размонтирование образа ROMFS

Чтобы размонтировать образ ROMFS, нужно вызвать функцию KosRomFsUnmount().

Чтобы размонтировать все образы ROMFS, нужно вызвать функцию KosRomFsUnmountAll().

Функции KosRomFsUnmount() и KosRomFsUnmountAll() выполняют размонтирование только в вызывающем процессе.

Файл, открытый на момент размонтирования образа ROMFS, остается доступным для выполнения операций до своего закрытия.

Сведения о функциях API

Функции romfs.h

Функция

Сведения о функции

KosRomFsMount()

Назначение

Монтирует образ ROMFS.

Параметры

  • [in] romFsName – указатель на имя точки монтирования.
  • [in] blobName – указатель на имя BLOB-объекта с образом ROMFS.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

KosRomFsMountByHandle()

Назначение

Монтирует образ ROMFS.

Параметры

  • [in] romFsName – указатель на имя точки монтирования.
  • [in] blob – дескриптор BLOB-объекта с образом ROMFS.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

KosRomFsUnmount()

Назначение

Размонтирует образ ROMFS.

Параметры

  • [in] romFsName – указатель на имя точки монтирования.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

KosRomFsUnmountAll()

Назначение

Размонтирует все образы ROMFS.

Параметры

Нет.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

KosRomFsOpen()

Назначение

Открывает файл.

Параметры

  • [in] path – указатель на строку вида <имя точки монтирования>/<имя файла>.
  • [out] file – указатель на идентификатор файла.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

KosRomFsClose()

Назначение

Закрывает файл.

Параметры

  • [in] file – идентификатор файла.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

KosRomFsRead()

Назначение

Читает данные из файла, начиная с заданного смещения.

Параметры

  • [in] file – идентификатор файла.
  • [in] offset – смещение (относительно начала файла), с которого нужно начать чтение, в байтах.
  • [out] buf – указатель на буфер для считанных данных.
  • [in] bufSize – размер буфера, заданного через параметр buf, в байтах.
  • [out] read – фактический размер считанных данных в байтах.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

KosRomFsGetFileSize()

Назначение

Позволяет получить размер файла.

Параметры

  • [in] file – идентификатор файла.
  • [out] size – указатель на размер файла в байтах.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

KosRomFsGetFileStat()

Назначение

Позволяет получить сведения о файле.

Параметры

  • [in] file – идентификатор файла.
  • [out] stat – указатель на структуру, содержащую размер файла в байтах, уникальный идентификатор файла в ROMFS, SID для BLOB-объекта с образом ROMFS.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

В начало