Skip to content

Commit

Permalink
Fix #663, more consistent use of data types (WIP)
Browse files Browse the repository at this point in the history
Define and Use data types more consistently across CFE.
Replace many uses of generic uint16/uint32 with a more
purpose-specific typedef.
Replace all sizes with size_t across the API.
  • Loading branch information
jphickey committed Nov 5, 2020
1 parent 9804b59 commit 9ed226c
Show file tree
Hide file tree
Showing 42 changed files with 485 additions and 401 deletions.
32 changes: 12 additions & 20 deletions fsw/cfe-core/src/es/cfe_es_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -848,7 +848,7 @@ int32 CFE_ES_GetTaskID(CFE_ES_ResourceID_t *TaskIdPtr)
/*
** Function: CFE_ES_GetAppName - See API and header file for details
*/
int32 CFE_ES_GetAppName(char *AppName, CFE_ES_ResourceID_t AppId, uint32 BufferLength)
int32 CFE_ES_GetAppName(char *AppName, CFE_ES_ResourceID_t AppId, size_t BufferLength)
{
int32 Result;
CFE_ES_AppRecord_t *AppRecPtr;
Expand Down Expand Up @@ -890,7 +890,7 @@ int32 CFE_ES_GetAppName(char *AppName, CFE_ES_ResourceID_t AppId, uint32 BufferL
/*
** Function: CFE_ES_GetLibName - See API and header file for details
*/
int32 CFE_ES_GetLibName(char *LibName, CFE_ES_ResourceID_t LibId, uint32 BufferLength)
int32 CFE_ES_GetLibName(char *LibName, CFE_ES_ResourceID_t LibId, size_t BufferLength)
{
int32 Result;
CFE_ES_LibRecord_t *LibRecPtr;
Expand Down Expand Up @@ -932,7 +932,7 @@ int32 CFE_ES_GetLibName(char *LibName, CFE_ES_ResourceID_t LibId, uint32 BufferL
/*
** Function: CFE_ES_GetTaskName - See API and header file for details
*/
int32 CFE_ES_GetTaskName(char *TaskName, CFE_ES_ResourceID_t TaskId, uint32 BufferLength)
int32 CFE_ES_GetTaskName(char *TaskName, CFE_ES_ResourceID_t TaskId, size_t BufferLength)
{
int32 Result;
osal_id_t OsalId;
Expand Down Expand Up @@ -1002,7 +1002,7 @@ int32 CFE_ES_GetAppInfo(CFE_ES_AppInfo_t *AppInfo, CFE_ES_ResourceID_t AppId)
CFE_ES_CopyModuleBasicInfo(&AppRecPtr->StartParams.BasicInfo, AppInfo);
CFE_ES_CopyModuleStatusInfo(&AppRecPtr->ModuleInfo, AppInfo);

AppInfo->StackSize = AppRecPtr->StartParams.StackSize;
AppInfo->StackSize = CFE_ES_MEMOFFSET_ATOM(AppRecPtr->StartParams.StackSize);
AppInfo->ExceptionAction = AppRecPtr->StartParams.ExceptionAction;
AppInfo->Priority = AppRecPtr->StartParams.Priority;
AppInfo->MainTaskId = AppRecPtr->MainTaskId;
Expand Down Expand Up @@ -1217,9 +1217,9 @@ int32 CFE_ES_GetTaskInfo(CFE_ES_TaskInfo_t *TaskInfo, CFE_ES_ResourceID_t TaskId
int32 CFE_ES_CreateChildTask(CFE_ES_ResourceID_t *TaskIdPtr,
const char *TaskName,
CFE_ES_ChildTaskMainFuncPtr_t FunctionPtr,
uint32 *StackPtr,
uint32 StackSize,
uint32 Priority,
CFE_ES_StackPointer_t StackPtr,
size_t StackSize,
CFE_ES_TaskPriority_Atom_t Priority,
uint32 Flags)
{

Expand Down Expand Up @@ -1283,14 +1283,6 @@ int32 CFE_ES_CreateChildTask(CFE_ES_ResourceID_t *TaskIdPtr,
ParentTaskId = AppRecPtr->MainTaskId;
if ( CFE_ES_ResourceID_Equal(TaskId, ParentTaskId) )
{
/*
** Truncate the priority if needed
*/
if ( Priority > 255 )
{
Priority = 255;
}

/*
** Step 2: Create the new task using the OS API call
*/
Expand Down Expand Up @@ -1614,7 +1606,7 @@ int32 CFE_ES_WriteToSysLog(const char *SpecStringPtr, ...)
/*
** Function: CFE_ES_CalculateCRC - See API and header file for details
*/
uint32 CFE_ES_CalculateCRC(const void *DataPtr, uint32 DataLength, uint32 InputCRC, uint32 TypeCRC)
uint32 CFE_ES_CalculateCRC(const void *DataPtr, size_t DataLength, uint32 InputCRC, uint32 TypeCRC)
{
uint32 i;
int16 Index;
Expand Down Expand Up @@ -1701,7 +1693,7 @@ uint32 CFE_ES_CalculateCRC(const void *DataPtr, uint32 DataLength, uint32 InputC
** Purpose: Allocate a data block for a Critical Data Store.
**
*/
int32 CFE_ES_RegisterCDS(CFE_ES_CDSHandle_t *CDSHandlePtr, CFE_ES_CDS_Offset_t BlockSize, const char *Name)
int32 CFE_ES_RegisterCDS(CFE_ES_CDSHandle_t *CDSHandlePtr, size_t BlockSize, const char *Name)
{
int32 Status;
size_t NameLen;
Expand Down Expand Up @@ -1763,7 +1755,7 @@ int32 CFE_ES_RegisterCDS(CFE_ES_CDSHandle_t *CDSHandlePtr, CFE_ES_CDS_Offset_t B
if (Status < 0)
{
/* Translate AppID of caller into App Name */
CFE_ES_GetAppName(AppName, ThisAppId, OS_MAX_API_NAME);
CFE_ES_GetAppName(AppName, ThisAppId, sizeof(AppName));

CFE_EVS_SendEventWithAppID(CFE_ES_CDS_REGISTER_ERR_EID,
CFE_EVS_EventType_ERROR,
Expand Down Expand Up @@ -1821,7 +1813,7 @@ CFE_Status_t CFE_ES_GetCDSBlockIDByName(CFE_ES_ResourceID_t *BlockIdPtr, const c
* Purpose: Obtain CDS Block Name from ID
* See full API description in header file
*/
CFE_Status_t CFE_ES_GetCDSBlockName(char *BlockName, CFE_ES_ResourceID_t BlockId, uint32 BufferLength)
CFE_Status_t CFE_ES_GetCDSBlockName(char *BlockName, CFE_ES_ResourceID_t BlockId, size_t BufferLength)
{
CFE_Status_t Status;
CFE_ES_CDS_RegRec_t *RegRecPtr;
Expand Down Expand Up @@ -2072,7 +2064,7 @@ int32 CFE_ES_GetGenCounterIDByName(CFE_ES_ResourceID_t *CounterIdPtr, const char
* Purpose: Obtain Counter Name from ID
* See full API description in header file
*/
CFE_Status_t CFE_ES_GetGenCounterName(char *CounterName, CFE_ES_ResourceID_t CounterId, uint32 BufferLength)
CFE_Status_t CFE_ES_GetGenCounterName(char *CounterName, CFE_ES_ResourceID_t CounterId, size_t BufferLength)
{
CFE_ES_GenCounterRecord_t *CountRecPtr;
CFE_Status_t Status;
Expand Down
70 changes: 45 additions & 25 deletions fsw/cfe-core/src/es/cfe_es_apps.c
Original file line number Diff line number Diff line change
Expand Up @@ -267,9 +267,9 @@ int32 CFE_ES_ParseFileEntry(const char **TokenList, uint32 NumTokens)
const char *AppName;
const char *EntryPoint;
const char *EntryType;
unsigned int Priority;
unsigned int StackSize;
unsigned int ExceptionAction;
unsigned long PriorityIn;
unsigned long StackSizeIn;
unsigned long ExceptionActionIn;
CFE_ES_ResourceID_t ApplicationId;
int32 CreateStatus = CFE_ES_ERR_APP_CREATE;

Expand Down Expand Up @@ -298,10 +298,13 @@ int32 CFE_ES_ParseFileEntry(const char **TokenList, uint32 NumTokens)
*
* This permissive parsing should not be relied upon, as it may become more strict again in
* future CFE revisions.
*
* Also note that this uses "unsigned long" as that is the defined output type of strtoul().
* It will be converted to the correct type later.
*/
Priority = strtoul(TokenList[4], NULL, 0);
StackSize = strtoul(TokenList[5], NULL, 0);
ExceptionAction = strtoul(TokenList[7], NULL, 0);
PriorityIn = strtoul(TokenList[4], NULL, 0);
StackSizeIn = strtoul(TokenList[5], NULL, 0);
ExceptionActionIn = strtoul(TokenList[7], NULL, 0);

if(strcmp(EntryType,"CFE_APP")==0)
{
Expand All @@ -314,14 +317,27 @@ int32 CFE_ES_ParseFileEntry(const char **TokenList, uint32 NumTokens)
** 1 ( Processor reset ). If it's non-zero, assume it means
** reset CPU.
*/
if ( ExceptionAction > CFE_ES_ExceptionAction_RESTART_APP )
ExceptionAction = CFE_ES_ExceptionAction_PROC_RESTART;
if ( ExceptionActionIn > CFE_ES_ExceptionAction_RESTART_APP )
{
ExceptionActionIn = CFE_ES_ExceptionAction_PROC_RESTART;
}

/*
* Task priority cannot be bigger than OS_MAX_TASK_PRIORITY
*/
if ( PriorityIn > OS_MAX_TASK_PRIORITY )
{
PriorityIn = OS_MAX_TASK_PRIORITY;
}

/*
** Now create the application
*/
CreateStatus = CFE_ES_AppCreate(&ApplicationId, FileName,
EntryPoint, AppName, (uint32) Priority,
(uint32) StackSize, (uint32) ExceptionAction );
EntryPoint, AppName,
CFE_ES_TASKPRIORITY_ATOM(PriorityIn),
StackSizeIn,
CFE_ES_EXCEPTIONACTION_ENUM(ExceptionActionIn));
}
else if(strcmp(EntryType,"CFE_LIB")==0)
{
Expand Down Expand Up @@ -402,7 +418,7 @@ int32 CFE_ES_LoadModule(const CFE_ES_ModuleLoadParams_t* LoadParams, CFE_ES_Modu
if ( ReturnCode == CFE_SUCCESS )
{
/* store the data in the app record after successful load+lookup */
LoadStatus->ModuleId = ModuleId;
LoadStatus->ModuleId = CFE_ES_ResourceID_FromOSAL(ModuleId);
LoadStatus->EntryAddress = StartAddr;
}
else if (OS_ObjectIdDefined(ModuleId))
Expand Down Expand Up @@ -521,7 +537,7 @@ int32 CFE_ES_StartAppTask(const CFE_ES_AppStartParams_t* StartParams, CFE_ES_Res
StatusCode = OS_TaskCreate(&OsalTaskId, /* task id */
StartParams->BasicInfo.Name, /* task name */
CFE_ES_AppEntryPoint, /* task function pointer */
NULL, /* stack pointer (allocate) */
CFE_ES_TASK_STACK_ALLOCATE, /* stack pointer (allocate) */
StartParams->StackSize, /* stack size */
StartParams->Priority, /* task priority */
OS_FP_ENABLED); /* task options */
Expand Down Expand Up @@ -588,9 +604,9 @@ int32 CFE_ES_AppCreate(CFE_ES_ResourceID_t *ApplicationIdPtr,
const char *FileName,
const char *EntryPointName,
const char *AppName,
uint32 Priority,
uint32 StackSize,
uint32 ExceptionAction)
CFE_ES_TaskPriority_Atom_t Priority,
size_t StackSize,
CFE_ES_ExceptionAction_Enum_t ExceptionAction)
{
CFE_Status_t Status;
CFE_ES_ResourceID_t MainTaskId;
Expand Down Expand Up @@ -1321,7 +1337,7 @@ int32 CFE_ES_CleanUpApp(CFE_ES_ResourceID_t AppId)
*
* (this will be OS_OBJECT_ID_UNDEFINED if it was not loaded dynamically)
*/
ModuleId = AppRecPtr->ModuleInfo.ModuleId;
ModuleId = CFE_ES_ResourceID_ToOSAL(AppRecPtr->ModuleInfo.ModuleId);
}

/*
Expand Down Expand Up @@ -1749,7 +1765,7 @@ void CFE_ES_CopyModuleBasicInfo(const CFE_ES_ModuleLoadParams_t *ParamsPtr, CFE_
void CFE_ES_CopyModuleStatusInfo(const CFE_ES_ModuleLoadStatus_t *StatusPtr, CFE_ES_AppInfo_t *AppInfoPtr)
{
AppInfoPtr->ModuleId = StatusPtr->ModuleId;
CFE_SB_SET_MEMADDR(AppInfoPtr->StartAddress, StatusPtr->EntryAddress);
AppInfoPtr->StartAddress = CFE_ES_MEMADDRESS_ATOM(StatusPtr->EntryAddress);
}

/*
Expand All @@ -1762,12 +1778,12 @@ void CFE_ES_CopyModuleStatusInfo(const CFE_ES_ModuleLoadStatus_t *StatusPtr, CFE
** to check the return code and log any relevant errors based on the context.
**---------------------------------------------------------------------------------------
*/
void CFE_ES_CopyModuleAddressInfo(osal_id_t ModuleId, CFE_ES_AppInfo_t *AppInfoPtr)
void CFE_ES_CopyModuleAddressInfo(CFE_ES_ResourceID_t ModuleId, CFE_ES_AppInfo_t *AppInfoPtr)
{
OS_module_prop_t ModuleInfo;
int32 ReturnCode;

ReturnCode = OS_ModuleInfo ( ModuleId, &ModuleInfo );
ReturnCode = OS_ModuleInfo ( CFE_ES_ResourceID_ToOSAL(ModuleId), &ModuleInfo );
if ( ReturnCode == OS_SUCCESS )
{
AppInfoPtr->AddressesAreValid =
Expand All @@ -1780,12 +1796,16 @@ void CFE_ES_CopyModuleAddressInfo(osal_id_t ModuleId, CFE_ES_AppInfo_t *AppInfoP
memset(&ModuleInfo, 0, sizeof(ModuleInfo));
}

CFE_SB_SET_MEMADDR(AppInfoPtr->CodeAddress, ModuleInfo.addr.code_address);
CFE_SB_SET_MEMADDR(AppInfoPtr->CodeSize, ModuleInfo.addr.code_size);
CFE_SB_SET_MEMADDR(AppInfoPtr->DataAddress, ModuleInfo.addr.data_address);
CFE_SB_SET_MEMADDR(AppInfoPtr->DataSize, ModuleInfo.addr.data_size);
CFE_SB_SET_MEMADDR(AppInfoPtr->BSSAddress, ModuleInfo.addr.bss_address);
CFE_SB_SET_MEMADDR(AppInfoPtr->BSSSize, ModuleInfo.addr.bss_size);
/*
* Convert the internal size and address to the telemetry format.
* (The telemetry format may be a different bitwidth than the native processor)
*/
AppInfoPtr->CodeAddress = CFE_ES_MEMADDRESS_ATOM(ModuleInfo.addr.code_address);
AppInfoPtr->CodeSize = CFE_ES_MEMOFFSET_ATOM(ModuleInfo.addr.code_size);
AppInfoPtr->DataAddress = CFE_ES_MEMADDRESS_ATOM(ModuleInfo.addr.data_address);
AppInfoPtr->DataSize = CFE_ES_MEMOFFSET_ATOM(ModuleInfo.addr.data_size);
AppInfoPtr->BSSAddress = CFE_ES_MEMADDRESS_ATOM(ModuleInfo.addr.bss_address);
AppInfoPtr->BSSSize = CFE_ES_MEMOFFSET_ATOM(ModuleInfo.addr.bss_size);
}


16 changes: 8 additions & 8 deletions fsw/cfe-core/src/es/cfe_es_apps.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@ typedef struct
*/
typedef struct
{
cpuaddr EntryAddress;
osal_id_t ModuleId;
cpuaddr EntryAddress;
CFE_ES_ResourceID_t ModuleId;

} CFE_ES_ModuleLoadStatus_t;

Expand All @@ -117,8 +117,8 @@ typedef struct
/*
* Extra information the pertains to applications only, not libraries.
*/
cpusize StackSize;
uint16 Priority;
size_t StackSize;
CFE_ES_TaskPriority_Atom_t Priority;
CFE_ES_ExceptionAction_Enum_t ExceptionAction;

} CFE_ES_AppStartParams_t;
Expand Down Expand Up @@ -227,9 +227,9 @@ int32 CFE_ES_AppCreate(CFE_ES_ResourceID_t *ApplicationIdPtr,
const char *FileName,
const char *EntryPointName,
const char *AppName,
uint32 Priority,
uint32 StackSize,
uint32 ExceptionAction);
CFE_ES_TaskPriority_Atom_t Priority,
size_t StackSize,
CFE_ES_ExceptionAction_Enum_t ExceptionAction);
/*
** Internal function to load a a new cFE shared Library
*/
Expand Down Expand Up @@ -305,7 +305,7 @@ void CFE_ES_CopyModuleStatusInfo(const CFE_ES_ModuleLoadStatus_t *StatusPtr, CFE
** Purpose: Populate the cFE_ES_AppInfo structure with address information from OSAL.
**---------------------------------------------------------------------------------------
*/
void CFE_ES_CopyModuleAddressInfo(osal_id_t ModuleId, CFE_ES_AppInfo_t *AppInfoPtr);
void CFE_ES_CopyModuleAddressInfo(CFE_ES_ResourceID_t ModuleId, CFE_ES_AppInfo_t *AppInfoPtr);


#endif /* _cfe_es_apps_ */
4 changes: 2 additions & 2 deletions fsw/cfe-core/src/es/cfe_es_backgroundtask.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@

#define CFE_ES_BACKGROUND_SEM_NAME "ES_BG_SEM"
#define CFE_ES_BACKGROUND_CHILD_NAME "ES_BG_TASK"
#define CFE_ES_BACKGROUND_CHILD_STACK_PTR NULL
#define CFE_ES_BACKGROUND_CHILD_STACK_PTR CFE_ES_TASK_STACK_ALLOCATE
#define CFE_ES_BACKGROUND_CHILD_STACK_SIZE CFE_PLATFORM_ES_PERF_CHILD_STACK_SIZE
#define CFE_ES_BACKGROUND_CHILD_PRIORITY CFE_PLATFORM_ES_PERF_CHILD_PRIORITY
#define CFE_ES_BACKGROUND_CHILD_PRIORITY CFE_ES_TASKPRIORITY_ATOM(CFE_PLATFORM_ES_PERF_CHILD_PRIORITY)
#define CFE_ES_BACKGROUND_CHILD_FLAGS 0
#define CFE_ES_BACKGROUND_MAX_IDLE_DELAY 30000 /* 30 seconds */

Expand Down
12 changes: 6 additions & 6 deletions fsw/cfe-core/src/es/cfe_es_cds.c
Original file line number Diff line number Diff line change
Expand Up @@ -305,15 +305,15 @@ int32 CFE_ES_CDS_CachePreload(CFE_ES_CDS_AccessCache_t *Cache, const void *Sourc
** NOTE: For complete prolog information, see 'cfe_es_cds.h'
********************************************************************/

int32 CFE_ES_RegisterCDSEx(CFE_ES_CDSHandle_t *HandlePtr, CFE_ES_CDS_Offset_t UserBlockSize, const char *Name, bool CriticalTbl)
int32 CFE_ES_RegisterCDSEx(CFE_ES_CDSHandle_t *HandlePtr, size_t UserBlockSize, const char *Name, bool CriticalTbl)
{
CFE_ES_CDS_Instance_t *CDS = &CFE_ES_Global.CDSVars;
int32 Status;
int32 RegUpdateStatus;
CFE_ES_CDS_RegRec_t *RegRecPtr;
CFE_ES_MemOffset_t BlockOffset;
CFE_ES_MemOffset_t OldBlockSize;
CFE_ES_MemOffset_t NewBlockSize;
size_t BlockOffset;
size_t OldBlockSize;
size_t NewBlockSize;
CFE_ES_ResourceID_t PendingBlockId;
bool IsNewEntry;
bool IsNewOffset;
Expand Down Expand Up @@ -668,7 +668,7 @@ void CFE_ES_FormCDSName(char *FullCDSName, const char *CDSName, CFE_ES_ResourceI
{
char AppName[OS_MAX_API_NAME];

CFE_ES_GetAppName(AppName, ThisAppId, OS_MAX_API_NAME);
CFE_ES_GetAppName(AppName, ThisAppId, sizeof(AppName));

/* Ensure that AppName is null terminated */
AppName[OS_MAX_API_NAME-1] = '\0';
Expand Down Expand Up @@ -844,7 +844,7 @@ int32 CFE_ES_DeleteCDS(const char *CDSName, bool CalledByTblServices)
CFE_ES_ResourceID_t AppId;
uint32 i;
char LogMessage[CFE_ES_MAX_SYSLOG_MSG_SIZE];
CFE_ES_MemOffset_t OldBlockSize;
size_t OldBlockSize;

LogMessage[0] = 0;

Expand Down
2 changes: 1 addition & 1 deletion fsw/cfe-core/src/es/cfe_es_cds.h
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ static inline bool CFE_ES_CDSBlockRecordIsMatch(const CFE_ES_CDS_RegRec_t *CDSBl
* @param[in] CDSBlockRecPtr pointer to registry table entry
* @returns Usable size of the CDS
*/
static inline CFE_ES_MemOffset_t CFE_ES_CDSBlockRecordGetUserSize(const CFE_ES_CDS_RegRec_t *CDSBlockRecPtr)
static inline CFE_ES_CDS_Offset_t CFE_ES_CDSBlockRecordGetUserSize(const CFE_ES_CDS_RegRec_t *CDSBlockRecPtr)
{
return (CDSBlockRecPtr->BlockSize - sizeof(CFE_ES_CDS_BlockHeader_t));
}
Expand Down
Loading

0 comments on commit 9ed226c

Please sign in to comment.