作者:手机用户2502884923 | 来源:互联网 | 2023-05-27 13:53
我正在研究编程ESP8266串行wifi芯片.在其SDK示例中,它广泛使用了os_zalloc
我期望的函数malloc
.
偶尔也os_malloc
可以使用.所以它们在功能上似乎没有相同之处.
不幸的是没有文件.任何人都可以从以下头文件中做出有根据的猜测吗?
#ifndef __MEM_H__
#define __MEM_H__
//void *pvPortMalloc( size_t xWantedSize );
//void vPortFree( void *pv );
//void *pvPortZalloc(size_t size);
#define os_malloc pvPortMalloc
#define os_free vPortFree
#define os_zalloc pvPortZalloc
#endif
Clifford..
7
既然os_zalloc
是一个宏,并且在mem.h中给出了定义,那么问一个更好的问题是什么pvPortZalloc
.
给定函数名称pvPortMalloc
,vPortFree
并且pvPortZalloc
看起来正在使用的操作系统是FreeRTOS(或者它是商业许可的等效OpenRTOS),这是记录在案的 - 虽然不是特别说明pvPortZalloc
,但如果它不是简单的分配和零初始化则会很奇怪- 这是例如,这意味着什么在这里.这些函数是FreeRTOS的目标移植层的一部分,通常不会被应用程序级调用,但我想这里宏包装器用于访问应用程序用户的移植层代码而不是写两次.
在RTOS内核中,需要RTOS感知动态内存分配函数来确保线程安全,尽管一些标准库实现包含使用RTOS互斥调用实现的线程安全存根,这是一种更好的方法,因为现有的库和C++ new
/ delete
可以更容易用过的.
1> Clifford..:
既然os_zalloc
是一个宏,并且在mem.h中给出了定义,那么问一个更好的问题是什么pvPortZalloc
.
给定函数名称pvPortMalloc
,vPortFree
并且pvPortZalloc
看起来正在使用的操作系统是FreeRTOS(或者它是商业许可的等效OpenRTOS),这是记录在案的 - 虽然不是特别说明pvPortZalloc
,但如果它不是简单的分配和零初始化则会很奇怪- 这是例如,这意味着什么在这里.这些函数是FreeRTOS的目标移植层的一部分,通常不会被应用程序级调用,但我想这里宏包装器用于访问应用程序用户的移植层代码而不是写两次.
在RTOS内核中,需要RTOS感知动态内存分配函数来确保线程安全,尽管一些标准库实现包含使用RTOS互斥调用实现的线程安全存根,这是一种更好的方法,因为现有的库和C++ new
/ delete
可以更容易用过的.