123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- /*++
- Copyright (c) 2014 Minoca Corp.
- This file is licensed under the terms of the GNU Lesser General Public
- License version 3. Alternative licensing terms are available. Contact
- info@minocacorp.com for details.
- Module Name:
- mman.h
- Abstract:
- This header contains definitions for memory management operations.
- Author:
- Chris Stevens 6-Mar-2014
- --*/
- #ifndef _SYS_MMAN_H
- #define _SYS_MMAN_H
- //
- // ------------------------------------------------------------------- Includes
- //
- #include <sys/types.h>
- //
- // ---------------------------------------------------------------- Definitions
- //
- #ifdef __cplusplus
- extern "C" {
- #endif
- //
- // Define protection options for memory mapped files and shared memory objects.
- //
- //
- // Map the file or object so that it cannot be accessed.
- //
- #define PROT_NONE 0x0000
- //
- // Map the file or object so that data can be read from it.
- //
- #define PROT_READ 0x0001
- //
- // Map the file or object so that data can be written to it.
- //
- #define PROT_WRITE 0x0002
- //
- // Map the file or object so that it can be executed.
- //
- #define PROT_EXEC 0x0004
- //
- // Define mapping flags for memory mapped files and shared memory objects.
- //
- //
- // Map the file or object so that changes modify the underlying object.
- //
- #define MAP_SHARED 0x0001
- //
- // Map the file or object so that changes are only visible to the modifying
- // process.
- //
- #define MAP_PRIVATE 0x0002
- //
- // Map the file or object at the supplied virtual address.
- //
- #define MAP_FIXED 0x0004
- //
- // Create a mapping that is not backed by a file or object. The supplied file
- // descriptor and offset are ignored.
- //
- #define MAP_ANONYMOUS 0x0008
- #define MAP_ANON MAP_ANONYMOUS
- //
- // Define flags use for memory synchronization.
- //
- //
- // Perform the synchronization with asynchronous writes.
- //
- #define MS_ASYNC 0x0001
- //
- // Perform the synchronization with synchronous writes.
- //
- #define MS_SYNC 0x0002
- //
- // Set this flag to invalidate all cached copies of mapped data that are
- // inconsistent with the permanent storage locations such that subsequent
- // references obtain data consistent with permanent storage sometime between
- // the call to msync and its first subsequent memory reference.
- //
- // In practice this flag does nothing.
- //
- #define MS_INVALIDATE 0x0004
- //
- // Define the value used to indicate a failed mapping.
- //
- #define MAP_FAILED ((void *)-1)
- //
- // ------------------------------------------------------ Data Type Definitions
- //
- //
- // -------------------------------------------------------------------- Globals
- //
- //
- // -------------------------------------------------------- Function Prototypes
- //
- LIBC_API
- void *
- mmap (
- void *Address,
- size_t Length,
- int ProtectionFlags,
- int MapFlags,
- int FileDescriptor,
- off_t Offset
- );
- /*++
- Routine Description:
- This routine maps the given file or memory object into the current process'
- address space.
- Arguments:
- Address - Supplies an optional suggested virtual address for the mapping.
- If MAP_FIXED is supplied then the routine attempts to create the
- mapping at the exact address supplied.
- Length - Supplies the length, in bytes, of the region to map.
- ProtectionFlags - Supplies a set of flags ORed together. See PROT_* for
- definitions.
- MapFlags - Supplies a set of flags ORed together. See MAP_* for definitions.
- FileDescriptor - Supplies the file descriptor of the file or memory object
- to map.
- Offset - Supplies the offset, in bytes, within the file or memory object
- where the mapping should begin.
- Return Value:
- Returns the address where the mapping was made on sucess.
- MAP_FAILED on failure. The errno variable will be set to indicate the error.
- --*/
- LIBC_API
- int
- munmap (
- void *Address,
- size_t Length
- );
- /*++
- Routine Description:
- This routine removes any mappings in the the current process' address space
- that are within the specified region.
- Arguments:
- Address - Supplies the start of the address region to unmap.
- Length - Supplies the size, in bytes, of the region to unmap.
- Return Value:
- Returns 0 on success.
- -1 on failure. The errno variable will be set to indicate the error.
- --*/
- LIBC_API
- int
- mprotect (
- const void *Address,
- size_t Length,
- int ProtectionFlags
- );
- /*++
- Routine Description:
- This routine changes the memory protection attributes for the given region
- of memory.
- Arguments:
- Address - Supplies the starting address (inclusive) to change the memory
- protection for. This must be aligned to a page boundary.
- Length - Supplies the length, in bytes, of the region to change attributes
- for.
- ProtectionFlags - Supplies a bitfield of flags describing the desired
- attributes of the region. See PROT_* definitions.
- Return Value:
- 0 on success.
- -1 on error, and errno is set to contain more information.
- --*/
- LIBC_API
- int
- msync (
- const void *Address,
- size_t Length,
- int Flags
- );
- /*++
- Routine Description:
- This routine synchronizes a region of the current process' memory address
- space with the permanent storage that backs it. If there is no storage
- backing the supplied region, than this routine has no effect.
- Arguments:
- Address - Supplies the start of the address region to synchronize.
- Length - Supplies the size, in bytes, of the region to synchronize.
- Flags - Supplies a set of flags ORed together. See MS_* for definitions.
- Return Value:
- Returns 0 on success.
- -1 on failure. The errno variable will be set to indicate the error.
- --*/
- LIBC_API
- int
- shm_open (
- const char *Name,
- int OpenFlags,
- mode_t Mode
- );
- /*++
- Routine Description:
- This routine opens a shared memory object and connects it to a file
- descriptor.
- Arguments:
- Name - Supplies a pointer to a null terminated string containing the name
- of the shared memory objecet.
- OpenFlags - Supplies a set of flags ORed together. See O_* definitions.
- Mode - Supplies the permissions mask to set if the shared memory object is
- to be created by this call.
- Return Value:
- Returns a file descriptor on success.
- -1 on failure. The errno variable will be set to indicate the error.
- --*/
- LIBC_API
- int
- shm_unlink (
- const char *Name
- );
- /*++
- Routine Description:
- This routine removes the shared memory object as identified by the given
- name from the namespace of shared memory objects.
- Arguments:
- Name - Supplies a pointer to the name of the shared memory object to remove.
- Return Value:
- Returns 0 on success.
- -1 on failure. The errno variable will be set to indicate the error.
- --*/
- #ifdef __cplusplus
- }
- #endif
- #endif
|