finds size of largest block of heap memory

Dependents:   myBlueUSB mbed_TANK_Kinect myBlueUSB_ros myBlueUSB_localfix

Committer:
networker
Date:
Wed May 04 09:14:02 2011 +0000
Revision:
0:2b2aa11cebd7

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
networker 0:2b2aa11cebd7 1 /** @file
networker 0:2b2aa11cebd7 2 * Return the memory available for a malloc call.
networker 0:2b2aa11cebd7 3 */
networker 0:2b2aa11cebd7 4 #ifndef SEGUNDO_UTILITIES_AVAILABLEMEMORY_H
networker 0:2b2aa11cebd7 5 #define SEGUNDO_UTILITIES_AVAILABLEMEMORY_H
networker 0:2b2aa11cebd7 6
networker 0:2b2aa11cebd7 7 /**
networker 0:2b2aa11cebd7 8 * Segundo Equipo
networker 0:2b2aa11cebd7 9 */
networker 0:2b2aa11cebd7 10 namespace segundo {
networker 0:2b2aa11cebd7 11 /**
networker 0:2b2aa11cebd7 12 * A collection of utilities
networker 0:2b2aa11cebd7 13 */
networker 0:2b2aa11cebd7 14 namespace Utilities {
networker 0:2b2aa11cebd7 15
networker 0:2b2aa11cebd7 16 /** Return the memory available for a malloc call.
networker 0:2b2aa11cebd7 17 * This is done by a binary search approach
networker 0:2b2aa11cebd7 18 * calling malloc/free starting with a maximum.
networker 0:2b2aa11cebd7 19 *
networker 0:2b2aa11cebd7 20 * Example:
networker 0:2b2aa11cebd7 21 * @code
networker 0:2b2aa11cebd7 22 * #include <stdio.h>
networker 0:2b2aa11cebd7 23 * #include "AvailableMemory.h"
networker 0:2b2aa11cebd7 24 *
networker 0:2b2aa11cebd7 25 * int main() {
networker 0:2b2aa11cebd7 26 *
networker 0:2b2aa11cebd7 27 * printf("Available memory (bytes to nearest 256) : %d\n", AvailableMemory());
networker 0:2b2aa11cebd7 28 * printf("Available memory (exact bytes) : %d\n", AvailableMemory(1));
networker 0:2b2aa11cebd7 29 *
networker 0:2b2aa11cebd7 30 * }
networker 0:2b2aa11cebd7 31 * @endcode
networker 0:2b2aa11cebd7 32 * @param resolution Resolution in number of bytes,
networker 0:2b2aa11cebd7 33 * 1 will return the exact value,
networker 0:2b2aa11cebd7 34 * default will return the available memory to the nearest 256 bytes
networker 0:2b2aa11cebd7 35 * @param maximum Maximum amount of memory to check, default is 32K (0x8000)
networker 0:2b2aa11cebd7 36 * @param disableInterrupts Disable interrupts whilst checking, default is true
networker 0:2b2aa11cebd7 37 * @return Available memory in bytes accurate to within resolution
networker 0:2b2aa11cebd7 38 */
networker 0:2b2aa11cebd7 39 int AvailableMemory(int resolution = 256, int maximum = 0x8000, bool disableInterrupts = true);
networker 0:2b2aa11cebd7 40
networker 0:2b2aa11cebd7 41 } // namespace Utilities
networker 0:2b2aa11cebd7 42 } // namespace segundo
networker 0:2b2aa11cebd7 43
networker 0:2b2aa11cebd7 44 using namespace segundo::Utilities;
networker 0:2b2aa11cebd7 45
networker 0:2b2aa11cebd7 46 #endif // SEGUNDO_UTILITIES_AVAILABLEMEMORY_H