Updated: April 19, 2023 |
Verify a client's ability to make a new filesystem entry point
#include <sys/iofunc.h> int iofunc_mknod( resmgr_context_t *ctp, io_mknod_t *msg, iofunc_attr_t *attr, iofunc_attr_t *dattr, struct _client_info *info );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The iofunc_mknod() helper function supports mknod() requests by verifying that the client can make a new filesystem entry point. It's similar to iofunc_open().
The iofunc_mknod() function checks to see if the client (described by the optional info structure) has access to open the resource (name passed in the msg structure). The attr structure describes the resource's attributes, and the optional dattr structure defines the attributes of the parent directory (i.e. if dattr isn't NULL, it implies that the resource identified by attr is being created within the directory specified by dattr).
The info argument can be passed as NULL, in which case iofunc_mknod() obtains the client information itself via a call to iofunc_client_info_ext(). It is, of course, more efficient to get the client info once, rather than calling this function with NULL every time.
If an error occurs, the function returns information about a client's connection in info and a constant.
io_mknod_t structure
The io_mknod_t structure holds the _IO_CONNECT message received by the resource manager:
typedef union { struct _io_connect connect; struct _io_connect_link_reply link_reply; struct _io_connect_ftype_reply ftype_reply; } io_mknod_t;
This message structure is a union of an input message (coming to the resource manager), _io_connect, and two possible output or reply messages (going back to the client):
Or:
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |