mirror of
				https://github.com/RetroDECK/Duckstation.git
				synced 2025-04-10 19:15:14 +00:00 
			
		
		
		
	
		
			
	
	
		
			52 lines
		
	
	
		
			1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/* Alloc.h -- Memory allocation functions
							 | 
						||
| 
								 | 
							
								2018-02-19 : Igor Pavlov : Public domain */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef __COMMON_ALLOC_H
							 | 
						||
| 
								 | 
							
								#define __COMMON_ALLOC_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "7zTypes.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								EXTERN_C_BEGIN
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void *MyAlloc(size_t size);
							 | 
						||
| 
								 | 
							
								void MyFree(void *address);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef _WIN32
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void SetLargePageSize();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void *MidAlloc(size_t size);
							 | 
						||
| 
								 | 
							
								void MidFree(void *address);
							 | 
						||
| 
								 | 
							
								void *BigAlloc(size_t size);
							 | 
						||
| 
								 | 
							
								void BigFree(void *address);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MidAlloc(size) MyAlloc(size)
							 | 
						||
| 
								 | 
							
								#define MidFree(address) MyFree(address)
							 | 
						||
| 
								 | 
							
								#define BigAlloc(size) MyAlloc(size)
							 | 
						||
| 
								 | 
							
								#define BigFree(address) MyFree(address)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								extern const ISzAlloc g_Alloc;
							 | 
						||
| 
								 | 
							
								extern const ISzAlloc g_BigAlloc;
							 | 
						||
| 
								 | 
							
								extern const ISzAlloc g_MidAlloc;
							 | 
						||
| 
								 | 
							
								extern const ISzAlloc g_AlignedAlloc;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  ISzAlloc vt;
							 | 
						||
| 
								 | 
							
								  ISzAllocPtr baseAlloc;
							 | 
						||
| 
								 | 
							
								  unsigned numAlignBits; /* ((1 << numAlignBits) >= sizeof(void *)) */
							 | 
						||
| 
								 | 
							
								  size_t offset;         /* (offset == (k * sizeof(void *)) && offset < (1 << numAlignBits) */
							 | 
						||
| 
								 | 
							
								} CAlignOffsetAlloc;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void AlignOffsetAlloc_CreateVTable(CAlignOffsetAlloc *p);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								EXTERN_C_END
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 |