Tech Support > Computer Hardware > Microprocessors > <INTEGRITY RTOS> Passing arguments to an entry point function of the CreateTask() task kernel call
<INTEGRITY RTOS> Passing arguments to an entry point function of the CreateTask() task kernel call
Posted by Alex Vinokur on February 26th, 2006


=============
INTEGRITY RTOS
=============
Task kernel calls CreateTask(), CommonCreateTask(), CreateANSICTask(),
CreateProtectedTask() contain several arguments. One of them is the
entry point function.

Can that (entry point) function have arguments? How to pass these
arguments to the entry point function while calling CreateTask() and
similar task kernel calls.

---
Alex Vinokur
email: alex DOT vinokur AT gmail DOT com
http://mathforum.org/library/view/10978.html
http://sourceforge.net/users/alexvn

Posted by Richard on February 26th, 2006



"Alex Vinokur" <alexvn@users.sourceforge.net> wrote in message
news:1140937053.525987.237100@v46g2000cwv.googlegr oups.com...
I have never used Integrity RTOS but I'm sure the answers to your questions
are very easy to find in the manuals and examples that surely come with your
purchase. You do have the manuals?

I would be very surprised if the answer to your question "Can that function
have arguments" was "no".

Regards,
Richard.

http://www.FreeRTOS.org



Posted by Stefan Reuther on February 26th, 2006


Alex Vinokur wrote:
No, it can't have arguments. But you can associate an address with the
task using Get/SetTaskIdentification; that address can point to a
structure containing the arguments (like in Win32 or pthreads, where you
also can pass a single pointer only, not arbitrary arguments).


Stefan


Posted by Alex Vinokur on February 26th, 2006


Stefan Reuther wrote:
Thank you.

It works quite fine.

Here is an example:

====== foo.c ======
/* INTEGRITY RTOS */

#include "INTEGRITY.h"
#include <stdio.h>

void CHECK(Error TheError)
{
if (TheError) HaltTask(CurrentTask());
}

void entry_point()
{
Address TheAddress;
Error TheError = GetTaskIdentification(CurrentTask(),&TheAddress);
if (TheError == Success)
{
printf("Success -> GetTaskIdentification returned %s\n", TheAddress);
}
else
{
printf("Failure -> GetTaskIdentification returned Error=%d\n",
TheError);

}
Exit(0);
}


int main()
{
Task task;
char* ptr = "ABCDXYZ";

CHECK (CreateProtectedTask(1, (Address)entry_point, 0x1000,
"the-task", &task));
CHECK (SetTaskIdentification(task, (Address)ptr));

CHECK (RunTask(task));

exit(0);
}


===================



===== Output ======

Success -> GetTaskIdentification returned ABCDXYZ

===================

Alex Vinokur
email: alex DOT vinokur AT gmail DOT com
http://mathforum.org/library/view/10978.html
http://sourceforge.net/users/alexvn


Posted by Alex Vinokur on February 27th, 2006


Alex Vinokur wrote:
[snip]
CHECK (CloseProtectedTask(task));


---
Alex Vinokur
email: alex DOT vinokur AT gmail DOT com
http://mathforum.org/library/view/10978.html
http://sourceforge.net/users/alexvn



Similar Posts