DAT_CNO_FREE(3DAT) Direct Access Transport Library Functions DAT_CNO_FREE(3DAT)

dat_cno_free - destroy an instance of the CNO

cc [ flag... ] file... -ldat [ library... ]
#include <dat/udat.h>
DAT_RETURN
    dat_cno_free (
    IN    DAT_CNO_HANDLE    cno_handle
    )

cno_handle
Handle for an instance of the CNO

The dat_cno_free() function destroys a specified instance of the CNO.

A CNO cannot be deleted while it is referenced by an Event Dispatcher or while a thread is blocked on it.

DAT_SUCCESS
The operation was successful.

DAT_INVALID_HANDLE

The cno_handle() parameter is invalid.

DAT_INVALID_STATE

Parameter in an invalid state. CNO is in use by an EVD instance or there is a thread blocked on it.

If there is a thread blocked in dat_cno_wait(3DAT), the Consumer can do the following steps to unblock the waiter:

o
Create a temporary EVD that accepts software events. It can be created in advance.
o
For a CNO with the waiter, attach that EVD to the CNO and post the software event on the EVD.
o
This unblocks the CNO.
o
Repeat for other CNOs that have blocked waiters.
o
Destroy the temporary EVD after all CNOs are destroyed and the EVD is no longer needed.

See attributes(7) for descriptions of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
Interface Stability Standard: uDAPL, 1.1, 1.2
MT-Level Unsafe

dat_cno_wait(3DAT), libdat(3LIB), attributes(7)

July 16, 2004 OmniOS