void testcases() { int i,check; char *a,*op; for(i=0;i<11;i++) { struct sll *ihead,*ohead,*j; a=malloc_char(testDB[i].input); op=malloc_char(testDB[i].output); ihead=convert_to_list(a); ohead=convert_to_list(op); for(j=ihead;j!=NULL;j=j->ptr) printf("%d ",j->data); //for(j=ohead;j!=NULL;j=j->ptr) //printf("%d ",j->data); check=ll_cmp(ihead,ohead); if(check==0) printf("passed\n"); else printf("failed\n"); } }
/* * Insert timer event to timer event queue */ LOCAL void knl_enqueue_tmeb( TMEB *event ) { QUEUE *q; for ( q = knl_timer_queue.next; q != &knl_timer_queue; q = q->next ) { if ( ll_cmp(event->time, ((TMEB*)q)->time) < 0) { break; } } QueInsert(&event->queue, q); }
EXPORT void knl_timer_handler( void ) { TMEB *event; knl_clear_hw_timer_interrupt(); /* Clear timer interrupt */ BEGIN_CRITICAL_SECTION; knl_current_time = ll_add(knl_current_time, uitoll(CFN_TIMER_PERIOD)); #if USE_DBGSPT && defined(USE_FUNC_TD_INF_TSK) if ( knl_ctxtsk != NULL ) { /* Task at execution */ if ( knl_ctxtsk->sysmode > 0 ) { knl_ctxtsk->stime += CFN_TIMER_PERIOD; } else { knl_ctxtsk->utime += CFN_TIMER_PERIOD; } } #endif /* Execute event that passed occurring time. */ while ( !isQueEmpty(&knl_timer_queue) ) { event = (TMEB*)knl_timer_queue.next; if ( ll_cmp(event->time, knl_current_time) > 0 ) { break; } QueRemove(&event->queue); if ( event->callback != NULL ) { (*event->callback)(event->arg); } } END_CRITICAL_SECTION; knl_end_of_hw_timer_interrupt(); /* Clear timer interrupt */ }