Exemplo n.º 1
0
int sfpr_list_reverse_all(sfpr_list_t *list, void(*handle_cb)(void *data,void *param),void *param)
{
	sfpr_list_node_t *q =NULL;
	
	q = list->tail;
	if(q == NULL)
	{
		#ifdef LOG_ERROR
		fprintf(stderr,"sfpr_dlist_all() | error | sfpr_dlist is empty\n");
		#endif
		return SFPR_ERROR;
	}
	sfpr_mutex_lock(&list->mutex);
	if(!handle_cb)
	{
		handle_cb = list_all_cb_default;
	}
	
	while(q != NULL)
	{
		handle_cb(q->data,param);
		q = q->prep;
	}
	
	sfpr_mutex_unlock(&list->mutex);

	return SFPR_SUCCESS;
}
Exemplo n.º 2
0
int sfpr_list_find_index(sfpr_list_t* list,int index, int(*handle_cb)(void *data,int index,void *param),void *param)
{
	int _index = 0;
	int ret = 0;
	sfpr_list_node_t* node = list->head;
	
	sfpr_mutex_lock(&list->mutex);
	while(node)
	{
		if(_index == index)
		{
			break;
		}
		node = node->next;
		_index++;
	}
	if(NULL == node){
		sfpr_mutex_unlock(&list->mutex);
		return -1;
	}
	if(handle_cb)
		ret = handle_cb(node->data,_index,param);	
	sfpr_mutex_unlock(&list->mutex);
	return ret;
}
Exemplo n.º 3
0
int sfpr_list_enum_count(sfpr_list_t* list,int startIndex,int count,void(*handle_cb)(void *data,int index,void *param),void *param)
{
	int _count = 0;
	int _index = 0;
	sfpr_list_node_t* node = list->head;
	sfpr_mutex_lock(&list->mutex);
	while(node)
	{
		if(_index == startIndex)
		{
			break;
		}
		node = node->next;
		_index++;
	}
	if(NULL == node){
		sfpr_mutex_unlock(&list->mutex);
		return;
	}
	while(node && (_count < count))
	{
		handle_cb(node->data,_count++,param);	
		node = node->next;
	}
	sfpr_mutex_unlock(&list->mutex);
	return _count;
}
Exemplo n.º 4
0
void sh4_sched_tick(int cycles)
{
	/*
	Sh4cntx.sh4_sched_time+=cycles;
	Sh4cntx.sh4_sched_next-=cycles;
	*/

	if (Sh4cntx.sh4_sched_next<0)
	{
		u32 fztime=sh4_sched_now()-cycles;
		sh4_sched_intr++;
		if (sh4_sched_next_id!=-1)
		{
			for (int i=0;i<list.size();i++)
			{
				if ((list[i].end-fztime)<=(u32)cycles)
				{
					handle_cb(i);
				}
			}
		}
		sh4_sched_ffts();
	}
}