示例#1
0
static void handle_request( struct imt_rpc_req *req )
{
	DBG2("imt: req: id  %4d  cmd %X  len %3d  par %08X  rsp %08X", req->id, req->cmd, req->len, req->par, req->rsp );

	if( req->cmd == IMT_CONNECTED ) {
		DBG("imt: CONNECTED: %02X", req->rsp);	
		
		// no need to reply
		return;
	} else if( req->cmd == IMT_TRACE ) {
		DBG2("imt: TRACE: %d", req->par);	
		
		output_trace(req->data);
		
		// TRACE does not respond!
		// reply( req, IMT_TRACED, 16, req->par );
	} else if( req->cmd == IMT_MALLOC ) {
		uint32_t data = 0;
		DBG2("imt: MALLOC: %d", req->par);	
#if defined(CONFIG_ION_OMAP)
		data = tiler_alloc( req->par );
#endif				
		reply( req, IMT_MALLOCED, 16, data );
	} else if( req->cmd == IMT_FREE ) {
		DBG2("imt: FREE: %08X", req->par);	
#if defined(CONFIG_ION_OMAP)
		tiler_free( req->par );
#endif				
		reply( req, IMT_FREED, 16, req->par );
	} else {
		// we dont know that command
		ERR("imt: CONFUSED!: %X", req->cmd);	
		
		reply( req, IMT_CONFUSED, 16, req->par );
	}
}
示例#2
0
/*
NAME    {* bdd\_done*}
SECTION {* kernel *}
SHORT {* resets the bdd package *}
PROTO {* void bdd_done(void) *}
DESCR {* This function frees all memory used by the bdd package and resets
         the package to it's initial state.*}
ALSO  {* bdd\_init *}
*/
void bdd_done(void)
{
   /*sanitycheck(); FIXME */


   if(trace_enable)
   	output_trace();

   bdd_fdd_done();
   bdd_reorder_done();
   bdd_pairs_done();
   
   free(bddnodes);
   free(bddrefstack);
   free(bddvarset);
   free(bddvar2level);
   free(bddlevel2var);
   
   bddnodes = NULL;
   bddrefstack = NULL;
   bddvarset = NULL;
   bddvar2level = NULL;
   bddlevel2var = NULL;

   bdd_operator_done();

   bddrunning = 0;
   bddnodesize = 0;
   bddmaxnodesize = 0;
   bddvarnum = 0;
   bddproduced = 0;
   
   err_handler = NULL;
   gbc_handler = NULL;
   resize_handler = NULL;
}