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; }
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; }
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; }
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(); } }