Esempio n. 1
0
static void fSort(int a[], int begin, int end)
{
	if (end <= begin)
		return;
	int t = a[begin];
	int i = begin, j = end;
	while(i < j) {
		while(a[j] >= t && j > i)
			--j;
		a[i++] =  a[j];
		while(a[i] < t && i < j)
			++i;
		a[j] = a[i];
	}
	a[j] = t;
	fSort(a, begin, j - 1);
	fSort(a, j + 1, end);
}
Esempio n. 2
0
/* 프레임워크 계층의 스케쥴러 실행 함수입니다. FreeRTOS 계층의 vTaskStartScheduler()를 호출하는데,
그 전에 vTaskPrioritySet()를 이용해 각 태스크에 우선순위를 부여합니다. 
큰 주기를 갖은 태스크는 낮은 우선 순위를 갖게 됩니다.*/
static void fInitTasks(void *arg) {
    UBaseType_t fIndex, fPriority;
    fIndex = ( UBaseType_t ) 0U;
    fPriority =  fIndex + 1;
    fSort();

//    debug_print_line_number(__func__,__LINE__);
    while(fNumberOfTasks > fIndex) {
        if(fIndex > 0) {
            if(fReadyTasks[fIndex-1].period != fReadyTasks[fIndex].period) {
                fPriority++;
            }
        }
        vTaskPrioritySet(fReadyTasks[fIndex].handler, tskIDLE_PRIORITY + fPriority);
        fIndex++;
    }		
    vTaskDelete(NULL);
}
Esempio n. 3
0
void fastSort(int a[], int size)
{
	fSort(a, 0, size - 1);
}