2015-10-19 83 views

回答

0

我使用這個C代碼爲FPGA做上下文切換。如果你覺得它有用,並希望得到更多的周圍代碼,只需問我。

/* 
* threadswitch - change thread 
* 
* The thread stack-pointer is supplied as a parameter. 
* The old thread's stack-pointer value is saved to the array 
* thread_info_array, and a new thread is selected from the array. 
* The stack pointer of the new thread is returned. 
*/ 
unsigned int * threadswitch(unsigned int * old_sp) 
{ 
    unsigned int * new_sp; 

    number_of_thread_switches += 1; /* Increase thread-switch counter. */ 

    /* Print line 1 of an informational message. */ 
    printf("\nPerforming thread-switch number %d. The system has been running for %d ticks.\n", 
      number_of_thread_switches, 
      get_internal_globaltime()); 

    /* Save the stack pointer of the old thread. */ 
    thread_info_array[ currently_running_thread ].thread_sp = old_sp; 

    /* Print part 1 of a message saying which threads are involved this time. */ 
    printf("Switching from thread-ID %d ", 
      thread_info_array[ currently_running_thread ].thread_id); 

    /* Perform the scheduling decision (round-robin). */ 
    currently_running_thread += 1; 
    if(currently_running_thread >= current_thread_count) 
    { 
    currently_running_thread = 0; 
    } 

    /* Print part 2 of the informational message. */ 
    printf("to thread-ID %d.\n", 
      thread_info_array[ currently_running_thread ].thread_id); 

    /* Get the stack pointer of the new thread. */ 
    new_sp = thread_info_array[ currently_running_thread ].thread_sp; 

    /* Return. */ 
    return(new_sp); 
} 
+0

謝謝,但你使用POSIX標準? – khaledrmse

相關問題