Zycore
1.5.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
Memory.h
Go to the documentation of this file.
1
/***************************************************************************************************
2
3
Zyan Core Library (Zycore-C)
4
5
Original Author : Florian Bernd
6
7
* Permission is hereby granted, free of charge, to any person obtaining a copy
8
* of this software and associated documentation files (the "Software"), to deal
9
* in the Software without restriction, including without limitation the rights
10
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
* copies of the Software, and to permit persons to whom the Software is
12
* furnished to do so, subject to the following conditions:
13
*
14
* The above copyright notice and this permission notice shall be included in all
15
* copies or substantial portions of the Software.
16
*
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
* SOFTWARE.
24
25
***************************************************************************************************/
26
31
32
#ifndef ZYCORE_API_MEMORY_H
33
#define ZYCORE_API_MEMORY_H
34
35
#include <
Zycore/Defines.h
>
36
#include <
Zycore/Status.h
>
37
#include <
Zycore/Types.h
>
38
39
#ifndef ZYAN_NO_LIBC
40
41
#if defined(ZYAN_WINDOWS)
42
# include <windows.h>
43
#elif defined(ZYAN_POSIX)
44
# include <sys/mman.h>
45
#else
46
# error "Unsupported platform detected"
47
#endif
48
49
/* ============================================================================================== */
50
/* Enums and types */
51
/* ============================================================================================== */
52
56
typedef
enum
ZyanMemoryPageProtection_
57
{
58
#if defined(ZYAN_WINDOWS)
59
60
ZYAN_PAGE_READONLY = PAGE_READONLY,
61
ZYAN_PAGE_READWRITE = PAGE_READWRITE,
62
ZYAN_PAGE_EXECUTE = PAGE_EXECUTE,
63
ZYAN_PAGE_EXECUTE_READ = PAGE_EXECUTE_READ,
64
ZYAN_PAGE_EXECUTE_READWRITE = PAGE_EXECUTE_READWRITE
65
66
#elif defined(ZYAN_POSIX)
67
68
ZYAN_PAGE_READONLY = PROT_READ,
69
ZYAN_PAGE_READWRITE = PROT_READ | PROT_WRITE,
70
ZYAN_PAGE_EXECUTE = PROT_EXEC,
71
ZYAN_PAGE_EXECUTE_READ = PROT_EXEC | PROT_READ,
72
ZYAN_PAGE_EXECUTE_READWRITE = PROT_EXEC | PROT_READ | PROT_WRITE
73
74
#endif
75
}
ZyanMemoryPageProtection
;
76
77
/* ============================================================================================== */
78
/* Exported functions */
79
/* ============================================================================================== */
80
81
/* ---------------------------------------------------------------------------------------------- */
82
/* General */
83
/* ---------------------------------------------------------------------------------------------- */
84
90
ZYCORE_EXPORT
ZyanU32
ZyanMemoryGetSystemPageSize
(
void
);
91
103
ZYCORE_EXPORT
ZyanU32
ZyanMemoryGetSystemAllocationGranularity
(
void
);
104
105
/* ---------------------------------------------------------------------------------------------- */
106
/* Memory management */
107
/* ---------------------------------------------------------------------------------------------- */
108
118
ZYCORE_EXPORT
ZyanStatus
ZyanMemoryVirtualProtect
(
void
* address, ZyanUSize size,
119
ZyanMemoryPageProtection
protection);
120
129
ZYCORE_EXPORT
ZyanStatus
ZyanMemoryVirtualFree
(
void
* address, ZyanUSize size);
130
131
/* ---------------------------------------------------------------------------------------------- */
132
133
/* ============================================================================================== */
134
135
#endif
/* ZYAN_NO_LIBC */
136
137
#endif
/* ZYCORE_API_MEMORY_H */
Defines.h
ZYCORE_EXPORT
#define ZYCORE_EXPORT
Definition
Defines.h:235
ZyanMemoryVirtualFree
ZYCORE_EXPORT ZyanStatus ZyanMemoryVirtualFree(void *address, ZyanUSize size)
ZyanMemoryGetSystemAllocationGranularity
ZYCORE_EXPORT ZyanU32 ZyanMemoryGetSystemAllocationGranularity(void)
ZyanMemoryVirtualProtect
ZYCORE_EXPORT ZyanStatus ZyanMemoryVirtualProtect(void *address, ZyanUSize size, ZyanMemoryPageProtection protection)
ZyanMemoryPageProtection_
ZyanMemoryPageProtection_
Definition
Memory.h:57
ZyanMemoryGetSystemPageSize
ZYCORE_EXPORT ZyanU32 ZyanMemoryGetSystemPageSize(void)
ZyanMemoryPageProtection
enum ZyanMemoryPageProtection_ ZyanMemoryPageProtection
Status.h
ZyanStatus
ZyanU32 ZyanStatus
Definition
Status.h:48
Types.h
include
Zycore
API
Memory.h
Generated by
1.17.0