73 char* align_reserved_region(char* addr, const size_t len,
74 const size_t prefix_size,
75 const size_t prefix_align,
76 const size_t suffix_size,
77 const size_t suffix_align);
78
79 // Reserve memory, call align_reserved_region() to alignment it and return the
80 // result.
81 char* reserve_and_align(const size_t reserve_size,
82 const size_t prefix_size,
83 const size_t prefix_align,
84 const size_t suffix_size,
85 const size_t suffix_align);
86
87 protected:
88 // Create protection page at the beginning of the space.
89 void protect_noaccess_prefix(const size_t size);
90
91 public:
92 // Constructor
93 ReservedSpace(size_t size);
94 ReservedSpace(size_t size, size_t alignment, bool large,
95 char* requested_address = NULL,
96 const size_t noaccess_prefix = 0);
97 ReservedSpace(const size_t prefix_size, const size_t prefix_align,
98 const size_t suffix_size, const size_t suffix_align,
99 char* requested_address,
100 const size_t noaccess_prefix = 0);
101 ReservedSpace(size_t size, size_t alignment, bool large, bool executable);
102
103 // Accessors
104 char* base() const { return _base; }
105 size_t size() const { return _size; }
106 size_t alignment() const { return _alignment; }
107 bool special() const { return _special; }
108 bool executable() const { return _executable; }
109 size_t noaccess_prefix() const { return _noaccess_prefix; }
110 bool is_reserved() const { return _base != NULL; }
111 void release();
112
|
73 char* align_reserved_region(char* addr, const size_t len,
74 const size_t prefix_size,
75 const size_t prefix_align,
76 const size_t suffix_size,
77 const size_t suffix_align);
78
79 // Reserve memory, call align_reserved_region() to alignment it and return the
80 // result.
81 char* reserve_and_align(const size_t reserve_size,
82 const size_t prefix_size,
83 const size_t prefix_align,
84 const size_t suffix_size,
85 const size_t suffix_align);
86
87 protected:
88 // Create protection page at the beginning of the space.
89 void protect_noaccess_prefix(const size_t size);
90
91 public:
92 // Constructor
93 ReservedSpace();
94 ReservedSpace(size_t size);
95 ReservedSpace(size_t size, size_t alignment, bool large,
96 char* requested_address = NULL,
97 const size_t noaccess_prefix = 0);
98 ReservedSpace(const size_t prefix_size, const size_t prefix_align,
99 const size_t suffix_size, const size_t suffix_align,
100 char* requested_address,
101 const size_t noaccess_prefix = 0);
102 ReservedSpace(size_t size, size_t alignment, bool large, bool executable);
103
104 // Accessors
105 char* base() const { return _base; }
106 size_t size() const { return _size; }
107 size_t alignment() const { return _alignment; }
108 bool special() const { return _special; }
109 bool executable() const { return _executable; }
110 size_t noaccess_prefix() const { return _noaccess_prefix; }
111 bool is_reserved() const { return _base != NULL; }
112 void release();
113
|