MMAP (Memory Map) Routines

Overview

// typedefs

typedef struct apr_mmap_t apr_mmap_t;

// structs

struct apr_mmap_t;

// global functions

apr_status_t
apr_mmap_create(
    apr_mmap_t** newmmap,
    apr_file_t* file,
    apr_off_t offset,
    apr_size_t size,
    apr_int32_t flag,
    apr_pool_t* cntxt
);

apr_status_t
apr_mmap_dup(
    apr_mmap_t** new_mmap,
    apr_mmap_t* old_mmap,
    apr_pool_t* p
);

apr_status_t
apr_mmap_delete(apr_mmap_t* mm);

apr_status_t
apr_mmap_offset(
    void** addr,
    apr_mmap_t* mm,
    apr_off_t offset
);

// macros

#define APR_MMAP_CANDIDATE(filelength)
#define APR_MMAP_LIMIT
#define APR_MMAP_READ
#define APR_MMAP_THRESHOLD
#define APR_MMAP_WRITE

Detailed Documentation

Typedefs

typedef struct apr_mmap_t apr_mmap_t

See also:

apr_mmap_t

Global Functions

apr_status_t
apr_mmap_create(
    apr_mmap_t** newmmap,
    apr_file_t* file,
    apr_off_t offset,
    apr_size_t size,
    apr_int32_t flag,
    apr_pool_t* cntxt
)

Create a new mmap’ed file out of an existing APR file.

Parameters:

newmmap

The newly created mmap’ed file.

file

The file to turn into an mmap.

offset

The offset into the file to start the data pointer at.

size

The size of the file

flag

bit-wise or of:

APR_MMAP_READ       MMap opened for reading
APR_MMAP_WRITE      MMap opened for writing

cntxt

The pool to use when creating the mmap.

apr_status_t
apr_mmap_dup(
    apr_mmap_t** new_mmap,
    apr_mmap_t* old_mmap,
    apr_pool_t* p
)

Duplicate the specified MMAP.

Parameters:

new_mmap

The structure to duplicate into.

old_mmap

The mmap to duplicate.

p

The pool to use for new_mmap.

apr_status_t
apr_mmap_delete(apr_mmap_t* mm)

Remove a mmap’ed.

Parameters:

mm

The mmap’ed file.

apr_status_t
apr_mmap_offset(
    void** addr,
    apr_mmap_t* mm,
    apr_off_t offset
)

Move the pointer into the mmap’ed file to the specified offset.

Parameters:

addr

The pointer to the offset specified.

mm

The mmap’ed file.

offset

The offset to move to.

Macros

#define APR_MMAP_CANDIDATE(filelength)

Can this file be MMaped

#define APR_MMAP_LIMIT

Maximum size of MMap region

#define APR_MMAP_READ

MMap opened for reading

#define APR_MMAP_THRESHOLD

Files have to be at least this big before they’re mmap()d. This is to deal with systems where the expense of doing an mmap() and an munmap() outweighs the benefit for small files. It shouldn’t be set lower than 1.

#define APR_MMAP_WRITE

MMap opened for writing