mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-03 16:41:44 +01:00 
			
		
		
		
	
		
			
	
	
		
			66 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
		
		
			
		
	
	
			66 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| 
								 | 
							
								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:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.. highlight:: c
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								::
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								   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:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.. highlight:: c
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								::
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								   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
							 | 
						||
| 
								 | 
							
								-------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								.. include:: /_build/inc/esp_pthread.inc
							 | 
						||
| 
								 | 
							
								
							 |