Can't set the schedual parameter of threads in linux
yang
wchyang_hn at sina.com
Thu Mar 11 12:06:54 EST 2004
Hello,
I encounter a problem when I transplant application.
There is no effect to the pthread when I call pthread_setschedparam() function in test program, and it's policy and priority are stilll zero, not what I expected, after call pthread_getschedparam(). The codes is as the follow:
#include <sched.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <linux/ipc.h>
#include <linux/msg.h>
#include <errno.h>
#include <stddef.h>
#include <string.h>
void * func()
{
while (1);
return;
}
int main()
{
pthread_attr_t tattr;
pthread_t tid;
int policy;
int ret;
int newprio = 20;
struct sched_param param;
ret = pthread_attr_init (&tattr);
if (ret != 0)
{
printf("Error in init: %s\n", strerror(errno));
}
ret = pthread_attr_getschedparam (&tattr, ¶m);
if (ret != 0)
{
printf("Error in get after init: %s\n", strerror(errno));
}
ret = pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED);
if (ret != 0)
{
printf("Error in setdea: %s\n", strerror(errno));
}
ret = pthread_attr_setschedpolicy(&tattr, SCHED_RR);
if (ret != 0)
{
printf("Error in setpolicy: %s\n", strerror(errno));
}
param.sched_priority = newprio;
ret = pthread_attr_setschedparam (&tattr, ¶m);
if (ret != 0)
{
printf("Error in set: %s\n", strerror(errno));
}
ret = pthread_create (&tid, &tattr, (int*) func, NULL);
if (ret != 0)
{
printf("Error in create: %s\n", strerror(errno));
}
param.sched_priority = -1;
ret = pthread_getschedparam (tid, &policy, ¶m);
if (ret != 0)
{
printf("Error in get after create: %d %s\n", ret, strerror(errno));
}
printf("policy: %d\tpriority: %d\n", policy, param.sched_priority);
return 0;
}
The output is :
policy: 0 priority: 0
Would you like to tell me how to set the policy and priority to pthreads in Red Hat.? Thank you very much!
Best regards,
yang
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list