Lock a resource
Synopsis:
#include <sys/iofunc.h>
int iofunc_lock( resmgr_context_t * ctp,
io_lock_t * msg,
iofunc_ocb_t * ocb,
iofunc_attr_t * attr );
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_lock_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.
Library:
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
Description:
The function iofunc_lock() does what is required for POSIX locks.
For more information, see
lockf()
.
Returns:
-
EACCES or EAGAIN
- The operation is F_TLOCK or F_TEST,
and the section is already locked by another process.
-
EAGAIN
- The operation is F_LOCK or
F_TLOCK, and the file is mapped with
mmap()
.
-
EBADF
- The file descripter isn't valid, or the operation is
F_LOCK or F_TLOCK,
and the file descriptor isn't open for writing.
-
EDEADLK
- The operation is F_LOCK, and a deadlock was detected.
-
EINTR
- A signal was caught during execution of the function.
-
EINVAL
- The operation isn't one of F_LOCK,
F_TLOCK, F_TEST, or F_ULOCK,
or the size plus the current file offset is less than 0.
-
ENOMEM
- The system can't allocate sufficient memory to store lock resources.
-
EOPNOTSUPP or EINVAL
- The implementation doesn't support the locking of files of the type
indicated by the file descriptor.
-
EOVERFLOW
- The offset of the first, or if the size isn't 0 then the last,
byte in the requested section can't be represented correctly in an object
of type off_t.
Classification:
QNX Neutrino
| Safety: |
|
| Cancellation point |
No |
| Interrupt handler |
No |
| Signal handler |
Yes |
| Thread |
Yes |