]> git.zerfleddert.de Git - proxmark3-svn/blame - armsrc/BigBuf.c
Refactoring of BigBuf handling in order to prepare for more efficient memory allocati...
[proxmark3-svn] / armsrc / BigBuf.c
CommitLineData
117d9ec2 1//-----------------------------------------------------------------------------
2// Jonathan Westhues, Aug 2005
3// Gerhard de Koning Gans, April 2008, May 2011
4//
5// This code is licensed to you under the terms of the GNU GPL, version 2 or,
6// at your option, any later version. See the LICENSE.txt file for the text of
7// the license.
8//-----------------------------------------------------------------------------
9// BigBuf and functions to allocate/free parts of it.
10//-----------------------------------------------------------------------------
11
12#include <stdint.h>
13#include "proxmark3.h"
14#include "apps.h"
15#include "string.h"
16
17// The large multi-purpose buffer, typically used to hold A/D samples or traces,
18// may be processed in some way. Also used to hold various smaller buffers.
19static uint8_t BigBuf[BIGBUF_SIZE];
20
21// High memory mark
22static uint16_t BigBuf_hi = BIGBUF_SIZE;
23
24// trace related global variables. Change to function calls?
25//uint8_t *trace = BigBuf;
26uint16_t traceLen;
27
28
29// get the address of BigBuf
30uint8_t *BigBuf_get_addr(void)
31{
32 return BigBuf;
33}
34
35
36// clear ALL of BigBuf
37void BigBuf_Clear(void)
38{
39 memset(BigBuf,0,BIGBUF_SIZE);
40 Dbprintf("Buffer cleared (%i bytes)",BIGBUF_SIZE);
41}
42
43
44// allocate a chunk of memory from BigBuf. We allocate high memory first. Low memory
45// is always for traces/samples
46uint8_t *BigBuf_malloc(uint16_t chunksize)
47{
48 if (BigBuf_hi - chunksize < 0) {
49 return NULL; // no memory left
50 } else {
51 BigBuf_hi -= chunksize; // aligned to 4 Byte boundary
52 return BigBuf + BigBuf_hi;
53 }
54}
55
56
57// free ALL allocated chunks. The whole BigBuf is available for traces again.
58void BigBuf_free(void)
59{
60 BigBuf_hi = BIGBUF_SIZE;
61}
62
63
64// return the maximum trace length (i.e. the unallocated size of BigBuf)
65uint16_t BigBuf_max_trace_len(void)
66{
67 return BigBuf_hi;
68}
Impressum, Datenschutz