Jump to content

    

Создание таска.

Я создаю таск

tMSGs = taskSpawn("MSGS", GRS_LRUS_MSG_TASK_PRIORITY, VX_FP_TASK, (PAGE_SIZE*2), (FUNCPTR) Messages_TaskEntryPoint,    TASK_EMPTY_ARGS);

Таск в качестае аргумента получает указатель на функцию

void Messages_TaskEntryPoint()
{
   //do some stuff

   Messages_Main();
}

И потом крутиться в

void Messages_Main()
{
    while (1)
    {
        //do some stuff
    }
}

Но Messages_Main() вызывается из void Messages_TaskEntryPoint() - то есть Messages_TaskEntryPoint() остался на стаке. Так правильно делать?

Share this post


Link to post
Share on other sites
Так правильно делать?

 

Ну как бы не очень правильно, перерасход стека. Поставьте на Messages_Main подходящий модификатор для вашего компилятора, типа no_return, __task или что у Вас есть - скажите компилятору, что функция никогда не выйдет, и можно забить на сохранение всякого в стек.

Share this post


Link to post
Share on other sites
Ну как бы не очень правильно, перерасход стека. Поставьте на Messages_Main подходящий модификатор для вашего компилятора, типа no_return, __task или что у Вас есть - скажите компилятору, что функция никогда не выйдет, и можно забить на сохранение всякого в стек.

понял. спасибо.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this