Обработать сообщение _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 );
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.
_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).off_t
.ЗОСРВ «Нейтрино»
iofunc_attr_t, io_lseek_t, iofunc_lseek_default(), iofunc_ocb_t, lseek(), resmgr_context_t
Предыдущий раздел: Описание API системной библиотеки