コード例 #1
0
ファイル: memcfg.c プロジェクト: andreimironenko/omx
/** 
********************************************************************************
 *  @func   memcfg_module_deinit_shared_region
 *  @brief  This function performs de-initialization of shared regions.
 *
 *          This functions removes the sharedRegions added by the MemCfg module
 *          and also unmaps the corresponding physical memory from usr space.
 *
 *  @param[in ]  None  : None
 * 
 *  @returns MEMCFG_E_FAIL 
 *           MEMCFG_S_SUCCESS
********************************************************************************
*/
static int32_t memcfg_module_deinit_shared_region (void)
{
  int32_t srStatus = SharedRegion_S_SUCCESS;
  int32_t i;
  int32_t memcfg_retval = MEMCFG_S_SUCCESS;

  for (i = 0; i < MEMCFG_sharedRegionConfigTable.nNumSharedRegions; i++)
  {
    if (MEMCFG_module->bSrAddEntryDone[i])
    {
      srStatus =
        SharedRegion_clearEntry (MEMCFG_sharedRegionConfigTable.aSRInfo[i].
                                 uIndex);
      if (SharedRegion_S_SUCCESS == srStatus)
      {
        DomxCore_unmapPhyAddr (MEMCFG_sharedRegionConfigTable.aSRInfo[i].uBase,
                               MEMCFG_sharedRegionConfigTable.aSRInfo[i].uSize);
        MEMCFG_module->bSrAddEntryDone[i] = FALSE;
      }
      else
      {
        memcfg_retval = MEMCFG_E_FAIL;
      }
    }
  }
  return memcfg_retval;
}
コード例 #2
0
/**
 * Handler for shared region clear entry API.
 *
 * \param ctp	Thread's associated context information.
 * \param msg	The actual devctl() message.
 * \param ocb	OCB associated with client's session.
 *
 * \return POSIX errno value.
 *
 * \retval EOK		Success.
 * \retval ENOTSUP	Unsupported devctl().
 */
int syslink_sharedregion_clearentry(resmgr_context_t *ctp, io_devctl_t *msg, syslink_ocb_t *ocb) {


		SharedRegionDrv_CmdArgs *		cargs = (SharedRegionDrv_CmdArgs *) (_DEVCTL_DATA (msg->i));
		SharedRegionDrv_CmdArgs *		out  = (SharedRegionDrv_CmdArgs *) (_DEVCTL_DATA (msg->o));

	    out->apiStatus = SharedRegion_clearEntry (cargs->args.clearEntry.id);
    if (out->apiStatus >= 0) {
        /* Add this call to the list to be cleaned-up */
        add_ocb_res(ocb, DCMD_SHAREDREGION_CLEARENTRY, (int)cargs->args.clearEntry.id, NULL);
    }
		return (_RESMGR_PTR (ctp, &msg->o, sizeof (msg->o) + sizeof(SharedRegionDrv_CmdArgs)));

}