Warning: main(/www/www/htdocs/style/globals.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/i/iofunc_lseek.html on line 1
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/globals.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/i/iofunc_lseek.html on line 1
Warning: main(/www/www/htdocs/style/header.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/i/iofunc_lseek.html on line 8
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/header.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/i/iofunc_lseek.html on line 8
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 );
- 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; see below.
- 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
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
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.
The io_lseek_t structure holds the _IO_LSEEK
message received by the resource manager:
struct _io_lseek {
uint16_t type;
uint16_t combine_len;
short whence;
uint16_t zero;
uint64_t offset;
};
typedef union {
struct _io_lseek i;
uint64_t o;
} io_lseek_t;
The I/O message structures are unions of an input message (coming to the
resource manager) and an output or reply message (going back to the client).
The i member is a structure of type _io_lseek that
contains the following members:
- type
- _IO_LSEEK.
- combine_len
- If the message is a combine message, _IO_COMBINE_FLAG
is set in this member.
For more information, see
Combine Messages
chapter of Writing a Resource Manager.
- whence
- SEEK_SET, SEEK_CUR, or
SEEK_END.
- offset
- The relative offset from the file position determined by the
whence member.
The o member is the offset after the operation is complete.
- -1
- Success; 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.
QNX Neutrino
Safety: | |
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |
iofunc_attr_t,
iofunc_lseek_default(),
iofunc_ocb_t,
lseek(),
resmgr_context_t
Writing a Resource Manager
Resource Managers
chapter of Getting Started with QNX Neutrino
Warning: main(/www/www/htdocs/style/footer.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/i/iofunc_lseek.html on line 254
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/footer.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/i/iofunc_lseek.html on line 254