summaryrefslogtreecommitdiffstats
path: root/c/src/exec/itron/include/itronsys/vmempool.h
blob: fbb2f1e2b8df228dfc9eeaadb1d6c3fed6358a94 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
 *  COPYRIGHT (c) 1989-1999.
 *  On-Line Applications Research Corporation (OAR).
 *
 *  The license and distribution terms for this file may be
 *  found in the file LICENSE in this distribution or at
 *  http://www.OARcorp.com/rtems/license.html.
 *
 *  $Id$
 */

#ifndef __ITRON_VARIABLE_MEMORYPOOL_h_
#define __ITRON_VARIABLE_MEMORYPOOL_h_

#ifdef __cplusplus
extern "C" {
#endif

/*
 *  Create Variable Memory Pool (cre_mpl) Structure
 */

typedef struct t_cmpl {
  VP    exinf;    /* extended information */
  ATR   mplatr;   /* memorypool attributes */
  INT   mplsz;    /* memorypool size */
  /* additional information may be included depending on the implementation */
} T_CMPL;

/*
 *  mplatr
 */

#define TA_TFIFO   0x00   /* waiting tasks are handled by FIFO */
#define TA_TPRI    0x01   /* waiting tasks are handled by priority */

/*
 *  mplid
 */

#define TMPL_OS   (-4)   /* memorypool used by OS */

/*
 *  Reference Variable Memory Pool (ref_mpl) Structure
 */

typedef struct t_rmpl {
  VP        exinf;    /* extended information */
  BOOL_ID   wtsk;     /* indicates whether or not there are waiting tasks */
  INT       frsz;     /* total size of free memory */
  INT       maxsz;    /* size of largest contiguous memory */
  /* additional information may be included depending on the implementation */
} T_RMPL;

/*
 *  Variable Memory Pool Functions
 */

/*
 *  cre_mpl - Create Variable-Size Memorypool
 */

ER cre_mpl(
  ID mplid,
  T_CMPL *pk_cmpl
);

/*
 *  del_mpl - Delete Variable-Size Memorypool
 */

ER del_mpl(
  ID mplid
);

/*
 *  get_blk - Get Variable-Size Memory Block
 */

ER get_blk(
  VP *p_blk,
  ID mplid,
  INT blksz
);

/*
 *  pget_blk - Poll and Get Variable-Size Memory Block
 */

ER pget_blk(
  VP *p_blk,
  ID mplid,
  INT blksz
);

/*
 *  tget_blk - Get Variable-Size Memory Block with Timeout
 */

ER tget_blk(
  VP *p_blk,
  ID mplid,
  INT blksz,
  TMO tmout
);

/*
 *  rel_blk - Release Variable-Size Memory Block
 */

ER rel_blk(
  ID mplid,
  VP blk
);

/*
 *  ref_mpl - Reference Variable-Size Memorypool Status
 */

ER ref_mpl(
  T_RMPL *pk_rmpl,
  ID mplid
);


#ifdef __cplusplus
}
#endif

#endif
/* end of include file */