source: git/Singular/mminit.cc @ 27b799

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