Ejemplo n.º 1
0
int sched_test(){

	if ( test_min_max(sched_get_priority_max, "sched_get_priority_max") < 0 ){
		printf("sched_get_priority_max() test failed\n");
		return -1;
	}

	if ( test_min_max(sched_get_priority_min, "sched_get_priority_min") < 0 ){
		printf("sched_get_priority_max() test failed\n");
		return -1;
	}


	if ( test_schedparam() < 0 ){
		printf("sched_get_priority_max() test failed\n");
		return -1;
	}

	if ( test_scheduler() < 0 ){
		printf("sched_get_priority_max() test failed\n");
		return -1;
	}

	if ( sched_yield() < 0 ){
		perror("failed to yield");
		return -1;
	}

	if ( test_rr_interval() < 0 ){
		printf("sched_get_priority_max() test failed\n");
		return -1;
	}


	return 0;
}
Ejemplo n.º 2
0
int pthread_attr_test(void){
	pthread_attr_t attr;
	int tmp;
	void * stackaddr;
	int i;

	printf("Test pthread_attr_init()...");
	if ( pthread_attr_init(&attr) < 0 ){
		fflush(stdout);
		perror("failed");
		return -1;
	}
	printf("passed\n");


	if ( set_get_test("pthread_attr_set/getdetachstate()",
			(int (*)(void*,int))pthread_attr_setdetachstate,
			(int (*)(void*,int*))pthread_attr_getdetachstate,
			&attr,
			detachstates,
			DETACHSTATE_TOTAL,
			0) ){
		return -1;
	}

	printf("Test pthread_attr_getguardsize()...");
	if ( pthread_attr_getguardsize(&attr, (size_t*)&tmp) < 0 ){
		fflush(stdout);
		perror("failed");
		return -1;
	}
	printf("passed\n");

	if ( set_get_test("pthread_attr_set/getinheritsched()",
			(int (*)(void*,int))pthread_attr_setinheritsched,
			(int (*)(void*,int*))pthread_attr_getinheritsched,
			&attr,
			inheritscheds,
			INHERITSCHED_TOTAL,
			0) ){
		return -1;
	}

	if ( set_get_test("pthread_attr_set/getschedpolicy()",
			(int (*)(void*,int))pthread_attr_setschedpolicy,
			(int (*)(void*,int*))pthread_attr_getschedpolicy,
			&attr,
			schedpolicies,
			SCHEDPOLICY_TOTAL,
			0) ){
		return -1;
	}


	printf("Test pthread_attr_set/getschedparam() with SCHED_FIFO...");
	pthread_attr_setschedpolicy(&attr, SCHED_FIFO);
	for(i=sched_get_priority_min(SCHED_FIFO); i <= sched_get_priority_max(SCHED_FIFO); i++){
		if ( test_schedparam(&attr, i, 0) < 0 ){
			return -1;
		}
	}

	if ( test_schedparam(&attr, sched_get_priority_max(SCHED_FIFO) + 1, EINVAL) < 0 ){
		return -1;
	}

	if ( test_schedparam(&attr, sched_get_priority_min(SCHED_FIFO) - 1, EINVAL) < 0 ){
		return -1;
	}
	printf("passed\n");

	printf("Test pthread_attr_set/getschedparam() with SCHED_RR...");
	pthread_attr_setschedpolicy(&attr, SCHED_RR);
	for(i=sched_get_priority_min(SCHED_RR); i <= sched_get_priority_max(SCHED_RR); i++){
		if ( test_schedparam(&attr, i, 0) < 0 ){
			return -1;
		}
	}

	if ( test_schedparam(&attr, sched_get_priority_max(SCHED_RR) + 1, EINVAL) < 0 ){
		return -1;
	}

	if ( test_schedparam(&attr, sched_get_priority_min(SCHED_RR) - 1, EINVAL) < 0 ){
		return -1;
	}
	printf("passed\n");

	printf("Test pthread_attr_set/getschedparam() with SCHED_OTHER...");
	pthread_attr_setschedpolicy(&attr, SCHED_OTHER);
	for(i=sched_get_priority_min(SCHED_OTHER); i <= sched_get_priority_max(SCHED_OTHER); i++){
		if ( test_schedparam(&attr, i, 0) < 0 ){
			return -1;
		}
	}

	if ( test_schedparam(&attr, sched_get_priority_max(SCHED_OTHER) + 1, EINVAL) < 0 ){
		return -1;
	}

	if ( test_schedparam(&attr, sched_get_priority_min(SCHED_OTHER) - 1, EINVAL) < 0 ){
		return -1;
	}
	printf("passed\n");

	if ( set_get_test("pthread_attr_set/getscope()",
			(int (*)(void*,int))pthread_attr_setscope,
			(int (*)(void*,int*))pthread_attr_getscope,
			&attr,
			scopes,
			SCOPE_TOTAL,
			0) ){
		return -1;
	}

	printf("Test pthread_attr_getstackaddr()...");
	if ( pthread_attr_getstackaddr(&attr, &stackaddr) ){
		fflush(stdout);
		perror("failed");
		return -1;
	}
	printf("passed\n");

	printf("Test pthread_attr_destroy()...");
	if ( pthread_attr_destroy(&attr) ){
		fflush(stdout);
		perror("failed");
		return -1;
	}
	printf("passed\n");

	printf("Stress Test pthread_attr_destroy()...");
	if ( pthread_attr_destroy(&attr) == 0){
		printf("should have failed\n");
		return -1;
	}
	if ( errno != EINVAL ){
		printf("errno should be %d not %d\n", EINVAL, errno);
		return -1;
	}
	printf("passed\n");
	return 0;
}