source: git/Singular/mmheap.c @ 58b151c

fieker-DuValspielwiese
Last change on this file since 58b151c was 32df82, checked in by Hans Schönemann <hannes@…>, 27 years ago
* hannes: removed rcsid and Log: entries, added assignment module=poly corected type conversion int->module git-svn-id: file:///usr/local/Singular/svn/trunk@128 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 2.0 KB
Line 
1/****************************************
2*  Computer Algebra System SINGULAR     *
3****************************************/
4/* $Id: mmheap.c,v 1.2 1997-04-02 15:07:32 Singular Exp $ */
5
6/*
7* ABSTRACT:
8*/
9
10#define _POSIX_SOURCE 1
11
12#include <stdlib.h>
13#include "mod2.h"
14#include "febase.h"
15#include "mmemory.h"
16#include "mmprivat.h"
17
18static char * mm_theHeapPtr = NULL;
19static char * mm_tmpHeapPtr = NULL;
20static char * mm_normHeapPtr = NULL;
21
22static int mm_theBytesLeft = 0;
23static int mm_tmpBytesLeft = 0;
24static int mm_normBytesLeft = 0;
25
26static status_t mm_heapStatus = MM_NORMAL;
27
28static void mmDistributeRestOfHeap( void );
29
30void* mmGetMemory( size_t size )
31{
32  void * dummy;
33
34  if ( mm_theBytesLeft < size ) {
35    mmDistributeRestOfHeap();
36    mm_theHeapPtr = (char*)mmGetBlock();
37    mm_theBytesLeft = MAXDATA;
38  }
39  dummy = (void*)mm_theHeapPtr;
40  mm_theBytesLeft -= size;
41  mm_theHeapPtr += size;
42  return dummy;
43}
44
45BOOLEAN mmPutMemory( void *adr, size_t size )
46{
47  void * dummy=(void *)((char *)adr+size);
48
49  if ( dummy == mm_theHeapPtr)
50  {
51    mm_theHeapPtr=(char *)adr;
52    mm_theBytesLeft += size;
53    return TRUE;
54  }
55  return FALSE;
56}
57
58#ifndef MDEBUG
59
60static void mmDistributeRestOfHeap( void )
61{
62/*
63*  char* dummy;
64*  int j;
65*
66*  while ( mm_theBytesLeft > RealSizeFromSize( mmGetSize( 0 ) ) ) {
67*    j = mmGetIndex( SizeFromRealSize( mm_theBytesLeft ) );
68*    if ( RealSizeFromSize( mmGetSize( j ) ) > mm_theBytesLeft ) j--;
69*    dummy = mm_theHeapPtr;
70*    mm_theHeapPtr += RealSizeFromSize( mmGetSize( j ) );
71*    mm_theBytesLeft -= RealSizeFromSize( mmGetSize( j ) );
72*    mmFreeBlock( &(dummy[DebugOffsetFront]), mmGetSize( j ) );
73*  }
74*/
75}
76
77#else /* MDEBUG */
78
79static void mmDistributeRestOfHeap( void )
80{
81/*
82*  void* dummy;
83*  int j;
84*
85*  while ( mm_theBytesLeft > RealSizeFromSize( mmGetSize( 0 ) ) ) {
86*    j = mmGetIndex( SizeFromRealSize( mm_theBytesLeft ) );
87*    if ( RealSizeFromSize( mmGetSize( j ) ) > mm_theBytesLeft ) j--;
88*    dummy = mmAllocBlock( mmGetSize( j ) );
89*    mmFreeBlock( &dummy, mmGetSize( j ) );
90*  }
91*/
92}
93
94#endif /* MDEBUG */
Note: See TracBrowser for help on using the repository browser.