GeMRTOS
Todo List
Class g_rgb

Define a unified srtucture for different kind of resources.

Re-write the message resource routines

Global gk_Create_PCBs

Include into the KCB

System signal should be implmented when no free PCB is available

Global gk_CreateTask
TCBInherPriority has no sense
Global gk_ECB_GetFree
System signal should be implmented when no free ECB is available
Global gk_ECB_List_Unlink
Verify when a resource is unlinked (semaphore and queue message)
Global gk_ECB_Unlink

Check if it useful, otherwise delete the function

Implement G_FALSE when no linked

Global gk_ECBTL_Link
Check if time is a valid time
Global gk_ECBTL_Unlink
Implement G_FALSE when no a time event
Global gk_ENTRY_BAD_TASK_RETURN (void)
implement a safe rescate of the system
Global gk_Get_LCB

System signal should be implmented when no free LCB is available

Rewrite all the LCB support

Write the destroy LCB structure

Global gk_INIT_IRQ

Include Disabled but ready interrupt Type

Utilize the gk_SetTaskISR in order to be coherent if the user define a ISR in the main function

Global gk_INIT_KERNEL (void)

Modify to allow executing with normal drivers instead of reduced ones

use alt_dcache_flush_all(); after mutex to flush cache

Global gk_ISR_COMPLETE
Include completes but task remains ready.
Global gk_ISR_RELEASE
Verify if task is waiting to enable the interrupt, otherwise change the Type of the ISR
Global gk_KCBASL_GetSCB
Check if this function is necessary
Global gk_KERNEL_TASK_COMPLETE (void)
Check if IRQ is enabled when all ISR are complete
Global gk_KERNEL_TASK_COMPLETE (void)
Check if IRQ is enabled when all ISR are complete
Global gk_LCBFPL_Link
Check if index is correct and return G_FASEL if not.
Global gk_LCBFPL_Unlink
Check if Processor ID is valid and return G_FALSE
Global gk_LCBL_Link

Check everything about this function

Define the G_FALSE return

Global gk_LCBL_UnLink
Implement G_FALSE returns
Global gk_PCB_GetNextTCB
Check if it is necessary or delete this function
Global gk_RCB_GetFree
ystem signal should be implmented when no free RCB is available
Global gk_RCBASL_Link
Global gk_RCBASL_Unlink
Return G_FALSE when it is not linked
Global gk_RCBFL_Link
Return G_FALSE when it is not unused
Global gk_RCBGEL_Link
Check priority for different structures
Global gk_RCBWEL_Link
Considered when no free ECB are available
Global gk_RRDS_GetFree

System signal should be implmented when no free RRDS is available

verify correctness !!!!!

verify correctness !!!!!

Global gk_RRDSASL_GetSCB
Check if this function is necessary and valid for the union RRDS
Global gk_RRDSASL_UnLink
Check if it is linked and return G_FALSE if it is not
Global gk_RRDSFL_Link (GS_RRDS *prrds)

Check the RRDS according structure (queue, semaphore)

Check if RRDS is to ECB or TCB too (I am not sure)

Global gk_RRDSFL_Link (GS_RRDS *prrds)

Check the RRDS according structure (queue, semaphore)

Check if RRDS is to ECB or TCB too (I am not sure)

Global gk_SCBAPSL_Link
Check if the function is necesary, otherwise delete
Global gk_SCBFL_Link
Check is ECB signal is ready for linking to free list without links.
Global gk_SetLowestProcessor
Check for error and return G_FALSE
Global gk_SetTaskISR

Check if IRQ number or TCB pointer al valid.

Implement the reverse function to convert a ISR into a task

Global gk_TASK_GRANTED_PRIORITY_GET
Check according the type of reource
Global gk_TASK_INHERENCE_PRIORITY_SET
Verify kind of resource
Global gk_TASK_IS_BLOCKED
Implement for different resources
Global gk_TASK_Kill
Implement G_FALSE return
Global gk_TASK_PRIORITY_SET
Check if state is valid
Global gk_TASK_RELEASE
Check Ready and Running state to trigger the abort signal
Global gk_TASK_RESOURCE_CREATE
Eliminate the code replacing where it is used
Global gk_TASK_RESOURCE_DESTROY
Eliminate replacing the code where it is used
Global gk_TASK_RESOURCE_GRANT
Eliminate the function replacing the code
Global gk_TASK_RESOURCE_UNGRANT
Eliminate replacing the code
Global gk_TASK_RESOURCE_UNWAIT
Eliminate the code replacing it where it is called from
Global gk_TASK_RESOURCE_WAIT
Eliminate this function replacing the code where it is called from
Global gk_TASK_STK_Init
Implement validity checks
Global gk_TCB_List_Unlink
Check unlink for different resources (semaphore and messages) when they are granted
Global gk_TCB_Unlink
Implement the G_FALSE when no linked
Global gk_TCBAEL_Link
Check validity of XCB
Global gk_TCBASL_Unlink
Define the G_FALSE return when signal is not associated with the TCB
Global gk_TCBPSL_Unlink
Return G_FALSE when it is not associated SCB to TCB
Global gk_TCBRDYL_Link
Implement G_FALSE return
Global gk_TCBRDYL_Unlink
Implement G_FALSE return when error
Global gk_TCBRUNL_Link
Implement G_FALSE return
Global gk_TCBRUNL_Unlink
Include G_FALSE when TCB is not in RUN list
Global gk_TCBWL_Link
Define the types of waiting states
Global gk_TCBWL_Unlink
Implement G_FALSE return when is not waiting
Global gk_TIME_CALLBACK

raise a signal when it is blocked

Global gk_timeout_ECB_SEM_post
Eliminate the TASK_RESOURCE routines
Global gk_timeout_ECB_SEM_wait
Replace gk_TASK_RESOURCE_UNWAIT
Class gs_ecb
Check if all the states and type are needed
Class gs_lcb

Check correctness for multiple list scheduling

define types

Include maximun number of running tasks and current running tasks to control exclusion

Class gs_mcb
Check if gs_mcb structure is required
Class gs_pcb
Define the type for processors
Class gs_rrds
Define a unified srtucture for different kind of resources.
Class gs_scb
define the rest of signal types required.
Class gs_tcb
Check if fields can be grouped into an union to save fields for differetn type of TCBs. For instance, period and ISR links are not requiered for the same type of task.
Global gu_Clock
Analise to use gt_tm as time format for user
Global gu_Convert_Time
Define if gt_time should be used for user
Global gu_Get_CPU_ID

Check if return can be changed to INT32

Change to user API files

Global gu_get_frozen_threshold
Global gu_get_irq_status
Change to return status of one IRQ in order to cover more than a INT32 scope
Global gu_Get_Next_Occurrence_Time
Change to user API files
Global gu_get_now
Analise if gu_Clock is more adecuate
Global gu_sem_destroy
Analyse to remove all list and trigger signal to tasks
Global gu_sem_getvalue
Check if this function is necessary
Global gu_sem_post
Check if semaphore is granted to the task doing the post
Global gu_Set_Default_Task_List
Check if list is a valid list and return accordingly
Global gu_Set_Default_Task_Type
Check validity of type previous to change it
Global gu_SetTaskDeadline
Implement the change of the deadline in the currrent invocation. It should considered the difference with the current deadline
Global gu_SetTaskISR

Check if IRQ number or TCB pointer al valid.

Implement the reverse function to convert a ISR into a task

Global gu_SetTaskList

Check if index is valid

Unlinks from current list and link to the new link accordingly.

Global gu_SetTaskPeriod
Implement the change of the period in the currrent invocation. It should considered the difference with the current period
Global gu_SetTaskReadyPriority

Unlink and link if task is ready

Put priority as level and priority

Global gu_SetTaskRunPriority

Unlink and link if task is running

Put priority as level and priority

Global gu_SetTaskType
Validate type previous to assign
Global gu_signal_create

Check SCB availability

Include signal for the rest of control blocks

Define signals for different events and resources

ASigne TaskArg to the argument different from Type

Global gu_signal_destroy
Check everything of this function
Global gu_StartTaskwithOffset

Include start of a ISR

Include start of an IDLE task??

Global gu_TASK_IS_BLOCKED
Check correcteness for diferent resources (semaphore and message queue)
Global gu_TASK_Kill
Check that all the structures are adequatelly treated
Global gu_TASK_RESUME
Check that GRTOS is running
Global gu_TASK_Sleep_Time
Check if it can be implemented only with gk_KERNEL_TASK_SUSPEND instead of gk_KERNEL_TASK_SUSPEND_CURRENT
Global gu_TASK_SUSPEND
Check gk_KERNEL_TASK_SUSPEND with current task
Global OPTIMEZE_CODE

explain correctelly

explain correctelly

Global RCB_IsValid
Find a way to determine validity when it is not an array
Global RRDS_IsValid
Find a way when it is not an array of control blocks
Global SCB_IsValid
Class T_MESSAGE_RESOURCE
Check if T_MESSAGE_RESOURCE structure is required