![]() |
![]() |
![]() |
Handle an _IO_LSEEK message
#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() 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.
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
iofunc_chmod_default(), iofunc_chown_default(), iofunc_close_dup_default(), iofunc_close_ocb_default(), iofunc_devctl_default(), iofunc_lock_default(), iofunc_lseek_default(), iofunc_mmap_default(), iofunc_open_default(), iofunc_pathconf_default(), iofunc_stat_default(), iofunc_time_update(), iofunc_unblock_default(), iofunc_utime_default(), resmgr_attach()
![]() |
![]() |
![]() |