pthread_attr_getschedparam(3C) returns the scheduling parameters defined by pthread_attr_setschedparam().
int pthread_attr_getschedparam(pthread_attr_t *restrict tattr, const struct sched_param *restrict param);
#include <pthread.h> pthread_attr_t attr; struct sched_param param; int ret; /* get the existing scheduling param */ ret = pthread_attr_getschedparam (&tattr, ¶m);
You can set the priority attribute before creating the thread. The child thread is created with the new priority that is specified in the sched_param structure. This structure also contains other scheduling information.
Example 3–2 shows an example of creating a child thread with a priority that is different from its parent's priority.
Example 3-2 Creating a Prioritized Thread#include <pthread.h> #include <sched.h> pthread_attr_t tattr; pthread_t tid; int ret; int newprio = 20; sched_param param; /* initialized with default attributes */ ret = pthread_attr_init (&tattr); /* safe to get existing scheduling param */ ret = pthread_attr_getschedparam (&tattr, ¶m); /* set the priority; others are unchanged */ param.sched_priority = newprio; /* setting the new scheduling param */ ret = pthread_attr_setschedparam (&tattr, ¶m); /* specify explicit scheduling */ ret = pthread_attr_setinheritsched (&tattr, PTHREAD_EXPLICIT_SCHED); /* with new priority specified */ ret = pthread_create (&tid, &tattr, func, arg);
pthread_attr_getschedparam() returns zero after completing successfully. Any other return value indicates that an error occurred. If the following condition occurs, the function fails and returns the corresponding value.
EINVAL
Description: The value of param is NULL or tattr is invalid.