LinuxMalinfo.h 916 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // Copyright (C) 2009-2015, Panagiotis Christopoulos Charitos.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #ifndef ANKI_UTIL_LINUXMALINFO_H
  6. #define ANKI_UTIL_LINUXMALINFO_H
  7. #if defined(PLATFORM_LINUX)
  8. # include <malloc.h>
  9. typedef struct mallinfo Mallinfo;
  10. inline Mallinfo GetMallInfo()
  11. {
  12. return mallinfo();
  13. }
  14. inline void printMallInfo(const Mallinfo& minfo)
  15. {
  16. PRINT("used:" << minfo.uordblks << " free:" << minfo.fordblks <<
  17. " total:" << minfo.arena);
  18. }
  19. inline void printMallInfoDiff(const Mallinfo& prev, const Mallinfo& now)
  20. {
  21. Mallinfo diff;
  22. diff.uordblks = now.uordblks-prev.uordblks;
  23. diff.fordblks = now.fordblks-prev.fordblks;
  24. diff.arena = now.arena-prev.arena;
  25. printMallInfo(diff);
  26. }
  27. # define MALLINFO_BEGIN Mallinfo __m__ = GetMallInfo();
  28. # define MALLINFO_END printMallInfoDiff(__m__, GetMallInfo());
  29. #endif
  30. #endif