嵌入式编程中的zalloc是什么?

2024-02-25

我正在研究对 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

Since os_zalloc是一个宏,定义在 mem.h 中给出,更好的问题是关于什么pvPortZalloc does.

给定函数名称pvPortMalloc, vPortFree and pvPortZalloc看起来正在使用的操作系统是 FreeRTOS(或其商业许可的等效 OpenRTOS),该操作系统已记录在案 - 尽管没有具体说明pvPortZalloc,但如果不简单的话那就奇怪了分配和零初始化- 例如,这就是它的意思here http://w1.fi/wpa_supplicant/devel/os_8h.html#aa3941c5693466d194ef568dfe2f299e6。这些函数是 FreeRTOS 目标移植层的一部分,通常不会由应用程序级别调用,但我想这里宏包装器用于访问应用程序用户的移植层代码,而不是编写两次。

在 RTOS 内核中,需要 RTOS 感知的动态内存分配函数来确保线程安全,尽管某些标准库实现包括使用 RTOS 互斥调用实现的线程安全存根,这是自现有库和 C++ 以来更好的方法new/delete可以更方便地使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式编程中的zalloc是什么? 的相关文章