Measure system
Dependencies: EthernetNetIf mbed RF12B
AvailableMemory/AvailableMemory.cpp@3:799d8c61fb03, 2011-05-17 (annotated)
- Committer:
- benecsj
- Date:
- Tue May 17 16:49:23 2011 +0000
- Revision:
- 3:799d8c61fb03
- Parent:
- 1:b26ab2467b1a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
benecsj | 1:b26ab2467b1a | 1 | #include "AvailableMemory.h" |
benecsj | 1:b26ab2467b1a | 2 | #include <stdlib.h> |
benecsj | 1:b26ab2467b1a | 3 | |
benecsj | 1:b26ab2467b1a | 4 | namespace segundo { |
benecsj | 1:b26ab2467b1a | 5 | namespace Utilities { |
benecsj | 1:b26ab2467b1a | 6 | |
benecsj | 1:b26ab2467b1a | 7 | int AvailableMemory(int resolution, int maximum, bool disableInterrupts) { |
benecsj | 1:b26ab2467b1a | 8 | |
benecsj | 1:b26ab2467b1a | 9 | if (resolution < 1) resolution = 1; |
benecsj | 1:b26ab2467b1a | 10 | if (maximum < 0) maximum = 0; |
benecsj | 1:b26ab2467b1a | 11 | |
benecsj | 1:b26ab2467b1a | 12 | int low = 0; |
benecsj | 1:b26ab2467b1a | 13 | int high = maximum + 1; |
benecsj | 1:b26ab2467b1a | 14 | |
benecsj | 1:b26ab2467b1a | 15 | if (disableInterrupts) __disable_irq(); |
benecsj | 1:b26ab2467b1a | 16 | |
benecsj | 1:b26ab2467b1a | 17 | while (high - low > resolution) { |
benecsj | 1:b26ab2467b1a | 18 | int mid = (low + high) / 2; |
benecsj | 1:b26ab2467b1a | 19 | void* p = malloc(mid); |
benecsj | 1:b26ab2467b1a | 20 | if (p == NULL) { |
benecsj | 1:b26ab2467b1a | 21 | high = mid; |
benecsj | 1:b26ab2467b1a | 22 | } else { |
benecsj | 1:b26ab2467b1a | 23 | free(p); |
benecsj | 1:b26ab2467b1a | 24 | low = mid; |
benecsj | 1:b26ab2467b1a | 25 | } |
benecsj | 1:b26ab2467b1a | 26 | } |
benecsj | 1:b26ab2467b1a | 27 | |
benecsj | 1:b26ab2467b1a | 28 | if (disableInterrupts) __enable_irq(); |
benecsj | 1:b26ab2467b1a | 29 | |
benecsj | 1:b26ab2467b1a | 30 | return low; |
benecsj | 1:b26ab2467b1a | 31 | } |
benecsj | 1:b26ab2467b1a | 32 | |
benecsj | 1:b26ab2467b1a | 33 | } // namespace Utilities |
benecsj | 1:b26ab2467b1a | 34 | } // namespace segundo |