source: git/omalloc/omStats.c @ 6eaa71

spielwiese
Last change on this file since 6eaa71 was 6eaa71, checked in by Wilfred Pohl <pohl@…>, 23 years ago
fixed inlude problem git-svn-id: file:///usr/local/Singular/svn/trunk@4694 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 5.1 KB
Line 
1/*******************************************************************
2 *  File:    omStats.c
3 *  Purpose: definitions of stats related stuff
4 *  Author:  obachman (Olaf Bachmann)
5 *  Created: 11/99
6 *  Version: $Id: omStats.c,v 1.5 2000-11-06 11:21:17 pohl Exp $
7 *******************************************************************/
8#include <unistd.h>
9#define OM_NO_MALLOC_MACROS
10#include "omConfig.h"
11#include "omDefaultConfig.h"
12#include "omMalloc.h"
13#include "omAlloc.h"
14
15omInfo_t om_Info = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
16
17unsigned long om_SbrkInit = 0;
18
19void omInitInfo()
20{
21#ifdef HAVE_SBRK
22  om_SbrkInit = (unsigned long) sbrk(0);
23#endif
24}
25
26void omUpdateInfo()
27{
28#ifdef OM_MALLOC_UPDATE_INFO
29  OM_MALLOC_UPDATE_INFO;
30#endif 
31
32  /* this can happen, since sizes are added as requested, and
33     subtracted as the real size of the memory */
34  if (om_Info.CurrentBytesFromMalloc < 0)
35    om_Info.CurrentBytesFromMalloc = 0;
36 
37  om_Info.UsedBytesFromValloc = omGetUsedBinBytes();
38  om_Info.AvailBytesFromValloc = om_Info.CurrentBytesFromValloc - om_Info.UsedBytesFromValloc;
39
40#ifdef OM_MALLOC_USED_BYTES
41  om_Info.UsedBytesMalloc = OM_MALLOC_USED_BYTES;
42#else
43  om_Info.UsedBytesMalloc = om_Info.CurrentBytesFromMalloc;
44#endif
45#ifdef OM_MALLOC_AVAIL_BYTES
46  om_Info.AvailBytesMalloc = OM_MALLOC_AVAIL_BYTES;
47#endif
48 
49  om_Info.UsedBytes = om_Info.UsedBytesMalloc + om_Info.UsedBytesFromValloc;
50  om_Info.AvailBytes = om_Info.AvailBytesMalloc + om_Info.AvailBytesFromValloc;
51
52#ifdef OM_HAVE_VALLOC_MMAP
53  om_Info.CurrentBytesMmap = om_Info.CurrentBytesFromValloc;
54  om_Info.MaxBytesMmap = om_Info.MaxBytesFromValloc;
55#endif
56#ifdef OM_MALLOC_CURRENT_BYTES_MMAP
57  om_Info.CurrentBytesMmap += OM_MALLOC_CURRENT_BYTES_MMAP;
58#endif
59#ifdef OM_MALLOC_MAX_BYTES_MMAP
60  om_Info.MaxBytesMmap += OM_MALLOC_MAX_BYTES_MMAP;
61#endif
62
63#ifndef OM_MALLOC_CURRENT_BYTES_SBRK
64#ifdef HAVE_SBRK 
65  if (om_SbrkInit)
66  {
67    om_Info.CurrentBytesSbrk = (unsigned long) sbrk(0) - om_SbrkInit;
68    if (om_Info.CurrentBytesSbrk > om_Info.MaxBytesSbrk)
69      om_Info.MaxBytesSbrk = om_Info.CurrentBytesSbrk;
70  }
71  else
72  {
73    om_SbrkInit = (unsigned long) sbrk(0);
74  }
75#endif
76#else
77  om_Info.CurrentBytesSbrk = OM_MALLOC_CURRENT_BYTES_SBRK;
78#ifdef OM_MALLOC_MAX_BYTES_SBRK
79  om_Info.MaxBytesSbrk = OM_MALLOC_MAX_BYTES_SBRK;
80#else
81    if (om_Info.CurrentBytesSbrk > om_Info.MaxBytesSbrk) 
82      om_Info.MaxBytesSbrk = om_Info.CurrentBytesSbrk;
83#endif 
84#endif
85
86#ifdef OM_MALLOC_CURRENT_BYTES_SYSTEM
87  om_Info.CurrentBytesSystem = OM_MALLOC_CURRENT_BYTES_SYSTEM;
88#else
89  om_Info.CurrentBytesSystem = 
90    (om_Info.CurrentBytesSbrk > om_Info.UsedBytesMalloc ? 
91     om_Info.CurrentBytesSbrk : om_Info.UsedBytesMalloc);
92#endif
93#ifdef OM_HAVE_VALLOC_MMAP
94  om_Info.CurrentBytesSystem += om_Info.CurrentBytesFromValloc;
95#endif
96
97#if ! (defined(OM_HAVE_VALLOC_MMAP) && defined(OM_MALLOC_MAX_BYTES_SYSTEM))
98#ifdef OM_MALLOC_MAX_BYTES_SYSTEM
99  om_Info.MaxBytesSystem = OM_MALLOC_MAX_BYTES_SYSTEM;
100#else
101  om_Info.MaxBytesSystem = 
102    (om_Info.MaxBytesSbrk + om_Info.MaxBytesMmap > 
103     om_Info.MaxBytesFromMalloc + om_Info.MaxBytesFromValloc ?
104     om_Info.MaxBytesSbrk + om_Info.MaxBytesMmap :
105     om_Info.MaxBytesFromMalloc + om_Info.MaxBytesFromValloc);
106#endif
107#endif 
108}
109
110omInfo_t omGetInfo()
111{
112  omUpdateInfo();
113  return om_Info;
114}
115
116void omPrintStats(FILE* fd)
117{
118  omUpdateInfo();
119  fprintf(fd, "System %ldk:%ldk Appl %ldk/%ldk Malloc %ldk/%ldk Valloc %ldk/%ldk Pages %ld/%ld Regions %ld:%ld\n",
120          om_Info.CurrentBytesSystem/1024, om_Info.MaxBytesSystem/1024,
121          om_Info.UsedBytes/1024, om_Info.AvailBytes/1024,
122          om_Info.UsedBytesMalloc/1024, om_Info.AvailBytesMalloc/1024,
123          om_Info.CurrentBytesFromValloc/1024, om_Info.AvailBytesFromValloc/1024,
124          om_Info.UsedPages, om_Info.AvailPages,
125          om_Info.CurrentRegionsAlloc, om_Info.MaxRegionsAlloc);
126}
127
128
129void omPrintInfo(FILE* fd)
130{
131  omUpdateInfo();
132  fprintf(fd, "                  Current:       Max:\n");
133  fprintf(fd, "BytesSystem:     %8ldk  %8ldk\n", om_Info.CurrentBytesSystem/1024, om_Info.MaxBytesSystem/1024);
134  fprintf(fd, "BytesSbrk:       %8ldk  %8ldk\n", om_Info.CurrentBytesSbrk/1024, om_Info.MaxBytesSbrk/1024);
135  fprintf(fd, "BytesMmap:       %8ldk  %8ldk\n", om_Info.CurrentBytesMmap/1024, om_Info.MaxBytesMmap/1024);
136  fprintf(fd, "BytesFromMalloc: %8ldk  %8ldk\n", om_Info.CurrentBytesFromMalloc/1024, om_Info.MaxBytesFromMalloc/1024);
137  fprintf(fd, "BytesFromValloc: %8ldk  %8ldk\n", om_Info.CurrentBytesFromValloc/1024, om_Info.MaxBytesFromValloc/1024);
138  fprintf(fd, "PagesAlloc:      %8ld   %8ld \n", om_Info.UsedPages, om_Info.MaxPages);
139  fprintf(fd, "RegionsAlloc:    %8ld   %8ld \n", om_Info.CurrentRegionsAlloc, om_Info.MaxRegionsAlloc);
140  fprintf(fd, "                     Used:     Avail:\n");
141  fprintf(fd, "BytesAppl:       %8ldk  %8ldk\n", om_Info.UsedBytes/1024, om_Info.AvailBytes/1024);
142  fprintf(fd, "BytesMalloc:     %8ldk  %8ldk\n", om_Info.UsedBytesMalloc/1024, om_Info.AvailBytesMalloc/1024);
143  fprintf(fd, "BytesValloc:     %8ldk  %8ldk\n", om_Info.UsedBytesFromValloc/1024, om_Info.AvailBytesFromValloc/1024);
144  fprintf(fd, "Pages:           %8ld   %8ld\n", om_Info.UsedPages, om_Info.AvailPages);
145}
Note: See TracBrowser for help on using the repository browser.