⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 malloc.c

📁 zilog的实时操作系统RZK,可以移植到多种处理器上
💻 C
字号:

#include "ZSysgen.h"
#include "ZTypes.h"
#include "ZThread.h"
#include "ZRegion.h"
#include "ZInterrupt.h"


extern RZK_REGIONHANDLE_t hGlobalRegion ;
extern UINT8 *_g_region_buf ;
extern UINT8 *_g_heap_start ;
extern UINT8 *_g_heap_end ;
extern UINT8 _g_malloc_inited ;

extern void _get_heap_values( void ) ;

UINT8 init_malloc( void )
{
//	UINTRMASK intr_mask ;

	if( _g_malloc_inited == 1 )
		return 0 ;

	// get the heap start and end values
	_get_heap_values() ;

	// create a region..

	hGlobalRegion = RZKCreateRegion( ( CADDR_t) "MALLOC", _g_heap_start, ( _g_heap_end - _g_heap_start - 100 ), 16, 1, RECV_ORDER_FIFO ) ;
	if( hGlobalRegion == NULL )
		return 0 ;

//	intr_mask = RZKDisableInterrupts() ;
	_g_malloc_inited = 1 ;
//	RZKEnableInterrupts( intr_mask ) ;

	return 1 ;
}


void *malloc( COUNT_t size )
{
	void *seg ;

	if( size == 0 )
		return NULL ;

	seg = RZKAllocSegment( hGlobalRegion, size, 0 ) ;
	return seg ;
}


void free( void *seg )
{
	RZKFreeSegment( hGlobalRegion, seg ) ;
}


				


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -