ESP-pthread¶
Overview¶
- This module offers Espressif specific extensions to the pthread library that can be used to influence the behaviour of pthreads. Currently the following configuration can be tuned:
- Stack size of the pthreads
- Priority of the created pthreads
- Inheriting this configuration across threads
 
Example to tune the stack size of the pthread:
main()
{
    pthread_t t1;
    esp_pthread_cfg_t cfg;
    cfg.stack_size = (4 * 1024);
    esp_pthread_set_cfg(&cfg);
    pthread_create(&t1, NULL, thread_func);
}
The API can also be used for inheriting the settings across threads. For example:
void * my_thread2(void * p)
{
      /* This thread will inherit the stack size of 4K */
      printf("In my_thread2\n");
}
void * my_thread1(void * p)
{
      printf("In my_thread1\n");
      pthread_t t2;
      pthread_create(&t2, NULL, my_thread2);
}
main()
{
     pthread_t t1;
     esp_pthread_cfg_t cfg;
     cfg.stack_size = (4 * 1024);
     cfg.inherit_cfg = true;
     esp_pthread_set_cfg(&cfg);
     pthread_create(&t1, NULL, my_thread1);
}
API Reference¶
Header File¶
Functions¶
- 
esp_err_t esp_pthread_set_cfg(const esp_pthread_cfg_t *cfg)¶
- Configure parameters for creating pthread. - This API allows you to configure how the subsequent pthread_create() call will behave. This call can be used to setup configuration parameters like stack size, priority, configuration inheritance etc. - If the ‘inherit’ flag in the configuration structure is enabled, then the same configuration is also inherited in the thread subtree. - Return
- ESP_OK if configuration was successfully set
- ESP_ERR_NO_MEM if out of memory
 
- Parameters
- cfg: The pthread config parameters
 
 
- 
esp_err_t esp_pthread_get_cfg(esp_pthread_cfg_t *p)¶
- Get current pthread creation configuration. - This will retrieve the current configuration that will be used for creating threads. - Return
- ESP_OK if the configuration was available
- ESP_ERR_NOT_FOUND if a configuration wasn’t previously set
 
- Parameters
- p: Pointer to the pthread config structure that will be updated with the currently configured parameters