source: git/Singular/mmprivate.h @ 6e5833

spielwiese
Last change on this file since 6e5833 was 6e5833, checked in by Olaf Bachmann <obachman@…>, 25 years ago
* some improvements to mmbt git-svn-id: file:///usr/local/Singular/svn/trunk@2963 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.8 1999-03-19 17:42:31 obachman 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  int init;
39  size_t size;
40  int lineno;
41  int flags;
42  memHeap heap;
43  char front_pattern[MM_NUMBER_OF_FRONT_PATTERNS];
44  void* data;
45} DBMCB;
46
47typedef DBMCB * pDBMCB;
48
49#define DebugOffsetFront (sizeof(DBMCB) - sizeof(void*))
50#define DebugOffsetBack 4
51
52#define SizeFromRealSize( size ) (size - DebugOffsetFront - DebugOffsetBack)
53#define RealSizeFromSize( size ) (size + DebugOffsetFront + DebugOffsetBack)
54
55
56extern DBMCB mm_theDBused;
57extern DBMCB mm_theDBfree;
58
59extern void * mm_maxAddr;
60extern void * mm_minAddr;
61
62#define MM_FREEFLAG 4
63#define MM_USEDFLAG 8
64
65void mmPrintFL( const char* fname, const int lineno );
66void mmDBInitNewHeapPage(memHeap heap);
67int mmCheckDBMCB ( DBMCB * what, int size , int flags);
68void mmFillDBMCB(DBMCB* what, size_t size, memHeap heap,
69                 int flags, char* fname, int lineno);
70void mmDBSetHeapsOfBlocks(memHeap fromheap, memHeap toheap);
71void mmTakeOutDBMCB (DBMCB* what );
72void mmMoveDBMCB ( pDBMCB from, pDBMCB to, DBMCB * what );
73void mmMoveDBMCBInto ( pDBMCB to, pDBMCB what );
74
75#endif /* MDEBUG */
76
77extern int mm_bytesMalloc;
78#ifdef HAVE_SBRK
79extern unsigned long mm_SbrkInit;
80#endif
81
82void mmCheckPrint( void );
83
84#define MM_PRINT_ALL_ADDR 1
85#define MM_PRINT_ALL_STACK 2
86
87
88#endif /* MEMPRIVATE_H */
89
Note: See TracBrowser for help on using the repository browser.