On Fri, 13 May 2022 13:58:22 -0400
Don Wallwork <d...@xsightlabs.com> wrote:

> +             if (internal_conf->huge_worker_stack_size == 0) {
> +                     ret = pthread_create(&lcore_config[i].thread_id, NULL,
> +                                          eal_thread_loop,
> +                                          (void *)(uintptr_t)i);
> +             } else {
> +                     /* Allocate NUMA aware stack memory and set
> +                      * pthread attributes
> +                      */
> +                     pthread_attr_t attr;
> +                     size_t stack_size;
> +                     void *stack_ptr;
> +
> +                     if (pthread_attr_init(&attr) != 0) {
> +                             rte_eal_init_alert("Cannot init pthread "
> +                                                "attributes");
> +                             rte_errno = EFAULT;
> +                             return -1;
> +                     }
> +                     if (internal_conf->huge_worker_stack_size ==
> +                         USE_OS_STACK_SIZE) {
> +                             if (pthread_attr_getstacksize(&attr,
> +                                                           &stack_size) != 
> 0) {
> +                                     rte_errno = EFAULT;
> +                                     return -1;
> +                             }
> +                     } else {
> +                             stack_size =
> +                                     internal_conf->huge_worker_stack_size;
> +                     }
> +                     stack_ptr =
> +                             rte_zmalloc_socket("lcore_stack",
> +                                                stack_size,
> +                                                stack_size,
> +                                                rte_lcore_to_socket_id(i));
> +
> +                     if (stack_ptr == NULL) {
> +                             rte_eal_init_alert("Cannot allocate stack "
> +                                                "memory for worker lcore");
> +                             rte_errno = ENOMEM;
> +                             return -1;
> +                     }
> +
> +                     if (pthread_attr_setstack(&attr,
> +                                               stack_ptr,
> +                                               stack_size) != 0) {
> +                             rte_eal_init_alert("Cannot set pthread "
> +                                                "stack attributes");
> +                             rte_errno = EFAULT;
> +                             return -1;
> +                     }
> +
> +                     /* create a thread for each lcore */
> +                     ret = pthread_create(&lcore_config[i].thread_id, &attr,
> +                                          eal_thread_loop,
> +                                          (void *)(uintptr_t)i);
> +
> +                     if (pthread_attr_destroy(&attr) != 0) {
> +                             rte_eal_init_alert("Cannot destroy pthread "
> +                                                "attributes");
> +                             rte_errno = EFAULT;
> +                             return -1;
> +                     }

The indentation is getting kind of deep here, and to me that indicates
a good place to split this into a helper function?

Reply via email to