Recreate base64 project
This commit is contained in:
		
							
								
								
									
										36
									
								
								wapp/core/os/mem/posix/mem_os_posix.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								wapp/core/os/mem/posix/mem_os_posix.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
// vim:fileencoding=utf-8:foldmethod=marker
 | 
			
		||||
 | 
			
		||||
#include "../../../../common/aliases/aliases.h"
 | 
			
		||||
#include "../../../../common/platform/platform.h"
 | 
			
		||||
 | 
			
		||||
#ifdef WAPP_PLATFORM_POSIX
 | 
			
		||||
 | 
			
		||||
#include "mem_os_posix.h"
 | 
			
		||||
#include "../mem_os_ops.h"
 | 
			
		||||
#include <sys/mman.h>
 | 
			
		||||
 | 
			
		||||
internal const i32 access_types[] = {
 | 
			
		||||
    [WAPP_MEM_ACCESS_NONE]            = PROT_NONE,
 | 
			
		||||
    [WAPP_MEM_ACCESS_READ_ONLY]       = PROT_READ,
 | 
			
		||||
    [WAPP_MEM_ACCESS_EXEC_ONLY]       = PROT_EXEC,
 | 
			
		||||
    [WAPP_MEM_ACCESS_READ_WRITE]      = PROT_READ | PROT_WRITE,
 | 
			
		||||
    [WAPP_MEM_ACCESS_READ_EXEC]       = PROT_READ | PROT_EXEC,
 | 
			
		||||
    [WAPP_MEM_ACCESS_READ_WRITE_EXEC] = PROT_READ | PROT_WRITE | PROT_EXEC,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void *mem_util_allocate(void *addr, u64 size, MemAccess access, MemAllocFlags flags, MemInitType type) {
 | 
			
		||||
  (void)type;
 | 
			
		||||
  i32 alloc_flags = flags | MAP_ANON | MAP_PRIVATE;
 | 
			
		||||
 | 
			
		||||
#if defined(WAPP_PLATFORM_LINUX) || defined(WAPP_PLATFORM_GNU) || defined(WAPP_PLATFORM_NET_BSD)
 | 
			
		||||
  alloc_flags |= MAP_NORESERVE;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  return mmap(addr, size, access_types[access], alloc_flags, -1, 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void mem_util_free(void *ptr, u64 size) {
 | 
			
		||||
  munmap(ptr, size);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // !WAPP_PLATFORM_POSIX
 | 
			
		||||
							
								
								
									
										35
									
								
								wapp/core/os/mem/posix/mem_os_posix.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								wapp/core/os/mem/posix/mem_os_posix.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
// vim:fileencoding=utf-8:foldmethod=marker
 | 
			
		||||
 | 
			
		||||
#ifndef MEM_OS_POSIX_H
 | 
			
		||||
#define MEM_OS_POSIX_H
 | 
			
		||||
 | 
			
		||||
#include "../../../../common/platform/platform.h"
 | 
			
		||||
 | 
			
		||||
#ifdef WAPP_PLATFORM_CPP
 | 
			
		||||
BEGIN_C_LINKAGE
 | 
			
		||||
#endif // !WAPP_PLATFORM_CPP
 | 
			
		||||
 | 
			
		||||
#ifdef WAPP_PLATFORM_POSIX
 | 
			
		||||
 | 
			
		||||
#include <sys/mman.h>
 | 
			
		||||
 | 
			
		||||
typedef enum mem_alloc_flags {
 | 
			
		||||
#if defined(WAPP_PLATFORM_LINUX) || defined(WAPP_PLATFORM_GNU)
 | 
			
		||||
  WAPP_MEM_ALLOC_RESERVE = 0,
 | 
			
		||||
  WAPP_MEM_ALLOC_COMMIT  = MAP_POPULATE,
 | 
			
		||||
#elif defined(WAPP_PLATFORM_FREE_BSD)
 | 
			
		||||
  WAPP_MEM_ALLOC_RESERVE = 0,
 | 
			
		||||
  WAPP_MEM_ALLOC_COMMIT  = MAP_PREFAULT_READ,
 | 
			
		||||
#elif defined(WAPP_PLATFORM_BSD) || defined(WAPP_PLATFORM_UNIX) || defined(WAPP_PLATFORM_APPLE)
 | 
			
		||||
  WAPP_MEM_ALLOC_RESERVE = 0,
 | 
			
		||||
  WAPP_MEM_ALLOC_COMMIT  = 0,
 | 
			
		||||
#endif
 | 
			
		||||
} MemAllocFlags;
 | 
			
		||||
 | 
			
		||||
#endif // !WAPP_PLATFORM_POSIX
 | 
			
		||||
 | 
			
		||||
#ifdef WAPP_PLATFORM_CPP
 | 
			
		||||
END_C_LINKAGE
 | 
			
		||||
#endif // !WAPP_PLATFORM_CPP
 | 
			
		||||
 | 
			
		||||
#endif // !MEM_OS_POSIX_H
 | 
			
		||||
		Reference in New Issue
	
	Block a user