1/*
2 * Copyright (c) 2004, Intel Corporation. All rights reserved.
3 * Created by:  crystal.xiong REMOVE-THIS AT intel DOT com
4 * This file is licensed under the GPL license.  For the full content
5 * of this license, see the COPYING file at the top level of this
6 * source tree.
7 *
8 *
9 * Re-written by Peter W. Morreale <pmorreale AT novell DOT com>
10 * 24/05/2011
11 *
12 * Test pthread_attr_setschedpolicy()
13 *
14 * Steps:
15 * 1.  Initialize a pthread_attr_t object using pthread_attr_init()
16 * 2.  Test pthread_attr_setschedpolicy for all required supported policies
17 *
18 */
19
20#include <pthread.h>
21#include <stdio.h>
22#include <stdlib.h>
23#include <string.h>
24#include <errno.h>
25#include "posixtest.h"
26
27#define ERR_MSG(p, f, rc) printf("Failed: %s function: %s error: %s (%u)\n", \
28						p, f, strerror(rc), rc)
29
30int set_policy(char *label, int policy)
31{
32	int rc;
33	int status;
34	pthread_attr_t attr;
35
36	rc = pthread_attr_init(&attr);
37	if (rc) {
38		ERR_MSG("", "pthread_attr_init()", rc);
39		return PTS_UNRESOLVED;
40	}
41
42	status = PTS_PASS;
43	rc = pthread_attr_setschedpolicy(&attr, policy);
44	if (rc) {
45		ERR_MSG(label, "pthread_attr_setschedpolicy()", rc);
46		status = PTS_FAIL;
47	}
48
49	(void)pthread_attr_destroy(&attr);
50
51	return status;
52}
53
54int main(void)
55{
56	int rc;
57
58	rc = set_policy("SCHED_FIFO", SCHED_FIFO);
59	if (rc)
60		goto done;
61
62	rc = set_policy("SCHED_RR", SCHED_RR);
63	if (rc)
64		goto done;
65
66	rc = set_policy("SCHED_OTHER", SCHED_OTHER);
67	if (rc)
68		goto done;
69
70	printf("Test PASSED\n");
71
72done:
73	return rc;
74}
75