iofunc_lseek()

Обработать сообщение _IO_LSEEK

Прототип:

#include <sys/iofunc.h>
int iofunc_lseek( resmgr_context_t *ctp,
io_lseek_t *msg,
iofunc_ocb_t *ocb,
iofunc_attr_t *attr );

Аргументы:

ctp
A pointer to a resmgr_context_t structure that the resource-manager library uses to pass context information between functions.
msg
A pointer to the io_lseek_t structure that contains the message that the resource manager received.
ocb
A pointer to the iofunc_ocb_t structure for the Open Control Block that was created when the client opened the resource.
attr
A pointer to the iofunc_attr_t structure that describes the characteristics of the device that's associated with your resource manager.

Библиотека:

libc

Описание:

The iofunc_lseek() helper function implements POSIX semantics for the client's lseek() call, which is received as an _IO_LSEEK message by the resource manager.

The iofunc_lseek() function handles the three different whence cases: SEEK_SET, SEEK_CUR, and SEEK_END, updating the ocb->offset field with the new position.

Note that if the IOFUNC_MOUNT_32BIT flag isn't set in the mount structure, iofunc_lseek() handles 64-bit position offsets. If the flag is set (meaning this device supports only 32-bit offsets), the resulting offset value is treated as a 32-bit offset, and if it overflows 32 bits, it's truncated to LONG_MAX. Also, this function handles combine messages correctly, simplifying the work required to support lseek.

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

-1
Успешное завершение; the resource manager library should return a one-part IOV to the client.
EOK
The message is a combine message, and no error occurred.
EINVAL
The whence member in the _IO_LSEEK message wasn't one of SEEK_SET, SEEK_CUR, or SEEK_END, or the resulting position after the offset was applied resulted in a negative number (overflow).
EOVERFLOW
The resulting file offset is a value that can't be represented correctly in an object of type off_t.

Классификация:

ЗОСРВ «Нейтрино»

Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

iofunc_attr_t, io_lseek_t, iofunc_lseek_default(), iofunc_ocb_t, lseek(), resmgr_context_t




Предыдущий раздел: Описание API системной библиотеки