| Index: emcore/trunk/tools/libemcore.py |
| — | — | @@ -820,6 +820,37 @@ |
| 821 | 821 | raise DeviceError("disk_unmount(volume=%d) failed with RC=0x%08X, errno=%d" % (volume, result.rc, self.errno()))
|
| 822 | 822 | return result.rc
|
| 823 | 823 |
|
| | 824 | + @command()
|
| | 825 | + def malloc(self, size):
|
| | 826 | + """ Allocates 'size' bytes and returns a pointer to the allocated memory """
|
| | 827 | + result = self.lib.monitorcommand(struct.pack("IIII", 52, size, 0, 0), "III", ("ptr", None, None))
|
| | 828 | + return result.ptr
|
| | 829 | +
|
| | 830 | + @command()
|
| | 831 | + def memalign(self, align, size):
|
| | 832 | + """ Allocates 'size' bytes aligned to 'align' and returns a pointer to the allocated memory """
|
| | 833 | + result = self.lib.monitorcommand(struct.pack("IIII", 53, align, size, 0), "III", ("ptr", None, None))
|
| | 834 | + return result.ptr
|
| | 835 | +
|
| | 836 | + @command()
|
| | 837 | + def realloc(self, ptr, size):
|
| | 838 | + """ The size of the memory block pointed to by 'ptr' is changed to the 'size' bytes,
|
| | 839 | + expanding or reducing the amount of memory available in the block.
|
| | 840 | + Returns a pointer to the reallocated memory.
|
| | 841 | + """
|
| | 842 | + result = self.lib.monitorcommand(struct.pack("IIII", 54, ptr, size, 0), "III", ("ptr", None, None))
|
| | 843 | + return result.ptr
|
| | 844 | +
|
| | 845 | + @command()
|
| | 846 | + def reownalloc(self, ptr, owner):
|
| | 847 | + """ Changes the owner of the memory allocation 'ptr' to the thread struct at addr 'owner' """
|
| | 848 | + return self.lib.monitorcommand(struct.pack("IIII", 55, ptr, owner, 0), "III", (None, None, None))
|
| | 849 | +
|
| | 850 | + @command()
|
| | 851 | + def free(self, ptr):
|
| | 852 | + """ Frees the memory space pointed to by 'ptr' """
|
| | 853 | + return self.lib.monitorcommand(struct.pack("IIII", 56, addr, 0, 0), "III", (None, None, None))
|
| | 854 | +
|
| 824 | 855 |
|
| 825 | 856 | class Lib(object):
|
| 826 | 857 | def __init__(self, logger):
|
| — | — | @@ -1024,4 +1055,20 @@ |
| 1025 | 1056 | if getattr(value, 'func', False):
|
| 1026 | 1057 | if getattr(value.func, '_command', False):
|
| 1027 | 1058 | cmddict[value.func.__name__] = value
|
| 1028 | | - logger.log(gendoc(cmddict)) |
| \ No newline at end of file |
| | 1059 | + logger.log(gendoc(cmddict))
|
| | 1060 | +
|
| | 1061 | + elif sys.argv[1] == "malloctest":
|
| | 1062 | + emcore = Emcore()
|
| | 1063 | + logger.log("Allocating 200 bytes of memory: ")
|
| | 1064 | + addr = emcore.malloc(200)
|
| | 1065 | + logger.log("0x%x\n" % addr)
|
| | 1066 | + logger.log("Reallocating to 2000 bytes: ")
|
| | 1067 | + addr = emcore.realloc(addr, 2000)
|
| | 1068 | + logger.log("0x%x\n" % addr)
|
| | 1069 | + logger.log("Freeing 0x%x\n" % addr)
|
| | 1070 | + emcore.free(addr)
|
| | 1071 | + logger.log("Allocating 1000 bytes of memory aligned to 100 bytes: ")
|
| | 1072 | + addr = emcore.memalign(100, 1000)
|
| | 1073 | + logger.log("0x%x\n" % addr)
|
| | 1074 | + logger.log("Freeing 0x%x\n" % addr)
|
| | 1075 | + emcore.free(addr) |
| \ No newline at end of file |