iofunc_acl()
Handle an _IO_ACL message
Synopsis:
#include <sys/iofunc.h>
int iofunc_acl( resmgr_context_t *ctp,
                io_acl_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 a io_acl_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.
 
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The iofunc_acl() helper function implements handling of _IO_ACL (access control list) messages. It's called by the default handler, iofunc_acl_default().
For more information about ACLs, see Working with Access Control Lists (ACLs) in the QNX OS Programmer's Guide.
io_acl_t structure
The io_acl_t structure holds the _IO_ACL message received by the resource manager:
struct _io_acl {
        uint16_t                        type;
        uint16_t                        combine_len;
        uint32_t                        subtype;
        int32_t                         zero[2];
        /* struct _acl_header           hdr; */
        /* void                         acl_data */
};
enum _io_acl_subtypes {
        _IO_ACL_GET,
        _IO_ACL_SET,
        _IO_ACL_CHK
};
struct _io_acl_reply {
        uint32_t                        zero[4];
        /* struct _acl_header           hdr; */
        /* void                         acl_data */
};
typedef union {
        struct _io_acl                  i;
        struct _io_acl_reply            o;
} io_acl_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_acl that contains the following members:
- type
 - _IO_ACL.
 - combine_len
 - If the message is a combine message, _IO_COMBINE_FLAG is set in this member. For more information, see the Combine Messages chapter of Writing a Resource Manager.
 - subtype
 - One of the following:
  
- _IO_ACL_GET — We're requesting (querying) the ACL. This setting is used by the getfacl utility.
 - _IO_ACL_SET — We're creating, modifying, or deleting the ACL. Before doing the operation, a buffer sanity check is performed. This setting is used by the setfacl utility.
 - _IO_ACL_CHK — Starts out similar to _IO_ACL_SET, but stops after performing the sanity check.
 
 
The commented-out declaration for acl_data indicates that the _io_acl structure is immediately followed by data.
The o member of the io_acl_t message is a structure of type _io_acl_reply that currently contains no useful data. The commented-out declarations for hdr and acl_data indicate that an _acl_header structure and additional data immediately follow the _io_acl_reply structure.
Returns:
- EOK
 - Success.
 
Classification:
| Safety: | |
|---|---|
| Cancellation point | No | 
| Signal handler | Yes | 
| Thread | Yes | 
