2018-02-25 04:26:04 -05:00
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:
2021-03-12 02:20:41 -05:00
2018-02-25 04:26:04 -05:00
* Stack size of the pthreads
* Priority of the created pthreads
* Inheriting this configuration across threads
2018-11-28 14:40:32 -05:00
* Thread name
* Core affinity / core pinning.
2018-02-25 04:26:04 -05:00
Example to tune the stack size of the pthread:
2020-01-02 11:58:29 -05:00
.. code-block :: c
2018-02-25 04:26:04 -05:00
2020-01-02 11:58:29 -05:00
void * thread_func(void * p)
{
printf("In thread_func\n");
return NULL;
}
2018-02-25 04:26:04 -05:00
2020-01-02 11:58:29 -05:00
void app_main(void)
{
pthread_t t1;
esp_pthread_cfg_t cfg = esp_create_default_pthread_config();
cfg.stack_size = (4 * 1024);
esp_pthread_set_cfg(&cfg);
2018-02-25 04:26:04 -05:00
2021-01-29 10:51:29 -05:00
pthread_create(&t1, NULL, thread_func, NULL);
2020-01-02 11:58:29 -05:00
}
2018-02-25 04:26:04 -05:00
The API can also be used for inheriting the settings across threads. For example:
2020-01-02 11:58:29 -05:00
.. code-block :: c
2021-03-12 02:20:41 -05:00
2020-01-02 11:58:29 -05:00
void * my_thread2(void * p)
2021-03-12 02:20:41 -05:00
{
2020-01-02 11:58:29 -05:00
/* This thread will inherit the stack size of 4K * /
printf("In my_thread2\n");
2018-02-25 04:26:04 -05:00
2020-01-02 11:58:29 -05:00
return NULL;
}
2018-02-25 04:26:04 -05:00
2020-01-02 11:58:29 -05:00
void * my_thread1(void * p)
{
printf("In my_thread1\n");
pthread_t t2;
2021-01-29 10:51:29 -05:00
pthread_create(&t2, NULL, my_thread2, NULL);
2018-02-25 04:26:04 -05:00
2020-01-02 11:58:29 -05:00
return NULL;
}
2018-02-25 04:26:04 -05:00
2020-01-02 11:58:29 -05:00
void app_main(void)
{
2018-02-25 04:26:04 -05:00
pthread_t t1;
2018-11-28 14:40:32 -05:00
esp_pthread_cfg_t cfg = esp_create_default_pthread_config();
2018-02-25 04:26:04 -05:00
cfg.stack_size = (4 * 1024);
cfg.inherit_cfg = true;
esp_pthread_set_cfg(&cfg);
2021-01-29 10:51:29 -05:00
pthread_create(&t1, NULL, my_thread1, NULL);
2020-01-02 11:58:29 -05:00
}
2018-02-25 04:26:04 -05:00
API Reference
-------------
2019-11-12 22:46:16 -05:00
.. include-build-file :: inc/esp_pthread.inc
2018-02-25 04:26:04 -05:00