hsa_status_t HSA_API
hsa_amd_profiling_get_dispatch_time(hsa_agent_t agent_handle,
                                    hsa_signal_t hsa_signal,
                                    hsa_amd_profiling_dispatch_time_t* time) {
  IS_OPEN();

  IS_BAD_PTR(time);

  core::Agent* agent = core::Agent::Convert(agent_handle);

  IS_VALID(agent);

  core::Signal* signal = core::Signal::Convert(hsa_signal);

  IS_VALID(signal);

  if (agent->device_type() != core::Agent::kAmdGpuDevice) {
    return HSA_STATUS_ERROR_INVALID_AGENT;
  }

  amd::GpuAgentInt* gpu_agent = static_cast<amd::GpuAgentInt*>(agent);

  gpu_agent->TranslateTime(signal, *time);

  return HSA_STATUS_SUCCESS;
}
Пример #2
0
SQLRETURN SQL_API SQLNativeSql(SQLHDBC ConnectionHandle,
			       SQLCHAR * InStatementText,
			       SQLINTEGER TextLength1,
			       SQLCHAR * OutStatementText,
			       SQLINTEGER BufferLength,
			       SQLINTEGER * TextLength2Ptr)
{
	hDbc_T *dbc = (hDbc_T *) ConnectionHandle;
	SQLRETURN status = SQL_SUCCESS;
	if (ENABLE_TRACE) {

		ood_log_message(dbc, __FILE__, __LINE__, TRACE_FUNCTION_ENTRY,
				(SQLHANDLE) dbc, 0, "");
	}
	ood_clear_diag((hgeneric *) dbc);
	THREAD_MUTEX_LOCK(dbc);

	THREAD_MUTEX_UNLOCK(dbc);
	if (ENABLE_TRACE) {
		ood_log_message(dbc, __FILE__, __LINE__, TRACE_FUNCTION_EXIT,
				(SQLHANDLE) NULL, status, "");
	}
	fprintf(stderr, "called stubbed function line %d file %s\n", __LINE__,
		__FILE__);
	assert(IS_VALID(dbc));
	return SQL_SUCCESS;
}
Пример #3
0
void free_pcdata(PC_DATA *pcdata)
{
    int alias;

    if (!IS_VALID(pcdata))
	return;

    free_string(pcdata->pwd);
    free_string(pcdata->bamfin);
    free_string(pcdata->bamfout);
    free_string(pcdata->invisin);
    free_string(pcdata->invisout);
    free_string(pcdata->who_descr);
    free_string(pcdata->title);
    free_buf(pcdata->buffer);
    
    for (alias = 0; alias < MAX_ALIAS; alias++)
    {
	free_string(pcdata->alias[alias]);
	free_string(pcdata->alias_sub[alias]);
    }
    for (alias = 0; alias < MAX_FORGET; alias++)
    {
	free_string(pcdata->forget[alias]);
    }
    for (alias = 0; alias < MAX_DUPES; alias++)
    {
	free_string(pcdata->dupes[alias]);
    }
    INVALIDATE(pcdata);
    pcdata->next = pcdata_free;
    pcdata_free = pcdata;

    return;
}
Пример #4
0
void free_obj( OBJ_DATA *obj )
{
	AFFECT_DATA			*paf, *paf_next;
	EXTRA_DESCR_DATA	*ed, *ed_next;
	/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/

	if ( !IS_VALID(obj) )
		return;

	for ( paf = obj->affected; paf != NULL; paf = paf_next )
	{
		paf_next = paf->next;
		free_affect( paf );
	}

	obj->affected = NULL;

	for ( ed = obj->extra_descr; ed != NULL; ed = ed_next )
	{
		ed_next = ed->next;
		free_extra_descr( ed );
	}

	obj->extra_descr = NULL;

	free_string( obj->name );
	free_string( obj->description );
	free_string( obj->short_descr );
	free_string( obj->owner );
	INVALIDATE( obj );

	obj->next = obj_free;
	obj_free = obj;
}
hsa_status_t HSA_API hsa_amd_coherency_set_type(hsa_agent_t agent_handle,
                                                hsa_amd_coherency_type_t type) {
  IS_OPEN();

  core::Agent* agent = core::Agent::Convert(agent_handle);

  IS_VALID(agent);

  if (type < HSA_AMD_COHERENCY_TYPE_COHERENT ||
      type > HSA_AMD_COHERENCY_TYPE_NONCOHERENT) {
    return HSA_STATUS_ERROR_INVALID_ARGUMENT;
  }

  if (agent->device_type() != core::Agent::kAmdGpuDevice) {
    return HSA_STATUS_ERROR_INVALID_AGENT;
  }

  amd::GpuAgent* gpu_agent = static_cast<amd::GpuAgent*>(agent);

  if (!gpu_agent->current_coherency_type(type)) {
    return HSA_STATUS_ERROR;
  }

  return HSA_STATUS_SUCCESS;
}
Пример #6
0
void free_pcdata(PC_DATA *pcdata)
{
    int alias;

    if (!IS_VALID(pcdata))
	return;

    free_string(pcdata->pwd);
    free_string(pcdata->bamfin);
    free_string(pcdata->bamfout);
    free_string(pcdata->roomin);
    free_string(pcdata->roomout);
    free_string(pcdata->wiziin); /* Ferg-wizicust */
    free_string(pcdata->wiziout); /* Ferg-wizicust */
    free_string(pcdata->title);
    free_buf(pcdata->buffer);

    for (alias = 0; alias < MAX_ALIAS; alias++)
    {
	free_string(pcdata->alias[alias]);
	free_string(pcdata->alias_sub[alias]);
    }
    INVALIDATE(pcdata);
    pcdata->next = pcdata_free;
    pcdata_free = pcdata;

    return;
}
Пример #7
0
void free_storer_data( ARTEFACT_STORER *storer )
{
	if ( !IS_VALID( storer ) ) return ;
	INVALIDATE( storer );
	storer->next = storer_free;
	storer_free = storer;
}
Пример #8
0
/*
** Write_Cache - this writes a word to the cache, and also writes
** the value out to memory.
*/
void Write_Cache(unsigned long int address, unsigned long int data){
	int i;
	unsigned long int word;
	unsigned long int tag;
	unsigned long int set;
	unsigned long int cache_line;

	tag = address & TAG_MASK;
	word = address & WORD_MASK;
	set = address & SET_MASK;
	cache_line = set >> SET_SHIFT;

	if( (tags[cache_line] == tag) && (IS_VALID(cache_line)) ){
		cache_hits++;
		LRU_Access(cache_line);
		rammem[set + tag + word] = cache[cache_line][word] = data;
	}
	else {
		cache_misses++;
		for(i = 0; i < NUM_WORDS_PER_LINE; i++){
			cache[cache_line][i] = rammem[tag + set + i];
		}
		tags[cache_line] = tag;
		LRU_Access(cache_line);
		rammem[set + tag + word] = cache[cache_line][word] = data;
	}
}
Пример #9
0
void free_pcdata(PC_DATA *pcdata)
{
    int alias;
   GRANT_DATA *gran,*gran_next;

    if (!IS_VALID(pcdata))
	return;

    free_string(pcdata->pwd);
    free_string(pcdata->bamfin);
    free_string(pcdata->bamfout);
    free_string(pcdata->title);
    free_buf(pcdata->buffer);

     for (gran = pcdata->granted; gran != NULL; gran = gran_next)
    {
        gran_next = gran->next;
        free_string(gran->name);
        free_mem(gran,sizeof(*gran));
    }

    for (alias = 0; alias < MAX_ALIAS; alias++)
    {
	free_string(pcdata->alias[alias]);
	free_string(pcdata->alias_sub[alias]);
    }
    INVALIDATE(pcdata);
    pcdata->next = pcdata_free;
    pcdata_free = pcdata;

    return;
}
Пример #10
0
void free_sleep_data(SLEEP_DATA *sd)
{
  if (!IS_VALID(sd))
    return;
  
  INVALIDATE(sd);
  sd->next = sd_free;
  sd_free = sd;
}
Пример #11
0
void free_mprog(MPROG_LIST *mp)
{
   if (!IS_VALID(mp))
      return;

   INVALIDATE(mp);
   mp->next = mprog_free;
   mprog_free = mp;
}
hsa_status_t HSA_API hsa_ext_set_profiling(hsa_queue_t* queue, int enable) {
  core::Queue* cmd_queue = core::Queue::Convert(queue);

  IS_VALID(cmd_queue);

  cmd_queue->amd_queue_.enable_profiling = (enable != 0);

  return HSA_STATUS_SUCCESS;
}
Пример #13
0
void free_rprog(PROG_LIST *rp)
{
   if (!IS_VALID(rp))
      return;

   INVALIDATE(rp);
   rp->next = rprog_free;
   rprog_free = rp;
}
Пример #14
0
void free_oprog(PROG_LIST *op)
{
   if (!IS_VALID(op))
      return;

   INVALIDATE(op);
   op->next = oprog_free;
   oprog_free = op;
}
Пример #15
0
void free_room_weave(AFFECT_DATA *wd)
{
  if (!IS_VALID(wd))
    return;
  
  INVALIDATE(wd);
  wd->next = room_weave_free;
  room_weave_free = wd;
}
Пример #16
0
void free_residue(RESIDUE_DATA *rd)
{
  if (!IS_VALID(rd))
    return;

  INVALIDATE(rd);
  rd->next = residue_free;
  residue_free = rd;
}
Пример #17
0
void free_mem_data(MEM_DATA *memory)
{
    if (!IS_VALID(memory))
    return;

    memory->next = mem_data_free;
    mem_data_free = memory;
    INVALIDATE(memory);
}
Пример #18
0
void free_affect( AFFECT_DATA *af )
{
	if ( !IS_VALID(af) )
		return;

	INVALIDATE( af );
	af->next = affect_free;
	affect_free = af;
}
Пример #19
0
void free_ward(WARD_DATA *wd)
{
  if (!IS_VALID(wd))
    return;

  INVALIDATE(wd);
  wd->next = ward_free;
  ward_free = wd;
}
Пример #20
0
/**
 * @brief Yields the processor.
 */
PUBLIC void yield(void)
{
	struct process *p;    /* Working process.     */
	struct process *next; /* Next process to run. */

	/* Re-schedule process for execution. */
	if (curr_proc->state == PROC_RUNNING)
		sched(curr_proc);

	/* Remember this process. */
	last_proc = curr_proc;

	/* Check alarm. */
	for (p = FIRST_PROC; p <= LAST_PROC; p++)
	{
		/* Skip invalid processes. */
		if (!IS_VALID(p))
			continue;
		
		/* Alarm has expired. */
		if ((p->alarm) && (p->alarm < ticks))
			p->alarm = 0, sndsig(p, SIGALRM);
	}

	/* Choose a process to run next. */
	next = IDLE;
	for (p = FIRST_PROC; p <= LAST_PROC; p++)
	{
		/* Skip non-ready process. */
		if (p->state != PROC_READY)
			continue;
		
		/*
		 * Process with higher
		 * waiting time found.
		 */
		if (p->counter > next->counter)
		{
			next->counter++;
			next = p;
		}
			
		/*
		 * Increment waiting
		 * time of process.
		 */
		else
			p->counter++;
	}
	
	/* Switch to next process. */
	next->priority = PRIO_USER;
	next->state = PROC_RUNNING;
	next->counter = PROC_QUANTUM;
	switch_to(next);
}
Пример #21
0
void free_char (CHAR_DATA *ch)
{
    OBJ_DATA *obj;
    OBJ_DATA *obj_next;
    AFFECT_DATA *paf;
    AFFECT_DATA *paf_next;

    if (!IS_VALID(ch))
	return;

    if (IS_NPC(ch))
	mobile_count--;

    for (obj = ch->carrying; obj != NULL; obj = obj_next)
    {
	obj_next = obj->next_content;
	extract_obj(obj);
    }

    for (paf = ch->affected; paf != NULL; paf = paf_next)
    {
	paf_next = paf->next;
	affect_remove(ch,paf);
    }


    free_string(ch->name);
    free_string(ch->wkname);
    free_string(ch->real_name);
    free_string(ch->short_descr);
    free_string(ch->long_descr);
    free_string(ch->description);
    free_string(ch->hood_description);
    free_string(ch->veil_description);
    free_string(ch->wolf_description);
    free_string(ch->wound_description);
    free_string(ch->aura_description);
    free_string(ch->prompt);
    free_string(ch->prefix);
    
    free_string(ch->gtitle);
    free_string(ch->sguild_title);
    free_string(ch->tguild_title);
    free_string(ch->mtitle);
    free_string(ch->mname);
    
    
  /*  free_note  (ch->pnote); */
    free_pcdata(ch->pcdata);

    ch->next = char_free;
    char_free  = ch;

    INVALIDATE(ch);
    return;
}
hsa_status_t HSA_API hsa_amd_queue_cu_set_mask(const hsa_queue_t* queue,
                                               uint32_t num_cu_mask_count,
                                               const uint32_t* cu_mask) {
  IS_OPEN();
  IS_BAD_PTR(cu_mask);

  core::Queue* cmd_queue = core::Queue::Convert(queue);
  IS_VALID(cmd_queue);
  return cmd_queue->SetCUMasking(num_cu_mask_count, cu_mask);
}
Пример #23
0
void free_gen_data(GEN_DATA *gen)
{
    if (!IS_VALID(gen))
	return;

    INVALIDATE(gen);

    gen->next = gen_data_free;
    gen_data_free = gen;
} 
Пример #24
0
void free_event(EVENT_DATA *ev)
{
    if (!IS_VALID(ev))
		return;
	
	INVALIDATE(ev);

    ev->next = ev_free;
    ev_free = ev;
}
Пример #25
0
/*
** Write_Cache - this writes a word to the cache, and also writes
** the value out to memory.
*/
void Write_Cache(unsigned long int address, unsigned long int data){
	int i,j;
	int invalid_line = -1;
	int victim = 0;
	unsigned long int word;
	unsigned long int block;

	block = address & TAG_MASK;
	word = address & WORD_MASK;
	
	for(i = 0; i < NUM_CACHE_LINES; i++){
		if( !IS_VALID(i) ){
			invalid_line = i;
		}
		else{
			if(block == tags[i])
				break;	
		}
	}
	if(i == NUM_CACHE_LINES){
		/* cache miss -- find a victim */
		cache_misses++;
		if(invalid_line != -1){
			for(j = 0; j < NUM_WORDS_PER_LINE; j++){
				cache[invalid_line][j] = rammem[block + j];
			}
			tags[invalid_line] = block;
			LRU_Access(invalid_line);
			rammem[block + word] = data;
			cache[invalid_line][word] = data;
		}
		else{
			for(j = 0; j < NUM_CACHE_LINES; j++){
				if(mem_count[j] > mem_count[victim]){
					victim = j;	
				}
			}
			for(j = 0; j < NUM_WORDS_PER_LINE; j++){
				cache[victim][j] = rammem[block + j];
			}
			tags[victim] = block;
			LRU_Access(victim);
			rammem[block + word] = data;
			cache[victim][word] = data;
		}
	}
	else{
		/* cache hit - just write the puppy out */
		cache_hits++;
		LRU_Access(i);
		rammem[block + word] = data;
		cache[i][word] = data;
	}
}
Пример #26
0
void free_wiz(WIZ_DATA *wiz)
{
    if (!IS_VALID(wiz))
	return;

    free_string(wiz->name);
    INVALIDATE(wiz);

    wiz->next = wiz_free;
    wiz_free = wiz;
}
Пример #27
0
void free_mbr(MBR_DATA *mbr)
{
    if (!IS_VALID(mbr))
	return;

    free_string(mbr->name);
    INVALIDATE(mbr);

    mbr->next = mbr_free;
    mbr_free = mbr;
}
Пример #28
0
void free_descriptor( DESCRIPTOR_DATA *d )
{
	if ( !IS_VALID(d) )
		return;

	free_string( d->host );
	free_mem( d->outbuf, d->outsize );
	INVALIDATE( d );
	d->next = descriptor_free;
	descriptor_free = d;
}
Пример #29
0
void free_ban( BAN_DATA *ban )
{
	if ( !IS_VALID(ban) )
		return;

	free_string( ban->name );
	INVALIDATE( ban );

	ban->next = ban_free;
	ban_free = ban;
}
Пример #30
0
void free_extra_descr( EXTRA_DESCR_DATA *ed )
{
	if ( !IS_VALID(ed) )
		return;

	free_string( ed->keyword );
	free_string( ed->description );
	INVALIDATE( ed );

	ed->next = extra_descr_free;
	extra_descr_free = ed;
}