* -ECHRNG: This manager cannot handle this many channels.
* -EEXIST: Channel manager already exists for this device.
* Requires:
- * chnl_init(void) called.
* channel_mgr != NULL.
* mgr_attrts != NULL.
* Ensures:
* 0: Success.
* -EFAULT: hchnl_mgr was invalid.
* Requires:
- * chnl_init(void) called.
* Ensures:
* 0: Cancels I/O on each open channel.
* Closes each open channel.
*/
extern int chnl_destroy(struct chnl_mgr *hchnl_mgr);
-/*
- * ======== chnl_exit ========
- * Purpose:
- * Discontinue usage of the CHNL module.
- * Parameters:
- * Returns:
- * Requires:
- * chnl_init(void) previously called.
- * Ensures:
- * Resources, if any acquired in chnl_init(void), are freed when the last
- * client of CHNL calls chnl_exit(void).
- */
-extern void chnl_exit(void);
-
-/*
- * ======== chnl_init ========
- * Purpose:
- * Initialize the CHNL module's private state.
- * Parameters:
- * Returns:
- * TRUE if initialized; FALSE if error occurred.
- * Requires:
- * Ensures:
- * A requirement for each of the other public CHNL functions.
- */
-extern bool chnl_init(void);
-
#endif /* CHNL_ */
/* ----------------------------------- This */
#include <dspbridge/chnl.h>
-/* ----------------------------------- Globals */
-static u32 refs;
-
/*
* ======== chnl_create ========
* Purpose:
return status;
}
-
-/*
- * ======== chnl_exit ========
- * Purpose:
- * Discontinue usage of the CHNL module.
- */
-void chnl_exit(void)
-{
- refs--;
-}
-
-/*
- * ======== chnl_init ========
- * Purpose:
- * Initialize the CHNL module's private state.
- */
-bool chnl_init(void)
-{
- bool ret = true;
-
- if (ret)
- refs++;
-
- return ret;
-}
if (api_c_refs == 0) {
/* Release all modules initialized in api_init(). */
dev_exit();
- chnl_exit();
msg_exit();
io_exit();
mgr_exit();
bool api_init(void)
{
bool ret = true;
- bool fdev, fchnl, fmsg, fio;
+ bool fdev, fmsg, fio;
bool fmgr;
if (api_c_refs == 0) {
/* initialize driver and other modules */
fmgr = mgr_init();
- fchnl = chnl_init();
fmsg = msg_mod_init();
fio = io_init();
fdev = dev_init();
- ret = fdev && fchnl && fmsg && fio;
+ ret = fdev && fmsg && fio;
ret = ret && fmgr;
if (!ret) {
if (fmgr)
mgr_exit();
- if (fchnl)
- chnl_exit();
-
if (fmsg)
msg_exit();