!522 fix: 修复pthread_create相关问题

Merge pull request !522 from zhushengle/pthread
This commit is contained in:
openharmony_ci 2022-01-04 11:16:07 +00:00 committed by Gitee
commit 3c19b017fc
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
1 changed files with 6 additions and 4 deletions

View File

@ -98,12 +98,14 @@ static int PthreadCreateAttrInit(const pthread_attr_t *attr, void *(*startRoutin
taskInitParam->uwStackSize = threadAttr->stacksize; taskInitParam->uwStackSize = threadAttr->stacksize;
if (threadAttr->inheritsched == PTHREAD_EXPLICIT_SCHED) { if (threadAttr->inheritsched == PTHREAD_EXPLICIT_SCHED) {
taskInitParam->usTaskPrio = (UINT16)threadAttr->schedparam.sched_priority; taskInitParam->usTaskPrio = (UINT16)threadAttr->schedparam.sched_priority;
} else { } else if (IsPthread(pthread_self())) {
ret = pthread_getschedparam(pthread_self(), &policy, &schedParam); ret = pthread_getschedparam(pthread_self(), &policy, &schedParam);
if (ret != 0) { if (ret != 0) {
return ret; return ret;
} }
taskInitParam->usTaskPrio = (UINT16)schedParam.sched_priority; taskInitParam->usTaskPrio = (UINT16)schedParam.sched_priority;
} else {
taskInitParam->usTaskPrio = (UINT16)threadAttr->schedparam.sched_priority;
} }
PthreadData *pthreadData = (PthreadData *)malloc(sizeof(PthreadData)); PthreadData *pthreadData = (PthreadData *)malloc(sizeof(PthreadData));
@ -140,6 +142,9 @@ int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
return ret; return ret;
} }
/* set pthread default name */
(void)sprintf_s(taskInitParam.pcName, PTHREAD_NAMELEN, "pthread%u", taskID);
if (LOS_TaskCreateOnly(&taskID, &taskInitParam) != LOS_OK) { if (LOS_TaskCreateOnly(&taskID, &taskInitParam) != LOS_OK) {
free((VOID *)(UINTPTR)taskInitParam.uwArg); free((VOID *)(UINTPTR)taskInitParam.uwArg);
return EINVAL; return EINVAL;
@ -154,9 +159,6 @@ int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
LOS_ListAdd(&g_pthreadListHead, &pthreadData->threadList); LOS_ListAdd(&g_pthreadListHead, &pthreadData->threadList);
LOS_IntRestore(intSave); LOS_IntRestore(intSave);
/* set pthread default name */
(void)sprintf_s(taskInitParam.pcName, PTHREAD_NAMELEN, "pthread%u", taskID);
(void)LOS_TaskResume(taskID); (void)LOS_TaskResume(taskID);
*thread = (pthread_t)taskID; *thread = (pthread_t)taskID;