virtmem
virtual memory library for Arduino
virtmem::SDVAllocP< Properties > Class Template Reference

Virtual memory allocator class that uses SD card as virtual pool. More...

#include <sd_alloc.h>

Inheritance diagram for virtmem::SDVAllocP< Properties >:
virtmem::VAlloc< Properties, SDVAllocP< Properties > > virtmem::BaseVAlloc

Public Member Functions

 SDVAllocP (VPtrSize ps=VIRTMEM_DEFAULT_POOLSIZE)
 
void removeTempFile (void)
 
- Public Member Functions inherited from virtmem::VAlloc< Properties, SDVAllocP< Properties > >
VPtr< T, SDVAllocP< Properties > > alloc (VPtrSize size=sizeof(T))
 Allocates memory from the linked virtual memory allocator. More...
 
void free (VPtr< T, SDVAllocP< Properties > > &p)
 Frees a block of virtual memory. More...
 
VPtr< T, SDVAllocP< Properties > > newClass (VPtrSize size=sizeof(T))
 Allocates memory and constructs data type. More...
 
void deleteClass (VPtr< T, SDVAllocP< Properties > > &p)
 Destructs data type and frees memory. More...
 
VPtr< T, SDVAllocP< Properties > > newArray (VPtrSize elements)
 Allocates and constructs an array of objects. More...
 
void deleteArray (VPtr< T, SDVAllocP< Properties > > &p)
 Destructs and frees an array of objects. More...
 
- Public Member Functions inherited from virtmem::BaseVAlloc
void start (void)
 Starts the allocator. More...
 
void stop (void)
 Deinitializes the allocator. More...
 
void setPoolSize (VPtrSize ps)
 Sets the total size of the memory pool. More...
 
VPtrNum allocRaw (VPtrSize size)
 Allocates a piece of raw (virtual) memory. More...
 
void freeRaw (VPtrNum ptr)
 Frees a memory block for re-usage. More...
 
void * read (VPtrNum p, VPtrSize size)
 Reads a raw block of (virtual) memory. More...
 
void write (VPtrNum p, const void *d, VPtrSize size)
 Writes a piece of raw data to (virtual) memory. More...
 
void flush (void)
 Synchronizes all big memory pages. More...
 
void clearPages (void)
 Synchronizes and clears all big memory pages. More...
 
uint8_t getFreeBigPages (void) const
 
uint8_t getUnlockedSmallPages (void) const
 Returns amount of small pages which are not locked.
 
uint8_t getUnlockedMediumPages (void) const
 Returns amount of medium pages which are not locked.
 
uint8_t getUnlockedBigPages (void) const
 Returns amount of big pages which are not locked.
 
uint8_t getSmallPageCount (void) const
 Returns total amount of small pages.
 
uint8_t getMediumPageCount (void) const
 Returns total amount of medium pages.
 
uint8_t getBigPageCount (void) const
 Returns total amount of big pages.
 
VirtPageSize getSmallPageSize (void) const
 Returns the size of a small page.
 
VirtPageSize getMediumPageSize (void) const
 Returns the size of a medium page.
 
VirtPageSize getBigPageSize (void) const
 Returns the size of a big page.
 
VPtrSize getPoolSize (void) const
 Returns the size the memory pool. More...
 
VPtrSize getMemUsed (void) const
 Returns total memory used.
 
VPtrSize getMaxMemUsed (void) const
 Returns the maximum memory used so far.
 
uint32_t getBigPageReads (void) const
 Returns the times big pages were read (swapped).
 
uint32_t getBigPageWrites (void) const
 Returns the times big pages written (synchronized).
 
uint32_t getBytesRead (void) const
 Returns the amount of bytes read as a result of page swaps.
 
uint32_t getBytesWritten (void) const
 Returns the amount of bytes written as a results of page swaps.
 
void resetStats (void)
 Reset all statistics. Called by start()
 

Additional Inherited Members

- Public Types inherited from virtmem::VAlloc< Properties, SDVAllocP< Properties > >
using VPtr = virtmem::VPtr< T, SDVAllocP< Properties > >
 
- Static Public Member Functions inherited from virtmem::VAlloc< Properties, SDVAllocP< Properties > >
static VAllocgetInstance (void)
 Returns a pointer to the instance of the class. More...
 
- Protected Member Functions inherited from virtmem::BaseVAlloc
void writeZeros (VPtrNum start, VPtrSize n)
 Writes zeros to raw virtual memory. Can be used to initialize the memory pool. More...
 

Detailed Description

template<typename Properties = DefaultAllocProperties>
class virtmem::SDVAllocP< Properties >

Virtual memory allocator class that uses SD card as virtual pool.

This class uses a file on an FAT formatted SD card as virtual memory pool. The SD FAT library is used to interface with the SD card and therefore has to be installed.

When the allocator is initialized (i.e. by calling start()) it will create a file called 'ramfile.vm' in the root directory. Existing files will be reused and resized if necessary.

Template Parameters
PropertiesAllocator properties, see DefaultAllocProperties
Note
The SD FAT library needs to be initialized (i.e. by calling SdFat::begin()) before initializing this allocator.
See also
Using virtual memory (tutorial), SDVAlloc
Examples:
alloc_properties.ino, locking.ino, and sd_simple.ino.

Constructor & Destructor Documentation

template<typename Properties = DefaultAllocProperties>
virtmem::SDVAllocP< Properties >::SDVAllocP ( VPtrSize  ps = VIRTMEM_DEFAULT_POOLSIZE)
inline

Constructs (but not initializes) the SD FAT allocator.

Parameters
psThe size of the virtual memory pool
See also
setPoolSize

Member Function Documentation

template<typename Properties = DefaultAllocProperties>
void virtmem::SDVAllocP< Properties >::removeTempFile ( void  )
inline

Removes the temporary file used as virtual memory pool.

Note
Only call this when the allocator is not initialized!

The documentation for this class was generated from the following file: