TODO 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. TODO items (listed by general priority):
  2. ========================================
  3. -Linux symbol support
  4. -Win32 use dbghelp for symbol support
  5. -Win64 support
  6. -In-kernel suppor-In-kernel support
  7. -prevent inclusion of duma_sem.h from outside duma headers
  8. -memccpy(), bcopy() + test for all overloaded string functions
  9. -Interface to cause verification walk
  10. -add additional target/compiler switches in GNUmakefile to build with
  11. 1- native Solaris compiler / linker
  12. 2- Microsoft compiler cl / link
  13. -integrate modifications of
  14. http://tutorial.gsse.at/dynamicmemory/
  15. http://tutorial.gsse.at/uploads/media/duma_iue.tgz
  16. -enhance detection of DUMA_MIN_ALIGNMENT in createconf
  17. use defines specifying the target architecture
  18. use compiler attributes which specify the necessary alignment
  19. -add autoconf/automake build process
  20. -use libtool to build shared libraries in Makefile
  21. depends on autoconf/automake
  22. -use configure to detect if f.e. pthread.h is installed and in search path
  23. check if pthread available before using it in Makefile
  24. depends on autoconf/automake
  25. -add feature to enable floating point exceptions
  26. by default C programs work with quiet NANs or similar values after an error
  27. this feature shall allow detecting of floating point division by zero, overflow, ..
  28. -test duma on several freely available/downloadable compilers:
  29. 1- OpenWatcom C/C++ compiler from http://www.openwatcom.org/
  30. 2- Digital MARS C/C++ compiler from http://www.digitalmars.com/
  31. 3- Intel C++ compiler from http://www.intel.com/cd/software/products
  32. /asmo-na/eng/compilers/clin/219856.htm
  33. 4- Borland C++ Builder from
  34. http://www.borland.com/products/downloads/download_cbuilder.html
  35. 5- Macintosh Programmer's Workshop from
  36. http://developer.apple.com/tools/mpw-tools/
  37. 6- TenDRA C/C++ compiler from http://www.tendra.org/
  38. or http://www.cse.unsw.edu.au/~patrykz/TenDRA/
  39. -test cmake, dmake, pmake, smake
  40. maybe no more necessary when build is done via autoconf/automake
  41. -find solution for errors, when duma used in combination with STL (and MFC)
  42. under MS Visual C++ on Windows
  43. -make new variants behave fully C++ conform
  44. at least new_handler() gets called now
  45. -implement a list structure over pages rather than an array for all slots.
  46. this would save copying all slot entries, when list grows
  47. -store __func__ additionally to __FILE__ and __LINE__
  48. depends on storing full filename (not just pointer) in slot
  49. -modification of manual page duma.3
  50. -check documents for line lengths of 80 coloumns
  51. -check and replace tabs in documents
  52. -config for
  53. long int sysconf (int parameter) Function
  54. This function is used to inquire about runtime system parameters. The
  55. parameter argument should be one of the _SC_ symbols listed below.
  56. The normal return value from sysconf is the value you requested. A value
  57. of -1 is returned both if the implementation does not impose a limit, and
  58. in case of an error.
  59. The following errno error conditions are defined for this function:
  60. EINVAL The value of the parameter is invalid.
  61. enums:
  62. _SC_PAGESIZE Inquire about the virtual memory page size of the machine.
  63. getpagesize returns the same value (see Query Memory Parameters).
  64. _SC_PHYS_PAGES Inquire about the number of physical pages in the system.
  65. _SC_AVPHYS_PAGES Inquire about the number of available physical pages in
  66. the system.
  67. -config for The ulimit Function:
  68. The ulimit function can be used to get and set certain process limits.
  69. #include <ulimit.h>
  70. long ulimit (int cmd, /* long newlimit */...);
  71. Returns: the value of the requested limit if OK, -1 on error
  72. The ulimit function allows a process to get or set some of its limits. The
  73. operation performed is determined by the value of the cmd argument, which
  74. must be one of the following four values:
  75. UL_GMEMLIM This returns the maximum amount of memory the process may use.
  76. On successful completion, the requested limit is returned. Otherwise, -1 is
  77. returned and the limit is not changed.
  78. ====================
  79. PRI LOW
  80. ====================
  81. -get duma running/compiling on all platforms which are supported on
  82. sourceforge.net's compile farms. see
  83. http://sourceforge.net/docman/display_doc.php?docid=762&group_id=1
  84. --> outdated: sourceforge's compile farm is no more available
  85. -use configuration file, which is read directly with system calls as
  86. replacement for the environment switches which use calls to the C library.
  87. this is to avoid hangs in the C library's getenv() function.
  88. --> outdated: now using char **environ variable instead getenv()
  89. -document 'J. "MUFTI" Scheurich' way of compiling/using DUMA's memory
  90. replacement functions only from own source files. Thus usage of DUMA
  91. for several system libraries is avoided.
  92. --> outdated with preprocessor option DUMA_NO_GLOBAL_MALLOC_FREE
  93. and compiler options "-include" (gcc) and "/FI" (MS Visual C++)
  94. -Similar to `DUMA_NO_GLOBAL_MALLOC_FREE`, it would be really nice if
  95. there were a `DUMA_NO_GLOBAL_NEW_DELETE` option, which would disable
  96. the DUMA implementations of `new`, `new[]`, `delete`, and `delete[]`
  97. from being included into the library.
  98. ====================
  99. DONE
  100. ====================
  101. -define new thread-safe macros,
  102. which don't have to use the global variable DUMA_PROTECT_BELOW:
  103. 1- NEW_PROTECT_BELOW: a 'new' replacement which protects the lower bound
  104. 2- NEW_PROTECT_ABOVE: a 'new' replacement which protects the upper bound
  105. 3- MALLOC_PROTECT_BELOW: a 'malloc' replacement which protects the lower bound
  106. 4- MALLOC_PROTECT_ABOVE: a 'malloc' replacement which protects the upper bound
  107. --> done other way: thread safe macro DUMA_SET_PROTECT_BELOW(V) saves setting in TLS
  108. -implement/use TLS - Thread Local Storage for some variables
  109. f.e. file/line information per delete operator
  110. --> done
  111. -use "-include" option of preprocessor, when having gcc
  112. see http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_2.html#SEC11
  113. see http://gcc.gnu.org/onlinedocs/gcc-3.0.4/gcc_3.html#SEC14
  114. see http://gcc.gnu.org/onlinedocs/gcc-4.0.1/gcc/Preprocessor-Options.html
  115. --> done: see example_makes/ex6/Makefile
  116. -use "/FI" option of preprocessor, when having ms visual c++
  117. see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore
  118. /html/_core_.2f.fi.asp
  119. --> done: see win32-msvc.net/example6/example6.sln project settings
  120. -provide a function/macro, which tests the non-protectable side of an
  121. allocated memory block for illegal writes.
  122. --> done: duma_check(), duma_checkAll(), DUMA_CHECK() and DUMA_CHECKALL()
  123. -check and replace tabs in documents
  124. done in version 2.5.7
  125. - gain thread safety: get testmt.c work properly
  126. done in version 2.5.11
  127. - add environment variable DUMA_CHECK_FREQ to autmatically check
  128. no man's land at each n'th allocation/deallocation.
  129. n=0 for no automatic checks
  130. done for version 2.5.12
  131. - enhance testmt.c to run on Windows without pthread library
  132. done for version 2.5.15