/* For a detailed description of the function, its arguments and return value please refer to the description in the header file 'drv_dsl_cpe_os.h' */ DSL_void_t* DSL_DRV_VMalloc( DSL_DRV_size_t nSize) { return IFXOS_MemAlloc(nSize); }
/** Read a file from the OS specific medium. \remarks The required data buffer is allocated and it is in the responsibility of the user to free the buffer in a later step. \remarks Allocate file size + 1 to terminate the buffer with '\0'. This will allow other functions to parse the buffer without the size info. \param pName - Points to the file name. \param ppDataBuf - Return Pointer of the allocated data buffer pointer. [O] \param pBufSize_byte - Points to return the size [byte] of the data buffer. [O] \return - IFX_SUCCESS for successful load file - IFX_ERROR in case of errors */ IFX_return_t IFXOS_FileLoad ( IFX_char_t const *pName, IFX_uint8_t **ppDataBuf, IFX_size_t *pBufSize_byte) { #if (IFXOS_HAVE_FILESYSTEM == 1) IFXOS_File_t *fd = IFX_NULL; IFXOS_stat_t stats; IFX_uint8_t *pDataBuf; IFX_size_t size, retVal; IFXOS_RETURN_IF_POINTER_NULL(pName, IFX_ERROR); IFXOS_RETURN_IF_POINTER_NULL(ppDataBuf, IFX_ERROR); IFXOS_RETURN_IF_POINTER_NULL(pBufSize_byte, IFX_ERROR); IFXOS_PRN_USR_DBG_NL( IFXOS, IFXOS_PRN_LEVEL_LOW, ("IFXOS - loading file %s" IFXOS_CRLF, pName)); if (IFXOS_Stat((IFX_char_t *)pName, &stats)) { IFXOS_PRN_USR_ERR_NL( IFXOS, IFXOS_PRN_LEVEL_ERR, ("IFXOS ERROR - Getting statistics on %s" IFXOS_CRLF, pName)); return IFX_ERROR; } size = stats.st_size; if (size == 0) { IFXOS_PRN_USR_ERR_NL( IFXOS, IFXOS_PRN_LEVEL_ERR, ("IFXOS ERROR - File %s has zero size." IFXOS_CRLF, pName)); return IFX_ERROR; } else { IFXOS_PRN_USR_DBG_NL( IFXOS, IFXOS_PRN_LEVEL_LOW, ("IFXOS - file <%s>: size %d bytes" IFXOS_CRLF, pName, (int)size)); } fd = IFXOS_FOpen(pName, "rb"); if (fd == IFX_NULL) { IFXOS_PRN_USR_ERR_NL( IFXOS, IFXOS_PRN_LEVEL_ERR, ("IFXOS ERROR - Load, opening file %s." IFXOS_CRLF, pName)); return IFX_ERROR; } /* size + 1 - to add null termination */ pDataBuf = (IFX_uint8_t*)IFXOS_MemAlloc(size + 1); if (pDataBuf == IFX_NULL) { IFXOS_PRN_USR_ERR_NL( IFXOS, IFXOS_PRN_LEVEL_ERR, ("IFXOS ERROR - Cannot allocate memory for file %s." IFXOS_CRLF, pName)); IFXOS_FClose(fd); return IFX_ERROR; } retVal = IFXOS_FRead(pDataBuf, 1, size, fd); if (retVal != size) { IFXOS_PRN_USR_ERR_NL( IFXOS, IFXOS_PRN_LEVEL_ERR, ("IFXOS ERROR - Cannot read file %s." IFXOS_CRLF, pName)); IFXOS_MemFree(pDataBuf); IFXOS_FClose(fd); return IFX_ERROR; } IFXOS_FClose(fd); pDataBuf[size] = '\0'; *pBufSize_byte = (IFX_uint32_t)size; *ppDataBuf = pDataBuf; return IFX_SUCCESS; #else /* IFXOS_HAVE_FILESYSTEM == 1 */ IFXOS_PRN_USR_ERR_NL( IFXOS, IFXOS_PRN_LEVEL_ERR, ("IFXOS ERROR - Load from file system not supported." IFXOS_CRLF)); return IFX_ERROR; #endif /* IFXOS_HAVE_FILESYSTEM == 0 */ }