aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src/mem.cc
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2008-02-02 15:43:00 +0000
committerErik Schnetter <schnetter@cct.lsu.edu>2008-02-02 15:43:00 +0000
commit1beb710e75a868f71b74ca5a2b13017593a4469e (patch)
treed9d916cb78ae9b3ee1bd824fbfc9d32401892d2d /Carpet/CarpetLib/src/mem.cc
parentd2d5504fd8975ae714d70cbdda4805d49f0c5bf5 (diff)
CarpetLib: Add function memoryof to measure size of data structures
Add an overloaded function memoryof which measures the size in bytes of CarpetLib's data structures. darcs-hash:20080202154302-dae7b-de41c79cb04617327695fae27928c05c5d431ee8.gz
Diffstat (limited to 'Carpet/CarpetLib/src/mem.cc')
-rw-r--r--Carpet/CarpetLib/src/mem.cc38
1 files changed, 38 insertions, 0 deletions
diff --git a/Carpet/CarpetLib/src/mem.cc b/Carpet/CarpetLib/src/mem.cc
index b6b1c9c8e..d8603591b 100644
--- a/Carpet/CarpetLib/src/mem.cc
+++ b/Carpet/CarpetLib/src/mem.cc
@@ -150,6 +150,25 @@ has_clients () const
+// Memory usage
+template<typename T>
+size_t
+mem<T>::
+memory ()
+ const
+{
+ return
+ memoryof (storage_) +
+ memoryof (nelems_) +
+ memoryof (vectorlength_) +
+ memoryof (owns_storage_) +
+ memoryof (clients_) +
+ memoryof (num_clients_) +
+ (owns_storage_ ? sizeof (T) * vectorlength_ * nelems_ : 0);
+}
+
+
+
size_t const mempool::chunksize;
size_t const mempool::align;
@@ -205,6 +224,25 @@ alloc (size_t nbytes)
+// Memory usage
+size_t
+mempool::
+memory ()
+ const
+{
+ return
+ memoryof (chunks) +
+ memoryof (freeptr) +
+ memoryof (freesize) +
+ (chunksize * chunks.size());
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+
extern "C" void CarpetLib_setmemlimit (CCTK_ARGUMENTS);
void CarpetLib_setmemlimit (CCTK_ARGUMENTS)