M. Koehrer wrote:
> Hi all,
>
> I have a simple question concerning the Xenomai native API:
> According to the API documentation, rt_task_self returns the
> address of the caller's task descriptor.
> I have now written the following (simple application):
> ---------- START ----------
> #include <stdio.h>
> #include <sys/mman.h>
> #include <native/task.h>
>
> RT_TASK task_desc;
>
> void mytask(void *cookie)
> {
> RT_TASK *tsk = rt_task_self();
> printf("rt_task_self %p\n"
> "task_desc %p\n", tsk, &task_desc);
> }
>
> int main(void)
> {
> mlockall(MCL_CURRENT|MCL_FUTURE);
>
> rt_task_create(&task_desc, "mytaskname", 0, 80, T_JOINABLE);
> rt_task_start(&task_desc, &mytask, NULL);
>
> rt_task_join(&task_desc);
>
> return 0;
> }
> ------------ END -----------
>
> I expect now that rt_task_self() returns exactly the address of the task_desc.
> However, a different address is returned.
> The output of the application from above is:
> rt_task_self 0x804a050
> task_desc 0x8049878
>
> How are those addresses related - how can I find out the descriptor address
> used for rt_task_create() at runtime?The documentation is not precise enough here: what you obtain from rt_task_self is /some/ task descriptor for the currently running task, it is not a reference to the same piece of memory containing the task descriptor. Check the library implementation for further insights. > > Background of the question: > I want to write an application that uses a couple of similar tasks. > I have to store some task-specific information (internal states...). > Now I am looking for a simple way to get this information at runtime from my > task > by calling rt_task_self() (or something similar) to use this address to reach > my > additional information. If you are on NPTL glibc, set up a __thread variable for the per-thread information. It will always contain the thread-related data that you can, e.g., fill in during the thread routine's prologue. Jan
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
