Hi,

I have come across some strange behaviour of
priority base scheduling of threads across linux
kernels.

The program below shows that main priority is
raised to max = 99. Another thread with priority =30
is created.

void main()
{
struct sched_param schedparam, getparam,
taskschedparam;
int policy, status;
pthread_attr_t attribs;

pthread_t id =pthread_self();

/* Raising main priority to max =99 */
schedparam.__sched_priority
=sched_get_priority_max( SCHED_FIFO );
pthread_setschedparam(id, SCHED_FIFO, &schedparam);
pthread_getschedparam(id,&policy , &getparam);
printf("\n main : priority = %d, policy = %d",
getparam.__sched_priority, policy);

/* First Assign default attributes for the thread */
pthread_attr_init(&attribs);

/*Set stack size as specified by user*/
attribs.__stacksize = 10000;

/*set scheduling policy*/
pthread_attr_setschedpolicy(&attribs, SCHED_FIFO);


/*Set task priority*/
taskschedparam.__sched_priority = 30;
pthread_attr_setschedparam(&attribs, &taskschedparam);

status = pthread_create(&firstTask, &attribs,
task_fun1, (void*)1 );
printf("\n main :first task = %d,firstTask);
fflush(stdout);

sleep(10000);
}
void *task_fun1 ( void *param)
{
struct sched_param schedparam, getparam ;
int policy;

pthread_getschedparam(pthread_self(),&policy ,
&getparam);
printf("\n task_fun1: priority = %d, policy = %d",
getparam.__sched_priority, policy);fflush(stdout);
printf("\n FIRST TASK = %x", firstTask);
fflush(stdout);
}

Ouputs:
Redhat: 7.2 :[CORRECT OUTPUT]
main : priority = 99, policy = 1
pthread_create status = 0
main :first task = 1026
Sleeping for 1000 sec
task_fun1: priority = 30, policy = 1
FIRST TASK = 402


Redhat: 9.0
main : priority = 99, policy = 1
task_fun1: priority = 0, policy = 0
FIRST TASK = 40838cc0
pthread_create status = 0
main :first task = 1082363072
Sleeping for 1000 sec

Just wondering if there is any inconsistency in the
priority scheduling across linux version: linux
2.4.20-8(Redhat 9.0) linux 2.4.7(Redhat 7.2).

Has anyone come across this problem earlier? Any
solution to overcome it?

Your input will be helpful.

thanks and regards,
-Jyoti