FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [October 2007 Threads] CoRoutines, removing routines created.Posted by phil on October 16, 2007 Hi,
I have created a coRoutine task much like the flashLed example. The functions work fine as per the example. What I would like to do is deleted the tasks created (on an external event happening) and re-initialize my StartTimerCoRoutines( unsigned portBASE_TYPE uxNumberToCreate ) function shown below with a new number of tasks.
I have taken a look at the functions in croutine.c and the only one I think I could use is the xCoRoutineRemoveFromEventList( const xList *pxEventList ) function, but I am unsure how to get a pointer to the events list.
Hope you can help. Is this a normal task to do using the coRoutine functions or intended use.
Thanks,
Phil
void vDevPoll_StartTimerCoRoutines( unsigned portBASE_TYPE uxNumberToCreate ) { unsigned portBASE_TYPE uxIndex;
if( uxNumberToCreate > crfMAX_TIMER_TASKS ) { uxNumberToCreate = crfMAX_TIMER_TASKS; }
/* Create the queue used to pass data between the co-routines. */ xTimerQueue = xQueueCreate( crfQUEUE_LENGTH, sizeof( unsigned portBASE_TYPE ) );
if( xTimerQueue ) { /* Create uxNumberToCreate 'fixed delay' co-routines. */ for( uxIndex = 0; uxIndex < uxNumberToCreate; uxIndex++ ) { xCoRoutineCreate( prvDevPoll_FixedDelayCoRoutine, crfFIXED_DELAY_PRIORITY, uxIndex ); }
/* Create the 'flash' co-routine. */ xCoRoutineCreate( prvDevPoll_TimerCoRoutine, crfTIMER_PRIORITY, crfTIMER_INDEX ); } // Start the scheduler. // vTaskStartScheduler(); }
RE: CoRoutines, removing routines created.Posted by Dave on October 16, 2007 I don't know much about coroutines, but maybe you could just reinitialize all the lists by calling prvInitialiseCoRoutineLists()? You would have to ensure no coroutines were referenced from an event list also, otherwise you would end up with dangling pointers. You could then either free the memory used by the coroutine structure or reuse the same structures.
RE: CoRoutines, removing routines created.Posted by phil on October 16, 2007 Thanks for the response, It is not possible to use the prvInitialiseCoRoutineLists() function as it is private to the Coroutine.c class.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|