source: git/omalloc/omStats.c @ 4697a8a

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