source: git/factory/mmprivate.h @ ac7e53

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