工具与软件:
您好、TI 专家!
打印的栈大小值 Thread_attr 将其初始化 pthread_attr_init (&thread_attr); 使用 pthread_attr_getstacksize 那么您将获得以下结果:
Linux OS:8388608 (8MB)
QNX OS:0
我们如何 在 QNX 上将 pthread 的栈大小设置为8MB、就像在 Linux 上一样?
tiovx/source/platform/os/posix/tivx_task.c
vx_status tivxTaskCreate(tivx_task *task, const tivx_task_create_params_t *params)
{
vx_status status = (vx_status)VX_SUCCESS;
if ((NULL != task) && (NULL != params))
{
tivx_task_context context;
task->tsk_handle = NULL;
context = (tivx_task_context)ownPosixObjectAlloc((vx_enum)TIVX_POSIX_TYPE_TASK);
if(context == NULL)
{
VX_PRINT(VX_ZONE_ERROR, "Context memory allocation failed\n");
status = (vx_status)VX_ERROR_NO_MEMORY;
}
else
{
pthread_attr_t thread_attr;
task->stack_ptr = params->stack_ptr;
task->stack_size = params->stack_size;
task->core_affinity = params->core_affinity;
task->priority = params->priority;
task->task_func = params->task_main;
task->app_var = params->app_var;
status = pthread_attr_init(&thread_attr);
if(status==0)
{
#if 0
{
struct sched_param schedprm;
uint32_t pri;
if(task->stack_size>0)
{
status |= pthread_attr_setstacksize(&thread_attr, task->stack_size);
}
status |= pthread_attr_setschedpolicy(&thread_attr, SCHED_RR);
pri = PRI_MIN;
if(task->priority==TIVX_TASK_PRI_HIGHEST)
{
pri = PRI_MAX;
}
else
if(task->priority==TIVX_TASK_PRI_LOWEST)
{
pri = PRI_MIN;
}
schedprm.sched_priority = pri;
status |= pthread_attr_setschedparam(&thread_attr, &schedprm);
}
#endif
if(status==0)
{
status = pthread_create(&context->hndl, &thread_attr, tivxTaskMain, task);
此致、
Hyeonseong