;;;; Begin Copyright Notice
;
; Copyright 2015-2018, Intel Corporation
;
; Redistribution and use in source and binary forms, with or without
; modification, are permitted provided that the following conditions
; are met:
;
; * Redistributions of source code must retain the above copyright
; notice, this list of conditions and the following disclaimer.
;
; * Redistributions in binary form must reproduce the above copyright
; notice, this list of conditions and the following disclaimer in
; the documentation and/or other materials provided with the
; distribution.
;
; * Neither the name of the copyright holder nor the names of its
; contributors may be used to endorse or promote products derived
; from this software without specific prior written permission.
;
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;
;;;; End Copyright Notice
;
; XXX - libpmem exports mmap/munmap/msync/mprotect functions
;
; This is a _temporary_ solution to make those function available for all
; the other PMDK libraries and to have only one instance of a file mapping
; list (owned by libpmem). Otherwise, each library would have its own
; instance of the file mapping list, resulting in libpmem being not able
; to find a file handle associated with the mapping address passed to
; pmem_msync(), pmem_memcpy(), etc. causing those functions to fail.
;
; The proposed target solution would include:
; - implementation of pmem_mmap, pmem_unmap, pmem_msync and
; pmem_mprotect functions in libpmem (pmem_unmap and pmem_msync are
; already there);
; - making sure that all the PMDK libraries never call mmap, munmap,
; msync and mprotect directly, but only through their libpmem counterparts;
; - new pmem_mmap() function must provide similar functionality to
; mmap(), i.e. it must take 'offset' argument, but should not take
; file descriptor argument. Perhaps it could be an opaque handle
; to the file, that is internally casted to a file descriptor
; or a HANDLE, depending on the OS.
;
LIBRARY libpmem
VERSION 1.0
EXPORTS
pmem_map_fileU
pmem_map_fileW
pmem_unmap
pmem_is_pmem
pmem_persist
pmem_msync
pmem_has_auto_flush
pmem_deep_persist
pmem_flush
pmem_deep_flush
pmem_deep_drain
pmem_drain
pmem_has_hw_drain
pmem_memmove_persist
pmem_memcpy_persist
pmem_memset_persist
pmem_memmove_nodrain
pmem_memcpy_nodrain
pmem_memset_nodrain
pmem_memmove
pmem_memcpy
pmem_memset
pmem_check_versionU
pmem_check_versionW
pmem_errormsgU
pmem_errormsgW
mmap
munmap
msync
mprotect
DllMain