pthread
Pattara Kiatisevi
pkiatisevi at student.ei.uni-stuttgart.de
Thu Mar 7 15:15:44 UTC 2002
Thank you for the answer.
Seems that the "default" priority is set something weird?
-----------------------------------------------------------------
285 task_ret = pthread_create(&audioPlay, NULL, (void *)
playAudioTask, (void *) &taskparameter);(gdb) s
pthread_create (thread=0x403f7d70, attr=0x0, start_routine=0x4000187c
<playAudioTask>, arg=0x403f7d68)
at ../../../../../../../c/src/exec/posix/src/pthreadcreate.c:41
41 the_attr = (attr) ? attr : &_POSIX_Threads_Default_attributes;
(gdb) n
43 if ( !the_attr->is_initialized )
(gdb) print the_attr
$1 = (pthread_attr_t *) 0x4005dc80
(gdb) n
51 if ( the_attr->stackaddr && !_Stack_Is_enough(
the_attr->stacksize ) )
(gdb) n
70 api = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ];
(gdb) n
72 schedparam = api->schedparam;
(gdb) n
71 schedpolicy = api->schedpolicy;
(gdb) n
72 schedparam = api->schedparam;
(gdb)
73 break;
(gdb)
89 if ( the_attr->contentionscope != PTHREAD_SCOPE_PROCESS )
(gdb)
20 return (boolean) (priority >= 1 && priority <= 254);
(gdb)
96 if ( !_POSIX_Priority_Is_valid( schedparam.sched_priority ) )
(gdb)
235 return EINVAL;
(gdb) print schedparam
$2 = {sched_priority = 1073764644, ss_low_priority = 8217,
ss_replenish_period = {tv_sec = 1077899424,
tv_nsec = 1074035684}, ss_initial_budget = {tv_sec = 0, tv_nsec = 0}}
(gdb) print schedparam.sched_priority
$3 = 1073764644
(gdb) n
247 }
(gdb)
Init (ignored=0) at player.c:286
286 if (task_ret) {
(gdb) print task_ret
$4 = 22
Pattara
--
Please avoid sending me Word or PowerPoint attachments.
See http://www.fsf.org/philosophy/no-word-attachments.html
----------------------------------------------------------------------
Ott Pattara Kiatisevi T L W G
M.Sc. INFOTECH Student, Stuttgart, Germany http://linux.thai.net/
----------------------------------------------------------------------
On Thu, 7 Mar 2002, Joel Sherrill wrote:
>
>
> Pattara Kiatisevi wrote:
> >
> > Hi,
> >
> > I'm writing a pthread program. In the header I have:
> >
> > #define CONFIGURE_MAXIMUM_POSIX_THREADS 5
> > #define CONFIGURE_MAXIMUM_POSIX_MUTEXES 5
> > #define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 5
> >
> > Then in Init() I have sth. like:n
> >
> > {
> > int task_ret;
> > task_ret = pthread_create(&audioPlay, NULL, (void *) playAudioTask,
> > (void *) &taskparameter);
> > if (task_ret) {
> > perror("pthread_create: playAudioTask");
> > exit(EXIT_FAILURE);
> > }
> > }
> >
> > The program exited with task_ret = 22. Anybody has the idea what this "22"
> > means? Do I have to set any #define more in order to have pthread function
> > worked?
>
>
> You probably want to use strerror or perror on the exit paths. But
> see /opt/rtems/CPU-rtems/include/sys/errno.h for the mapping. This
> is EINVAL. Unfortunately, that is a catch all error in in POSIX.
> The only real error it doesn't cover is not configuring enough
> pthreads. I hate to suggest this but you would be better off
> tracing into the call or at least reading the pthreadcreate.c
> source and see if something rings a bell. Here is the URL
> for the man page which lists the conditions for EINVAL:
>
> http://www.oarcorp.com/rtemsdoc-4.5.1-pre3/rtemsdoc/html/posix_users/posix_users00344.html
>
> > Thank you very much,
>
> POSIX makes figuring out what is wrong with a call tough.
> I don't see anything obvious myself.
>
> > Pattara
> >
> > --
> > Please avoid sending me Word or PowerPoint attachments.
> > See http://www.fsf.org/philosophy/no-word-attachments.html
> > ----------------------------------------------------------------------
> > Ott Pattara Kiatisevi T L W G
> > M.Sc. INFOTECH Student, Stuttgart, Germany http://linux.thai.net/
> > ----------------------------------------------------------------------
>
> --
> Joel Sherrill, Ph.D. Director of Research & Development
> joel at OARcorp.com On-Line Applications Research
> Ask me about RTEMS: a free RTOS Huntsville AL 35805
> Support Available (256) 722-9985
>
>
More information about the users
mailing list