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_devctl.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_devctl.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_devctl.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_devctl.html on line 8
Handle an _IO_DEVCTL message
#include <sys/iofunc.h>
int iofunc_devctl( resmgr_context_t *ctp,
                   io_devctl_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_devctl_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_devctl() helper function
implements POSIX semantics for the
client's devctl() call, which is received as an
_IO_DEVCTL message by the resource manager.
This function handles the DCMD_ALL* functionality.
This function handles at least the following
device control messages:
- DCMD_ALL_GETFLAGS
 
- Implements the functionality of the
  fcntl()
  get-flags command.
 
- DCMD_ALL_SETFLAGS
 
- Implements the functionality of the fcntl() set-flags
  command.
 
- DCMD_ALL_GETMOUNTFLAGS
 
- Returns the mount flag (mount->flags) for a
        resource that has a mount structure defined, else returns
        a mount flag of zero.
 
The supported mount flags (bitmask values) for
DCMD_ALL_GETMOUNTFLAGS include:
- _MOUNT_READONLY
    
 
- Read only.
      
    
 
- _MOUNT_NOEXEC
    
 
- Can't exec from filesystem.
      
    
 
- _MOUNT_NOSUID
    
 
- Don't honor setuid bits on filesystem.
      
 
Any other device control messages return 
ENOTTY.
The io_devctl_t structure holds the _IO_
message received by the resource manager:
struct _io_devctl {
    uint16_t                    type;
    uint16_t                    combine_len;
    int32_t                     dcmd;
    int32_t                     nbytes;
    int32_t                     zero;
/*  char                        data[nbytes]; */
};
struct _io_devctl_reply {
    uint32_t                    zero;
    int32_t                     ret_val;
    int32_t                     nbytes;
    int32_t                     zero2;
/*  char                        data[nbytes]; */
    } ;
typedef union {
    struct _io_devctl           i;
    struct _io_devctl_reply     o;
} io_devctl_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_devctl that
contains the following members:
- type
 
- _IO_DEVCTL.
 
- 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.
  
 
- dcmd
 
- The device-control command to execute.
 
- nbytes
 
- The number of bytes of data being passed with the command.
 
The commented-out declaration for data indicates that 
nbytes bytes of data immediately follow the
_io_devctl structure.
The _DEVCTL_DATA() macro gets a pointer to the data that follows
the message.
Call it like this:
data = _DEVCTL_DATA (msg->i);
The o member of the io_devctl_t message
is a structure of type _io_devctl_reply
that contains the following members:
- ret_val
 
- The value returned by the command.
 
- nbytes
 
- The number of bytes of data being returned.
 
The commented-out declaration for data indicates that 
nbytes bytes of data immediately follow the
_io_devctl_reply structure.
- EOK
    
 
- Successful completion.
    
 
- EINVAL
    
 
- An attempt to set the flags for a resource that is synchronized,
        with no mount structure defined, or no synchronized I/O
        defined.
    
 
- ENOTTY
    
 
- An unsupported device control message was decoded.
 
QNX Neutrino
| Safety: |  | 
| Cancellation point | 
    No | 
| Interrupt handler | 
    No | 
| Signal handler | 
    Yes | 
| Thread | 
    Yes | 
fcntl(),
iofunc_attr_t,
iofunc_devctl_default(),
iofunc_ocb_t,
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_devctl.html on line 324
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_devctl.html on line 324