Exemple #1
0
/*
 * End segment manager
 */
EXPORT ER finish_segmgr( void )
{
	ER	ercd, ret = E_OK;

	/* Finish system exception manager */
	ercd = finish_excmgr();
	if ( ercd < E_OK ) {
		ret = ercd;
	}

	/* Delete subsystem registration */
	ercd = tk_def_ssy(SEG_SVC, NULL);
	if ( ercd < E_OK ) {
		ret = ercd;
	}

	/* Remove segment manager lock */
	DeleteLock(&SegLock);

#ifdef DEBUG
	if ( ret < E_OK ) {
		TM_DEBUG_PRINT(("finish_segmgr ercd = %d\n", ret));
	}
#endif
	return ret;
}
Exemple #2
0
/*
 * Start segment management 
 */
EXPORT ER start_segmgr( void )
{
	T_DSSY	dssy;
	ER	ercd;

	/* Register manager */
	dssy.ssyatr    = TA_NULL;
	dssy.ssypri    = SEG_PRI;
	dssy.svchdr    = (FP)SegSVCentry;
	dssy.breakfn   = NULL;
	dssy.startupfn = NULL;
	dssy.cleanupfn = NULL;
	dssy.eventfn   = NULL;
	dssy.resblksz  = 0;
	ercd = tk_def_ssy(SEG_SVC, &dssy);
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	return E_OK;

err_ret:
	BMS_DEBUG_PRINT(("start_segmgr ercd = %d\n", ercd));
	return ercd;
}
Exemple #3
0
/*
 * Calendar functions entry
 */
EXPORT	ER	dt_main(INT ac, UB* av[])
{
	ER	er;
	T_DSSY	dssy;

	if (ac < 0) {
		/* Stop other tasks from executing SVC */
		Lock(&dtLock);

		/* Unregister subsystem */
		tk_def_ssy(DT_SVC, NULL);

		/* Delete lock */
		DeleteLock(&dtLock);
		return E_OK;
	}

	/* Create lock */
	er = CreateLock(&dtLock, "dtLk");
	if (er < E_OK) {
		goto err_ret0;
	}

	/* Register subsystem */
	dssy.ssyatr	= TA_NULL;
	dssy.ssypri	= DT_PRI;
	dssy.svchdr	= (FP)svcEntry;
	dssy.breakfn	= NULL;
	dssy.startupfn	= NULL;
	dssy.cleanupfn	= NULL;
	dssy.eventfn	= NULL;
	dssy.resblksz	= 0;
	er = tk_def_ssy(DT_SVC, &dssy);
	if (er < E_OK) {
		goto err_ret1;
	}

	return E_OK;

err_ret1:
	DeleteLock(&dtLock);
	
err_ret0:
	return er;
}
Exemple #4
0
/*
 * End segment manager 
 */
EXPORT ER finish_segmgr( void )
{
	ER	ercd;

	/* Delete subsystem registration */
	ercd = tk_def_ssy(SEG_SVC, NULL);

#ifdef DEBUG
	if ( ercd < E_OK ) {
		DEBUG_PRINT(("finish_segmgr ercd = %d\n", ercd));
	}
#endif

	return ercd;
}
/*
 * Finalization sequence of system management
 */
EXPORT ER finish_devmgr( void )
{
	ER	ercd;

	/* Unregister subsystem */
	ercd = tk_def_ssy(DEVICE_SVC, NULL);
#ifdef DEBUG
	if ( ercd < E_OK ) {
		extension_printf(("1. finish_devmgr -> tk_def_ssy ercd = %d\n", ercd));
	}
#endif

	/* Unregister device initial setting information */
	ercd = delIDev();
#ifdef DEBUG
	if ( ercd < E_OK ) {
		extension_printf(("2. finish_devmgr -> delIDev ercd = %d\n", ercd));
	}
#endif

	/* Finalization sequence of device input/output-related */
	ercd = finishDevIO();
#ifdef DEBUG
	if ( ercd < E_OK ) {
		extension_printf(("3. finish_devmgr -> finishDevIO ercd = %d\n", ercd));
	}
#endif

	/* Delete device registration information table */
	if ( DevCBtbl != NULL ) {
		Ifree(DevCBtbl);
		DevCBtbl = NULL;
	}

	/* Delete semaphore for device management synchronous control */
	if ( DevMgrSync > 0 ) {
		tk_del_sem(DevMgrSync);
		DevMgrSync = 0;
	}

	/* Delete lock for device management exclusive control */
	DeleteMLock(&DevMgrLock);

	return ercd;
}
Exemple #6
0
/*
 * Start segment management
 */
EXPORT ER start_segmgr( void )
{
	T_DSSY	dssy;
	ER	ercd;

	/* Create segment manager lock */
	ercd = CreateLock(&SegLock, "Seg");
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	/* Start system exception manager */
	ercd = start_excmgr();
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	/* Register manager */
	dssy.ssyatr    = TA_NULL;
	dssy.ssypri    = SEG_PRI;
	dssy.svchdr    = (FP)SegSVCentry;
	dssy.breakfn   = NULL;
	dssy.startupfn = NULL;
	dssy.cleanupfn = NULL;
	dssy.eventfn   = NULL;
	dssy.resblksz  = 0;
	ercd = tk_def_ssy(SEG_SVC, &dssy);
	if ( ercd < E_OK ) {
		goto err_ret;
	}

	return E_OK;

err_ret:
#ifdef DEBUG
	TM_DEBUG_PRINT(("start_segmgr ercd = %d\n", ercd));
#endif
	return ercd;
}