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:

Create a temporary EVD that accepts software events. It can be created in advance.
For a CNO with the waiter, attach that EVD to the CNO and post the software event on the EVD.
This unblocks the CNO.
Repeat for other CNOs that have blocked waiters.
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