int io_link ( resmgr_context_t *ctp,
io_link_t *msg,
RESMGR_HANDLE_T *handle,
io_link_extra_t *extra )
Classification: Connect
Default handler: none
Helper functions: iofunc_link()
Client function: link()
Messages: _IO_CONNECT with subtype _IO_CONNECT_LINK
Data structure:
struct _io_connect {
// internal fields (as described above)
uint16_t path_len;
uint8_t extra_type;
uint16_t extra_len;
char path [1];
};
struct _io_connect_link_reply {
uint32_t reserved1;
uint32_t file_type;
uint8_t eflag;
uint8_t reserved2[1];
uint16_t chroot_len;
uint32_t umask;
uint16_t nentries;
uint16_t path_len;
};
struct _io_connect_ftype_reply {
uint16_t status; /* Typically an errno */
uint16_t reserved;
uint32_t file_type; /* _FTYPE_? in sys/ftype.h */
};
typedef union {
struct _io_connect connect;
struct _io_connect_link_reply link_reply;
struct _io_connect_ftype_reply ftype_reply;
} io_link_t;
typedef union _io_link_extra {
struct _msg_info info;
void *ocb;
char path [1];
struct _io_resmgr_link_extra resmgr;
} io_link_extra_t;
Description: Creates a new link with the name given in the path member of msg to the already-existing pathname specified by the path member of extra (passed to your function). For convenience, the ocb member of extra contains a pointer to the OCB for the existing pathname.
Returns: The status via the helper macro _RESMGR_STATUS().