source: git/Singular/mminit.cc @ d751cf

spielwiese
Last change on this file since d751cf was d751cf, checked in by Wilfred Pohl <pohl@…>, 26 years ago
global vars as "C" git-svn-id: file:///usr/local/Singular/svn/trunk@1476 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 2.9 KB
Line 
1/****************************************
2*  Computer Algebra System SINGULAR     *
3****************************************/
4/* $Id: mminit.cc,v 1.8 1998-04-27 10:03:07 pohl Exp $ */
5/*
6* ABSTRACT: init of memory management
7*/
8
9#define _POSIX_SOURCE 1
10
11#include <stdlib.h>
12#include <string.h>
13#include "mod2.h"
14#include "mmemory.h"
15#include "mmprivat.h"
16extern "C" { /* begin of "C" */
17#ifdef HAVE_GMP
18#include <gmp.h>
19#endif
20
21#ifdef ALIGN_8
22mcb mm_normList[MAXLIST]=
23{ NULL,NULL,NULL,NULL,
24  NULL,NULL,NULL,NULL,
25  NULL,NULL,NULL,NULL,
26  NULL,NULL,NULL,NULL,
27  NULL,NULL};
28;
29mcb mm_tmpList[MAXLIST]=
30{ NULL,NULL,NULL,NULL,
31  NULL,NULL,NULL,NULL,
32  NULL,NULL,NULL,NULL,
33  NULL,NULL,NULL,NULL,
34  NULL,NULL};
35#ifdef MM_STAT
36int mm_active[MAXLIST+1]=
37{ 0,0,0,0,
38  0,0,0,0,
39  0,0,0,0,
40  0,0,0,0,
41  0,0,0};
42int mm_max[MAXLIST+2]=
43{ 0,0,0,0,
44  0,0,0,0,
45  0,0,0,0,
46  0,0,0,0,
47  0,0,0,0};
48#endif
49#else
50mcb mm_normList[MAXLIST]=
51{ NULL,NULL,NULL,NULL,
52  NULL,NULL,NULL,
53  NULL,NULL,NULL,NULL,
54  NULL,NULL,NULL,NULL,
55  NULL,NULL,NULL,NULL,
56  NULL,NULL};
57mcb mm_tmpList[MAXLIST]=
58{ NULL,NULL,NULL,NULL,
59  NULL,NULL,NULL,
60  NULL,NULL,NULL,NULL,
61  NULL,NULL,NULL,NULL,
62  NULL,NULL,NULL,NULL,
63  NULL,NULL};
64#ifdef MM_STAT
65int mm_active[MAXLIST+1]=
66{ 0,0,0,0,
67  0,0,0,
68  0,0,0,0,
69  0,0,0,0,
70  0,0,0,0,
71  0,0,0};
72int mm_max[MAXLIST+2]=
73{ 0,0,0,0,
74  0,0,0,
75  0,0,0,0,
76  0,0,0,0,
77  0,0,0,0,
78  0,0,0,0};
79#endif
80#endif
81
82
83mcb *mm_theList=mm_normList;
84
85#ifdef MPOLYPART
86void * mm_maxAddr=NULL;
87void * mm_minAddr=NULL;
88mcb mm_spec=NULL;
89void *mm_spec_part=NULL;
90#endif
91
92#ifdef MDEBUG
93
94DBMCB mm_theDBused={NULL,NULL,0,0,NULL,0,0,NULL};
95DBMCB mm_theDBfree={NULL,NULL,0,0,NULL,0,0,NULL};
96DBMCB mm_tmpDBused={NULL,NULL,0,0,NULL,0,0,NULL};
97DBMCB mm_tmpDBfree={NULL,NULL,0,0,NULL,0,0,NULL};
98DBMCB mm_normDBused={NULL,NULL,0,0,NULL,0,0,NULL};
99DBMCB mm_normDBfree={NULL,NULL,0,0,NULL,0,0,NULL};
100void * mm_maxAddr=NULL;
101void * mm_minAddr=NULL;
102
103#endif /* MDEBUG */
104
105status_t mm_status = MM_NORMAL;
106
107int mm_bytesUsed=0;
108int mm_bytesReal=0;
109int mm_bytesTmp=0;
110int mm_bytesNorm=0;
111
112int mm_specIndex=0;
113size_t mm_specSize = mm_mcbSizes[0];
114
115int mm_printMark=102400;
116} /* end of "C" */
117
118void* operator new ( size_t size )
119{
120#ifdef MDEBUG
121  return mmDBAlloc( size, "new",0);
122#else
123  return AllocL( size );
124#endif
125}
126
127void operator delete ( void* block )
128{
129#ifdef MDEBUG
130  mmDBFree( block, "delete",0);
131#else
132  FreeL( block );
133#endif
134}
135
136#ifdef HAVE_GMP
137#ifdef MDEBUG
138void * mgAllocBlock( size_t t)
139{
140  return mmDBAllocBlock(t,"gmp",0);
141}
142void mgFreeBlock( void* a, size_t t)
143{
144  mmDBFreeBlock(a,t,"gmp",0);
145}
146void * mgReallocBlock( void* a, size_t t1, size_t t2)
147{
148  return mmDBReallocBlock(a,t1,t2,"gmp",0);
149}
150#endif
151#endif
152
153int mmInit();
154static int mmIsInitialized=mmInit();
155
156int mmInit( void )
157{
158#ifdef HAVE_GMP
159  if(mmIsInitialized==0)
160  {
161#ifndef MDEBUG
162    mp_set_memory_functions(mmAllocBlock,mmReallocBlock,mmFreeBlock);
163#else
164    mp_set_memory_functions(mgAllocBlock,mgReallocBlock,mgFreeBlock);
165#endif
166  }
167#endif
168  mmIsInitialized=1;
169  return 1;
170}
Note: See TracBrowser for help on using the repository browser.