source: soft/giet_vm/giet_libs/remote_malloc.h @ 437

Last change on this file since 437 was 368, checked in by alain, 10 years ago

1) Introducing the SBT barrier (Sliced Binary Tree)

in the barrier.h library.

2) Introducing a new remote_malloc.h library.

File size: 2.3 KB
Line 
1//////////////////////////////////////////////////////////////////////////////////
2// File     : remote_malloc.h         
3// Date     : 01/08/2014
4// Author   : alain greiner
5// Copyright (c) UPMC-LIP6
6///////////////////////////////////////////////////////////////////////////////////
7// The remote_malloc.c and remote_malloc.h files are part of the GIET nano-kernel.
8// These files define a very simple user-level memory allocator:
9// - There is no free() : an allocated memory block is never released.
10// - For each vspace, it can exist one heap[(x,y) per cluster, and the user
11//   can explicitely select the target cluster(x,y).
12// - Each heap(x,y) must be declared as a specific vobj in the mapping.
13// - There is no constraint on the requested block size as long as it fit
14//   in the selected heap.
15// - For each requested block, the user can specify an alignment constraint.
16///////////////////////////////////////////////////////////////////////////////////
17// IMPLEMENTATION NOTE
18// As the distributed heap(x,y) are global variables that can be accessed
19// concurrently by all tasks of a given vspace, each heap(x,y) is protected
20// by a specific lock (defined in remote_malloc.c file.
21///////////////////////////////////////////////////////////////////////////////////
22
23#ifndef _REMOTE_MALLOC_H
24#define _REMOTE_MALLOC_H
25
26///////////////////////////////////////////////////////////////////////////////////
27// This function returne the virtual base address of the allocated block.
28// - length is the block length (number of bytes).
29// - align is the alignment constrain (vbase multiple of Ox1 << align).
30// - If (x < X_SIZE) and (y < Y_SIZE), it uses the heap in cluster(x,y).
31// - It uses the heap in cluster running the calling task, if x or y are too large.
32// The calling task exit with an error message if the request cannot be satisfied.
33///////////////////////////////////////////////////////////////////////////////////
34extern void* remote_malloc( unsigned int length,
35                            unsigned int align,
36                            unsigned int x,
37                            unsigned int y );
38
39#endif
40
41
42// Local Variables:
43// tab-width: 4
44// c-basic-offset: 4
45// c-file-offsets:((innamespace . 0)(inline-open . 0))
46// indent-tabs-mode: nil
47// End:
48// vim: filetype=c:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
49
50
51
Note: See TracBrowser for help on using the repository browser.