Do permission checks for the _IO_SPACE message
Synopsis:
#include <sys/iofunc.h>
int iofunc_space_verify( resmgr_context_t *ctp,
io_space_t *msg,
iofunc_ocb_t *ocb,
int *nonblock );
Arguments:
- 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_space_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.
- nonblock
- NULL, or a pointer to a location where the function can
store a value that indicates whether or not the device is nonblocking:
- Zero — the client doesn't want to be blocked (i.e.,
O_NONBLOCK was set).
- Nonzero — the client wants to be blocked.
Library:
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
Description:
The iofunc_space_verify() helper function checks the client's
permission for an _IO_SPACE message.
io_space_t structure
The io_space_t structure holds the _IO_SPACE
message received by the resource manager:
struct _io_space {
uint16_t type;
uint16_t combine_len;
uint16_t subtype;
short whence;
uint64_t start;
uint64_t len;
};
typedef union {
struct _io_space i;
uint64_t o;
} io_space_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_space that
contains the following members:
- type
- _IO_SPACE.
- 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.
- subtype
- F_ALLOCSP or F_FREESP.
- whence
- The position in the file.
The possible values (defined in <unistd.h>) are:
- SEEK_CUR
- The new file position is computed relative to the current file
position. The value of start may be positive, negative or zero.
- SEEK_END
- The new file position is computed relative to the end of the file.
- SEEK_SET
- The new file position is computed relative to the start of the file.
The value of start must not be negative.
- start
- The relative offset from the file position determined by the
whence member.
- len
- The relative size by which to increase the file.
A value of zero means to end of file.
The o member is the file size.
Returns:
- EBADF
- The resource wasn't opened for writing.
- EFBIG
- The file is a regular file, and the length is greater than the maximum offset associated with the file.
- EISDIR
- The resource is a directory.
- EOK
- The client has the required access to the resource.
- EROFS
- The file resides on a read-only filesystem (e.g., it was opened with O_RDWR
and later the filesystem was remounted as read-only).
Classification:
QNX Neutrino
Safety: |
|
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |