source: git/factory/mmprivate.h @ 650f2d8

spielwiese
Last change on this file since 650f2d8 was 341696, checked in by Hans Schönemann <hannes@…>, 14 years ago
Adding Id property to all files git-svn-id: file:///usr/local/Singular/svn/trunk@12231 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 2.7 KB
Line 
1/* emacs edit mode for this file is -*- C -*- */
2/* $Id$ */
3
4#ifndef INCL_MMPRIVATE_H
5#define INCL_MMPRIVATE_H
6
7#include <config.h>
8
9#define MAXDATA 4000
10#ifdef __alpha__
11#define MAXLIST 18
12#else
13#define MAXLIST 21
14#endif
15
16typedef void ** mcb;
17
18#ifdef MDEBUG
19
20typedef struct DBMCB
21{
22  struct DBMCB * next;
23  struct DBMCB * prev;
24  size_t size;
25  int lineno;
26  char * fname;
27  int flags;
28  int pattern;
29  mcb data;
30} DBMCB;
31
32typedef DBMCB * pDBMCB;
33
34extern DBMCB mm_theDBused;
35extern DBMCB mm_theDBfree;
36extern DBMCB mm_tmpDBused;
37extern DBMCB mm_tmpDBfree;
38extern DBMCB mm_normDBused;
39extern DBMCB mm_normDBfree;
40
41#endif /* MDEBUG */
42
43
44extern /*const*/ size_t mm_mcbSizes [MAXLIST];
45
46typedef enum { MM_NORMAL, MM_TMP, MM_SWITCHED } status_t;
47
48extern mcb *mm_theList;
49extern mcb *mm_tmpList;
50extern mcb *mm_normList;
51
52extern status_t mm_status;
53
54extern int mm_bytesUsed;
55extern int mm_bytesReal;
56extern int mm_bytesTmp;
57extern int mm_bytesNorm;
58
59extern size_t mm_specSize;
60extern int mm_specIndex;
61
62extern int mm_printMark;
63
64#define mmGetSpecSize() mm_specSize
65#define mmGetSpecIndex() mm_specIndex
66
67#define MM_TMPFLAG  1
68#define MM_NORMFLAG 2
69#define MM_FREEFLAG 4
70#define MM_USEDFLAG 8
71
72#define PATTERN -2
73#define PATTERN2 'A'
74#define PATTERN3 'Z'
75
76/* stuff to handle index and sizes of free lists */
77
78int mmGetIndex( size_t );
79
80#define mmGetSize( index ) mm_mcbSizes[index]
81
82#ifndef MDEBUG
83
84#define DebugOffsetFront 0
85
86#define DebugOffsetBack 0
87
88#else /* MDEBUG */
89
90#define DebugOffsetFront 28
91
92#define DebugOffsetBack 4
93
94#endif /* MDEBUG */
95
96#define SizeFromRealSize( size ) (size - DebugOffsetFront - DebugOffsetBack)
97#define RealSizeFromSize( size ) (size + DebugOffsetFront + DebugOffsetBack)
98
99mcb mmNewMCBList( int i );
100
101/* stuff for heap handling */
102
103void mmInitHeap( void );
104
105void mmMarkHeap( void );
106void mmSweepHeap( void );
107void mmSwitchHeap( void );
108
109void mmCheckPrint( void );
110void mmNewPrintMark( void );
111
112void * mmGetMemory( size_t size );
113int mmPutMemory( void *adr, size_t size );
114
115
116/* stuff for block handling */
117
118void mmInitBlocks( void );
119
120void mmMarkBlocks( void );
121void mmSweepBlocks( void );
122void mmSwitchBlocks( void );
123
124void * mmGetBlock( void );
125
126
127/* since free functions get a (void*) that is in real life a (void**) */
128
129#define r(adr) (*(void**)adr)
130
131#ifdef MDEBUG
132
133extern void * mm_maxAddr;
134extern void * mm_minAddr;
135
136void mmMoveDBMCB ( pDBMCB from, pDBMCB to, pDBMCB what );
137
138void mmMoveDBMCBInto ( pDBMCB to, pDBMCB what );
139
140void mmTakeOutDBMCB ( pDBMCB from, pDBMCB what );
141
142int mmCheckDBMCB ( DBMCB * what, int flags, int size );
143
144int mmPrintDBMCB ( DBMCB * what, char* msg , int given_size );
145
146void mmPrintFL( const char* fname, const int lineno );
147
148#endif /* MDEBUG */
149
150#endif /* ! INCL_MMPRIVATE_H */
Note: See TracBrowser for help on using the repository browser.