| /************************************************************************ |
| * |
| * rw_alloc.h - definitions of rw_alloc and rw_free |
| * |
| * $Id: rw_alloc.h |
| * |
| *************************************************************************** |
| * |
| * Copyright 2006 The Apache Software Foundation or its licensors, |
| * as applicable. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| **************************************************************************/ |
| |
| #ifndef RW_ALLOC_H_INCLUDED |
| #define RW_ALLOC_H_INCLUDED |
| |
| |
| #include <testdefs.h> // for test config macros |
| |
| enum { |
| RW_PROT_NONE = 0, |
| RW_PROT_READ = 1 << 0, |
| RW_PROT_WRITE = 1 << 1, |
| RW_PROT_RDWR = RW_PROT_READ | RW_PROT_WRITE, |
| RW_PROT_BELOW = 1 << 3 |
| }; |
| |
| // if flags == -1 memory will be allocated by malloc(); |
| // if flags != -1 memory will be allocated by system call and |
| // additional guard page with PAGE_NOACCESS protection will be allocated |
| // if RW_PROT_BELOW & flags != 0 then guard page will be located right |
| // before the user data, otherwise - right after the user data |
| // if RWSTD_ALLOC_FLAGS environment variable is defined and != 0 |
| // and flags == -1, then rw_alloc will use value of RWSTD_ALLOC_FLAGS |
| // instead of flags variable |
| _TEST_EXPORT void* |
| rw_alloc(_RWSTD_SIZE_T, int /*flags*/ = -1); |
| |
| // free the memory block, allocated by rw_alloc() |
| _TEST_EXPORT void |
| rw_free(void*); |
| |
| #endif // RW_ALLOC_H_INCLUDED |