source: git/Singular/mmprivate.h @ 105efec

spielwiese
Last change on this file since 105efec was 105efec, checked in by Hans Schönemann <hannes@…>, 25 years ago
* hannes: MTRACK fixes git-svn-id: file:///usr/local/Singular/svn/trunk@2962 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 2.2 KB
Line 
1#ifndef MEMPRIVAT_H
2#define MEMPRIVAT_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6/* $Id: mmprivate.h,v 1.7 1999-03-19 16:00:07 Singular Exp $ */
7/*
8* ABSTRACT
9*/
10#include "structs.h"
11#include "mmheap.h"
12
13#define MAX_BLOCK_SIZE  (((SIZE_OF_HEAP_PAGE) / 16)*4)
14
15#define INDEX_ENTRY_T   char
16extern const INDEX_ENTRY_T mm_IndexTable[];
17extern const size_t mm_mcbSizes[];
18extern struct sip_memHeap mm_theList[];
19#define mmGetSize( index ) mm_mcbSizes[index]
20
21#ifndef GENERATE_INDEX_TABLE
22#define mmGetIndex(size)                                        \
23 (size <= MAX_BLOCK_SIZE ? mm_IndexTable[(size -1) >> 2] : -1)
24#else /* GENERATE_INDEX_TABLE */
25int mmGetIndex( size_t );
26#endif /* ! GENERATE_INDEX_TABLE */
27
28#if defined(MDEBUG) || defined(GENERATE_INDEX_TABLE)
29
30#define MM_NUMBER_OF_FRONT_PATTERNS   4
31typedef struct DBMCB
32{
33  void* _nnext;
34  struct DBMCB * next;
35  struct DBMCB * prev;
36  char * fname;
37  unsigned long bt_stack[BT_MAXSTACK];
38  size_t size;
39  int lineno;
40  int flags;
41  memHeap heap;
42  char front_pattern[MM_NUMBER_OF_FRONT_PATTERNS];
43  void* data;
44} DBMCB;
45
46typedef DBMCB * pDBMCB;
47
48#define DebugOffsetFront (sizeof(DBMCB) - sizeof(void*))
49#define DebugOffsetBack 4
50
51#define SizeFromRealSize( size ) (size - DebugOffsetFront - DebugOffsetBack)
52#define RealSizeFromSize( size ) (size + DebugOffsetFront + DebugOffsetBack)
53
54
55extern DBMCB mm_theDBused;
56extern DBMCB mm_theDBfree;
57
58extern void * mm_maxAddr;
59extern void * mm_minAddr;
60
61#define MM_FREEFLAG 4
62#define MM_USEDFLAG 8
63
64void mmPrintFL( const char* fname, const int lineno );
65void mmDBInitNewHeapPage(memHeap heap);
66int mmCheckDBMCB ( DBMCB * what, int size , int flags);
67void mmFillDBMCB(DBMCB* what, size_t size, memHeap heap,
68                 int flags, char* fname, int lineno);
69void mmDBSetHeapsOfBlocks(memHeap fromheap, memHeap toheap);
70void mmTakeOutDBMCB (DBMCB* what );
71void mmMoveDBMCB ( pDBMCB from, pDBMCB to, DBMCB * what );
72void mmMoveDBMCBInto ( pDBMCB to, pDBMCB what );
73
74#endif /* MDEBUG */
75
76extern int mm_bytesMalloc;
77#ifdef HAVE_SBRK
78extern unsigned long mm_SbrkInit;
79#endif
80
81void mmCheckPrint( void );
82
83#endif /* MEMPRIVATE_H */
84
Note: See TracBrowser for help on using the repository browser.