|
|
@@ -32,7 +32,7 @@ int32_t _ghf_genrWS( _GHT_WRKSET* const pwSet,
|
|
|
const _GHT_LOG Log,
|
|
|
const int32_t i32ExclusiveLogFlag,
|
|
|
const cl_device_id clWrkDev,
|
|
|
- const char** const ppcCLProgramSources,
|
|
|
+ char** const ppcCLProgramSources,
|
|
|
const _GHE_SRCTYPE SourceType,
|
|
|
const char* const pcOCLBuildOpts,
|
|
|
const _GHE_LOGLVL LogLvl,
|
|
|
@@ -47,12 +47,20 @@ int32_t _ghf_genrWS( _GHT_WRKSET* const pwSet,
|
|
|
) {
|
|
|
/**/
|
|
|
#define __CLAPI_ERR_ROUTINE_WITH_RET(___CLAPI_CALL) \
|
|
|
-{ const cl_int tmp=pwSet->APIErr; \
|
|
|
- char pcLogMsg[_GHM_MAXLEN_OF_LOGMSG]; \
|
|
|
- snprintf(pcLogMsg, _GHM_MAXLEN_OF_LOGMSG, "%s/%s", __func__, ___CLAPI_CALL); \
|
|
|
- _ghf_logWS_APIErr(*pwSet, pcLogMsg); \
|
|
|
- _ghf_wipeWS(pwSet); \
|
|
|
- return(tmp); }
|
|
|
+{ const cl_int tmp=pwSet->APIErr; \
|
|
|
+ char pcLogMsg[_GHM_MAXLEN_OF_LOGMSG]; \
|
|
|
+ snprintf(pcLogMsg, _GHM_MAXLEN_OF_LOGMSG, \
|
|
|
+ "%s/%s", __func__, ___CLAPI_CALL); \
|
|
|
+ _ghf_logWS_APIErr(*pwSet, pcLogMsg); \
|
|
|
+ _ghf_wipeWS(pwSet); \
|
|
|
+ return(tmp); }
|
|
|
+#define __CLAPI_CREATE_PROGRAM_ERR_TO_STDOUT(___CLAPI_CALL) \
|
|
|
+{ FILE* pTmpFilePtr=pwSet->Log.pfOut; \
|
|
|
+ pwSet->Log.pfOut=stdout; \
|
|
|
+ _ghf_logWS_DevInfoShort(*pwSet,_ghf_getWS_Dev(*pwSet),NULL); \
|
|
|
+ snprintf(pcLogMsg,_GHM_MAXLEN_OF_LOGMSG,___CLAPI_CALL); \
|
|
|
+ _ghf_logWS_APIErr(*pwSet, pcLogMsg); _ghf_logWS_Delim(*pwSet); \
|
|
|
+ pwSet->Log.pfOut=pTmpFilePtr; }
|
|
|
/**/
|
|
|
char pcLogMsg[_GHM_MAXLEN_OF_LOGMSG];
|
|
|
if(!pwSet) return(_GHM_NULL_POINTER_RECEIVED_ERROR);
|
|
|
@@ -164,29 +172,21 @@ int32_t _ghf_genrWS( _GHT_WRKSET* const pwSet,
|
|
|
* исходных текстов препятствует созданию
|
|
|
* ядерных функций. Необходимо разобраться в
|
|
|
* причинах. */
|
|
|
- /*((size_t**)ppcCLProgramSources)[cluNofListings+1],*/
|
|
|
+ /*((size_t**)ppcCLProgramSources)[cluNofListings+1],*/
|
|
|
&pwSet->APIErr);
|
|
|
if(pwSet->APIErr) {
|
|
|
#ifdef __OCLH_BUILD_LOG_TO_STDOUT_FLAG
|
|
|
- {
|
|
|
- FILE* pTmpFilePtr=pwSet->Log.pfOut;
|
|
|
- pwSet->Log.pfOut=stdout;
|
|
|
- _ghf_logWS_DevInfoShort(*pwSet,_ghf_getWS_Dev(*pwSet),
|
|
|
- NULL);
|
|
|
- snprintf(pcLogMsg, _GHM_MAXLEN_OF_LOGMSG,
|
|
|
- "clCreateProgramWithSource");
|
|
|
- _ghf_logWS_APIErr(*pwSet, pcLogMsg);
|
|
|
- _ghf_logWS_Delim(*pwSet);
|
|
|
- pwSet->Log.pfOut=pTmpFilePtr;
|
|
|
- }
|
|
|
+ __CLAPI_CREATE_PROGRAM_ERR_TO_STDOUT("clCreateProgramWithSource");
|
|
|
#endif /* __OCLH_BUILD_LOG_TO_STDOUT_FLAG */
|
|
|
__CLAPI_ERR_ROUTINE_WITH_RET("clCreateProgramWithSource")
|
|
|
- } }
|
|
|
+ }
|
|
|
+ }
|
|
|
break;
|
|
|
case _GHE_IR_LISTINGS:
|
|
|
{ /* TODO: make IR output and processing */
|
|
|
_ghf_logWS_Msg(*pwSet, "_GHE_IR_LISTINGS");
|
|
|
- _ghf_wipeWS(pwSet); return(1); }
|
|
|
+ _ghf_wipeWS(pwSet); return(1);
|
|
|
+ }
|
|
|
break;
|
|
|
case _GHE_SEPARATED_OBJECTS:
|
|
|
{ cl_device_id cldev=_ghf_getWS_Dev(*pwSet);
|
|
|
@@ -220,17 +220,7 @@ int32_t _ghf_genrWS( _GHT_WRKSET* const pwSet,
|
|
|
_ghf_freeHostZ(&pPrograms);
|
|
|
pwSet->APIErr=err;
|
|
|
#ifdef __OCLH_BUILD_LOG_TO_STDOUT_FLAG
|
|
|
- {
|
|
|
- FILE* pTmpFilePtr=pwSet->Log.pfOut;
|
|
|
- pwSet->Log.pfOut=stdout;
|
|
|
- _ghf_logWS_DevInfoShort(*pwSet,_ghf_getWS_Dev(*pwSet),
|
|
|
- NULL);
|
|
|
- snprintf(pcLogMsg, _GHM_MAXLEN_OF_LOGMSG,
|
|
|
- "clCreateProgramWithBinary");
|
|
|
- _ghf_logWS_APIErr(*pwSet, pcLogMsg);
|
|
|
- _ghf_logWS_Delim(*pwSet);
|
|
|
- pwSet->Log.pfOut=pTmpFilePtr;
|
|
|
- }
|
|
|
+ __CLAPI_CREATE_PROGRAM_ERR_TO_STDOUT("clCreateProgramWithBinary");
|
|
|
#endif /* __OCLH_BUILD_LOG_TO_STDOUT_FLAG */
|
|
|
__CLAPI_ERR_ROUTINE_WITH_RET("clCreateProgramWithBinary")
|
|
|
}
|
|
|
@@ -248,24 +238,15 @@ int32_t _ghf_genrWS( _GHT_WRKSET* const pwSet,
|
|
|
_ghf_freeHostZ(&pPrograms);
|
|
|
pwSet->APIErr=err;
|
|
|
#ifdef __OCLH_BUILD_LOG_TO_STDOUT_FLAG
|
|
|
- {
|
|
|
- FILE* pTmpFilePtr=pwSet->Log.pfOut;
|
|
|
- pwSet->Log.pfOut=stdout;
|
|
|
- _ghf_logWS_DevInfoShort(*pwSet,_ghf_getWS_Dev(*pwSet),
|
|
|
- NULL);
|
|
|
- snprintf(pcLogMsg, _GHM_MAXLEN_OF_LOGMSG,
|
|
|
- "clLinkProgram");
|
|
|
- _ghf_logWS_APIErr(*pwSet, pcLogMsg);
|
|
|
- _ghf_logWS_Delim(*pwSet);
|
|
|
- pwSet->Log.pfOut=pTmpFilePtr;
|
|
|
- }
|
|
|
+ __CLAPI_CREATE_PROGRAM_ERR_TO_STDOUT("clLinkProgram");
|
|
|
#endif /* __OCLH_BUILD_LOG_TO_STDOUT_FLAG */
|
|
|
__CLAPI_ERR_ROUTINE_WITH_RET("clLinkProgram")
|
|
|
}
|
|
|
for(i=0u; i<cluNofBinaries; i++)
|
|
|
if(pPrograms[i])
|
|
|
pwSet->APIErr=clReleaseProgram(pPrograms[i]);
|
|
|
- _ghf_freeHostZ(&pPrograms); }
|
|
|
+ _ghf_freeHostZ(&pPrograms);
|
|
|
+ }
|
|
|
break;
|
|
|
case _GHE_LINKED_OBJECTS:
|
|
|
{ cl_device_id cldev=_ghf_getWS_Dev(*pwSet);
|
|
|
@@ -281,20 +262,11 @@ int32_t _ghf_genrWS( _GHT_WRKSET* const pwSet,
|
|
|
&cliBinStatus, &pwSet->APIErr);
|
|
|
if(pwSet->APIErr) {
|
|
|
#ifdef __OCLH_BUILD_LOG_TO_STDOUT_FLAG
|
|
|
- {
|
|
|
- FILE* pTmpFilePtr=pwSet->Log.pfOut;
|
|
|
- pwSet->Log.pfOut=stdout;
|
|
|
- _ghf_logWS_DevInfoShort(*pwSet,_ghf_getWS_Dev(*pwSet),
|
|
|
- NULL);
|
|
|
- snprintf(pcLogMsg, _GHM_MAXLEN_OF_LOGMSG,
|
|
|
- "clCreateProgramWithBinary");
|
|
|
- _ghf_logWS_APIErr(*pwSet, pcLogMsg);
|
|
|
- _ghf_logWS_Delim(*pwSet);
|
|
|
- pwSet->Log.pfOut=pTmpFilePtr;
|
|
|
- }
|
|
|
+ __CLAPI_CREATE_PROGRAM_ERR_TO_STDOUT("clCreateProgramWithBinary");
|
|
|
#endif /* __OCLH_BUILD_LOG_TO_STDOUT_FLAG */
|
|
|
__CLAPI_ERR_ROUTINE_WITH_RET("clCreateProgramWithBinary")
|
|
|
- } }
|
|
|
+ }
|
|
|
+ }
|
|
|
break;
|
|
|
default:
|
|
|
{ char pcLogMsg[_GHM_MAXLEN_OF_LOGMSG];
|
|
|
@@ -302,7 +274,8 @@ int32_t _ghf_genrWS( _GHT_WRKSET* const pwSet,
|
|
|
"Unknown program source");
|
|
|
_ghf_logWS_APIErr(*pwSet, pcLogMsg);
|
|
|
_ghf_wipeWS(pwSet);
|
|
|
- return(_GHM_UNKNOWN_PROGRAM_SOURCE_ERROR); }
|
|
|
+ return(_GHM_UNKNOWN_PROGRAM_SOURCE_ERROR);
|
|
|
+ }
|
|
|
}
|
|
|
{
|
|
|
cl_int cliBuildCLAPIErr=CL_SUCCESS;
|
|
|
@@ -337,9 +310,8 @@ int32_t _ghf_genrWS( _GHT_WRKSET* const pwSet,
|
|
|
#endif /* defined(__OCLH_COMPILER_ONLY_FLAG) &&
|
|
|
!defined(__OCLH_LINKER_ONLY_FLAG) */
|
|
|
cliBuildCLAPIErr=pwSet->APIErr;
|
|
|
- while(_ghf_getWS_BuildStatus(*pwSet)==CL_BUILD_IN_PROGRESS) ;
|
|
|
- _ghf_logWS_BuildInfo(*pwSet, pwSet->Program, clWrkDev,
|
|
|
- LogLvl, _GHE_NO_BUILD_LOG);
|
|
|
+ while(_ghf_getWS_BuildStatus(*pwSet)==CL_BUILD_IN_PROGRESS)
|
|
|
+ ;
|
|
|
{
|
|
|
_GHT_LOG TmpLog=_ghf_declLog();
|
|
|
/* cl_uint cluNofKernels=0u; */
|
|
|
@@ -347,6 +319,8 @@ int32_t _ghf_genrWS( _GHT_WRKSET* const pwSet,
|
|
|
cl_build_status clBuildStatus=
|
|
|
_ghf_getWS_BuildStatus(*pwSet);
|
|
|
cl_program_binary_type clBinType=0u;
|
|
|
+ _ghf_logWS_BuildInfo(*pwSet, pwSet->Program, clWrkDev,
|
|
|
+ LogLvl, BuildLogMode);
|
|
|
if(BuildLogMode==_GHE_BUILD_LOG_IN_SEPARATED_FILES) {
|
|
|
TmpLog=pwSet->Log;
|
|
|
int32_t err=0;
|
|
|
@@ -384,23 +358,15 @@ int32_t _ghf_genrWS( _GHT_WRKSET* const pwSet,
|
|
|
_ghf_wipeWS(pwSet); return(err); }
|
|
|
_ghf_logWS_DevInfoShort(*pwSet,
|
|
|
_ghf_getWS_Dev(*pwSet), NULL);
|
|
|
-#ifdef __OCLH_BUILD_LOG_TO_STDOUT_FLAG
|
|
|
- {
|
|
|
- FILE* pTmpFilePtr=pwSet->Log.pfOut;
|
|
|
- pwSet->Log.pfOut=stdout;
|
|
|
- _ghf_logWS_DevInfoShort(*pwSet,
|
|
|
- _ghf_getWS_Dev(*pwSet),
|
|
|
- NULL);
|
|
|
- pwSet->Log.pfOut=pTmpFilePtr;
|
|
|
- }
|
|
|
-#endif /* __OCLH_BUILD_LOG_TO_STDOUT_FLAG */
|
|
|
+ _ghf_logWS_BuildInfo(*pwSet, pwSet->Program, clWrkDev,
|
|
|
+ LogLvl, BuildLogMode);
|
|
|
}
|
|
|
- _ghf_logWS_BuildInfo(*pwSet, pwSet->Program, clWrkDev,
|
|
|
- LogLvl, BuildLogMode);
|
|
|
#ifdef __OCLH_BUILD_LOG_TO_STDOUT_FLAG
|
|
|
{
|
|
|
FILE* pTmpFilePtr=pwSet->Log.pfOut;
|
|
|
pwSet->Log.pfOut=stdout;
|
|
|
+ _ghf_logWS_DevInfoShort(*pwSet,_ghf_getWS_Dev(*pwSet),
|
|
|
+ NULL);
|
|
|
_ghf_logWS_BuildInfo(*pwSet, pwSet->Program, clWrkDev,
|
|
|
LogLvl, BuildLogMode);
|
|
|
pwSet->Log.pfOut=pTmpFilePtr;
|
|
|
@@ -604,6 +570,7 @@ int32_t _ghf_genrWS( _GHT_WRKSET* const pwSet,
|
|
|
_ghf_logWS_Delim(*pwSet);
|
|
|
return(_GHM_OK);
|
|
|
/**/
|
|
|
+#undef __CLAPI_CREATE_PROGRAM_ERR_TO_STDOUT
|
|
|
#undef __CLAPI_ERR_ROUTINE_WITH_RET
|
|
|
/**/
|
|
|
}
|
|
|
@@ -697,8 +664,13 @@ int32_t _ghf_isWS_LogValid(const _GHT_WRKSET wSet) {
|
|
|
return(_ghf_isLog_Valid(wSet.Log));
|
|
|
}
|
|
|
|
|
|
-int32_t _ghf_recalcWS_WIWG(_GHT_WRKSET* const pwSet,
|
|
|
- const size_t szNofAllTasks) {
|
|
|
+int32_t _ghf_recalcWS_WIWG_1x1(_GHT_WRKSET* const pwSet) {
|
|
|
+ pwSet->szNofAllWI=1ul; pwSet->szNofWIinWG=1ul;
|
|
|
+ return(_GHM_OK);
|
|
|
+}
|
|
|
+
|
|
|
+int32_t _ghf_recalcWS_WIWG_dense(_GHT_WRKSET* const pwSet,
|
|
|
+ const size_t szNofAllTasks) {
|
|
|
if((szNofAllTasks/pwSet->szNofCmpUnits)>=pwSet->szMaxWGsz) {
|
|
|
size_t r=0ul;
|
|
|
pwSet->szNofWIinWG=pwSet->szMaxWGsz;
|
|
|
@@ -1038,9 +1010,9 @@ int32_t _ghf_saveWS_ProgramBinaries(_GHT_WRKSET wSet,
|
|
|
return(_GHM_OK);
|
|
|
}
|
|
|
|
|
|
-int32_t _ghf_wdcChkWS_APIErr (_GHT_WRKSET wSet,
|
|
|
- const char* const pcAPICall,
|
|
|
- const int32_t i32FlashFlag) {
|
|
|
+int32_t _ghf_wdcChkWS_APIErr(_GHT_WRKSET wSet,
|
|
|
+ const char* const pcAPICall,
|
|
|
+ const int32_t i32FlashFlag) {
|
|
|
if(wSet.APIErr) {
|
|
|
_ghf_logWS_APIErr(wSet,pcAPICall);
|
|
|
if(wSet.pvDat) wSet.pfnDatCleaner(wSet);
|
|
|
@@ -1102,6 +1074,56 @@ int32_t _ghf_wdcSetWS_KerErrToZero(_GHT_WRKSET wSet) {
|
|
|
return(_GHM_OK);
|
|
|
}
|
|
|
|
|
|
+/**/
|
|
|
+#define __GDM_SET_KERNEL_ARGS_BY_VA_LIST_FROM_NAME_W_RET(___GDM_SKA_MAC_Arg) \
|
|
|
+{ \
|
|
|
+ cl_uint cluNofKerArgs=0u, i=0u; \
|
|
|
+ size_t szRes=0ul; \
|
|
|
+ char pcLogMsg[_GHM_MAXLEN_OF_LOGMSG]; \
|
|
|
+ va_list volArgList; \
|
|
|
+ wSet.APIErr=clGetKernelInfo(kr, CL_KERNEL_NUM_ARGS, \
|
|
|
+ sizeof(cl_uint), &cluNofKerArgs, &szRes); \
|
|
|
+ snprintf(pcLogMsg, _GHM_MAXLEN_OF_LOGMSG, \
|
|
|
+ "%s/clGetKernelInfo/CL_KERNEL_NUM_ARGS", __func__); \
|
|
|
+ if(_ghf_wdcChkWS_APIErr(wSet,pcLogMsg,_GHM_NOFL)) return(wSet.APIErr); \
|
|
|
+ va_start(volArgList,___GDM_SKA_MAC_Arg); \
|
|
|
+ snprintf(pcLogMsg, _GHM_MAXLEN_OF_LOGMSG,"%s/clSetKernelArg",__func__); \
|
|
|
+ for(i=0;i<cluNofKerArgs;i++) { \
|
|
|
+ size_t sz=va_arg(volArgList,size_t); \
|
|
|
+ const void* addr=va_arg(volArgList,const void*); \
|
|
|
+ wSet.APIErr=clSetKernelArg(kr,i,sz,addr); \
|
|
|
+ if(_ghf_wdcChkWS_APIErr(wSet,pcLogMsg,_GHM_NOFL)) return(wSet.APIErr); \
|
|
|
+ } \
|
|
|
+ va_end(volArgList); \
|
|
|
+}
|
|
|
+/**/
|
|
|
+
|
|
|
+int32_t _ghf_wdcSetWS_KernArgs(_GHT_WRKSET wSet,const cl_kernel kr,...) {
|
|
|
+ __GDM_SET_KERNEL_ARGS_BY_VA_LIST_FROM_NAME_W_RET(kr);
|
|
|
+ return(_GHM_OK);
|
|
|
+}
|
|
|
+int32_t _ghf_wdcBExecWS_Kern(_GHT_WRKSET wSet,
|
|
|
+ const char* const pcKernName, ...) {
|
|
|
+ int32_t err=0;
|
|
|
+ const cl_kernel kr=_ghf_getWS_KernByName(wSet,pcKernName);
|
|
|
+ if(kr==_GHM_UNDEFPTR) {
|
|
|
+ if(wSet.pvDat) wSet.pfnDatCleaner(wSet);
|
|
|
+ return(_GHM_UNAVALABLE_KERNEL_ERROR);
|
|
|
+ }
|
|
|
+ if((err=_ghf_wdcSetWS_KerErrToZero(wSet))) return(err);
|
|
|
+ __GDM_SET_KERNEL_ARGS_BY_VA_LIST_FROM_NAME_W_RET(pcKernName);
|
|
|
+ wSet.APIErr=clEnqueueNDRangeKernel(wSet.Queue,kr,1u,0ul,
|
|
|
+ &wSet.szNofAllWI,&wSet.szNofWIinWG,
|
|
|
+ 0u,NULL,NULL);
|
|
|
+ if((err=_ghf_wdcChkWS_APIErr(wSet,"clEnqueueNDRangeKernel",_GHM_FL)))
|
|
|
+ return(err);
|
|
|
+ if((err=_ghf_wdcChkWS_KerErr(wSet,kr))) return(err);
|
|
|
+ return(_GHM_OK);
|
|
|
+}
|
|
|
+/**/
|
|
|
+#undef __GDM_SET_KERNEL_ARGS_BY_VA_LIST_FROM_NAME_W_RET
|
|
|
+/**/
|
|
|
+
|
|
|
_GHT_DEVLIST_DESC _ghf_declDevLstDesc(void) {
|
|
|
_GHT_DEVLIST_DESC dld={ .pcluIdxs=NULL, .pcWC=NULL };
|
|
|
return(dld);
|
|
|
@@ -1169,7 +1191,7 @@ _GHT_AWSS _ghf_declAWSs(const _GHE_LOGLVL LogLvl,
|
|
|
int32_t _ghf_genrAWSs( _GHT_AWSS* const pAWSs,
|
|
|
const _GHT_LOG Log,
|
|
|
const _GHT_DEVLIST_DESC DevLstDesc,
|
|
|
- const char** const ppcCLProgramSources,
|
|
|
+ char** const ppcCLProgramSources,
|
|
|
const _GHE_SRCTYPE SourceType,
|
|
|
const char* const OCLBuildOpts
|
|
|
#if defined(__OCLH_BUILDER_FLAG) || \
|
|
|
@@ -1248,12 +1270,14 @@ int32_t _ghf_genrAWSs( _GHT_AWSS* const pAWSs,
|
|
|
} else { /* подразумевается валидное описание устройств */
|
|
|
cl_uint j=0u;
|
|
|
while(DevLst[j]) {
|
|
|
- if(__ghf_cmpCharPtrAndWC(
|
|
|
- _ghf_getDevInf_charptr(DevLst[j],CL_DEVICE_NAME,
|
|
|
- &tmpWS.APIErr),
|
|
|
- DevLstDesc.pcWC, __GHE_CASE_SENSITIVE)) {
|
|
|
+ char* pcDevName=_ghf_getDevInf_charptr(DevLst[j],
|
|
|
+ CL_DEVICE_NAME,
|
|
|
+ &tmpWS.APIErr);
|
|
|
+ if(__ghf_cmpCharPtrAndWC(pcDevName,DevLstDesc.pcWC,
|
|
|
+ __GHE_CASE_SENSITIVE)) {
|
|
|
err=_ghf_addDevIdxToDevLstDesc(&TmpDevLstDesc,j);
|
|
|
if(err) {
|
|
|
+ if(pcDevName) { free(pcDevName); pcDevName =NULL; }
|
|
|
_ghf_wipeDevLstDesc(&TmpDevLstDesc);
|
|
|
_ghf_wipeAWSs(pAWSs);
|
|
|
_ghf_wipeDevList(&DevLst);
|
|
|
@@ -1262,6 +1286,7 @@ int32_t _ghf_genrAWSs( _GHT_AWSS* const pAWSs,
|
|
|
}
|
|
|
cluNofWS++;
|
|
|
}
|
|
|
+ if(pcDevName) { free(pcDevName); pcDevName=NULL; }
|
|
|
j++;
|
|
|
}
|
|
|
}
|
|
|
@@ -1443,15 +1468,13 @@ int32_t _ghf_wipeDevList(cl_device_id** const ppDevLst) {
|
|
|
return(_GHM_OK);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
int32_t __ghf_setWS_TextProgramId(_GHT_WRKSET wSet,
|
|
|
char* const pcDst,
|
|
|
char* const pcOutputPrefix) {
|
|
|
char pcDefProgName[64]="\0",
|
|
|
pcDefDevName[64]="\0",
|
|
|
- *pcApiDevName=_ghf_getDevInf_charptr(_ghf_getWS_Dev(wSet),
|
|
|
- CL_DEVICE_NAME, &wSet.APIErr);
|
|
|
+ *pcApiDevName=_ghf_getDevInf_charptr(_ghf_getWS_Dev(wSet),
|
|
|
+ CL_DEVICE_NAME, &wSet.APIErr);
|
|
|
snprintf(pcDefProgName, 64ul,
|
|
|
"program_0x%04lx", __GHM_U64STRIPTO2B((uint64_t)wSet.Program));
|
|
|
snprintf(pcDefDevName, 64ul,
|
|
|
@@ -1462,6 +1485,7 @@ int32_t __ghf_setWS_TextProgramId(_GHT_WRKSET wSet,
|
|
|
}
|
|
|
if(pcApiDevName) {
|
|
|
__ghf_removePreNPostSpacesFromCharPtr(pcApiDevName);
|
|
|
+ __ghf_replaceIllegalFSCharsInCharPtr(pcApiDevName);
|
|
|
__ghf_replaceSpacesWithUnderscoreInCharPtr(pcApiDevName);
|
|
|
}
|
|
|
snprintf(pcDst,_GHM_MAX_PATH_LENGTH,"%s/%s-%s",_GHM_LOG_PATH,
|