コード例 #1
0
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");
	}
} 
コード例 #2
0
/*
 * 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);
}
コード例 #3
0
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 */
}