123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- TODO (listed from highest to lowest priority):
- ==============================================
- -memccpy(), bcopy() + test for all overloaded string functions
- -add additional target/compiler switches in GNUmakefile to build with
- 1- native Solaris compiler / linker
- 2- Microsoft compiler cl / link
- -integrate modifications of
- http://tutorial.gsse.at/dynamicmemory/
- http://tutorial.gsse.at/uploads/media/duma_iue.tgz
- -enhance detection of DUMA_MIN_ALIGNMENT in createconf
- use defines specifying the target architecture
- use compiler attributes which specify the necessary alignment
- -add autoconf/automake build process
- -use libtool to build shared libraries in Makefile
- depends on autoconf/automake
- -use configure to detect if f.e. pthread.h is installed and in search path
- check if pthread available before using it in Makefile
- depends on autoconf/automake
- -add feature to enable floating point exceptions
- by default C programs work with quiet NANs or similar values after an error
- this feature shall allow detecting of floating point division by zero, overflow, ..
- -test duma on several freely available/downloadable compilers:
- 1- OpenWatcom C/C++ compiler from http://www.openwatcom.org/
- 2- Digital MARS C/C++ compiler from http://www.digitalmars.com/
- 3- Intel C++ compiler from http://www.intel.com/cd/software/products
- /asmo-na/eng/compilers/clin/219856.htm
- 4- Borland C++ Builder from
- http://www.borland.com/products/downloads/download_cbuilder.html
- 5- Macintosh Programmer's Workshop from
- http://developer.apple.com/tools/mpw-tools/
- 6- TenDRA C/C++ compiler from http://www.tendra.org/
- or http://www.cse.unsw.edu.au/~patrykz/TenDRA/
- -test cmake, dmake, pmake, smake
- maybe no more necessary when build is done via autoconf/automake
- -find solution for errors, when duma used in combination with STL (and MFC)
- under MS Visual C++ on Windows
- -make new variants behave fully C++ conform
- at least new_handler() gets called now
- -implement a list structure over pages rather than an array for all slots.
- this would save copying all slot entries, when list grows
- -store __func__ additionally to __FILE__ and __LINE__
- depends on storing full filename (not just pointer) in slot
- -modification of manual page duma.3
- -check documents for line lengths of 80 coloumns
- -check and replace tabs in documents
- -config for
- long int sysconf (int parameter) Function
- This function is used to inquire about runtime system parameters. The
- parameter argument should be one of the _SC_ symbols listed below.
- The normal return value from sysconf is the value you requested. A value
- of -1 is returned both if the implementation does not impose a limit, and
- in case of an error.
- The following errno error conditions are defined for this function:
- EINVAL The value of the parameter is invalid.
- enums:
- _SC_PAGESIZE Inquire about the virtual memory page size of the machine.
- getpagesize returns the same value (see Query Memory Parameters).
- _SC_PHYS_PAGES Inquire about the number of physical pages in the system.
- _SC_AVPHYS_PAGES Inquire about the number of available physical pages in
- the system.
- -config for The ulimit Function:
- The ulimit function can be used to get and set certain process limits.
- #include <ulimit.h>
- long ulimit (int cmd, /* long newlimit */...);
- Returns: the value of the requested limit if OK, -1 on error
- The ulimit function allows a process to get or set some of its limits. The
- operation performed is determined by the value of the cmd argument, which
- must be one of the following four values:
- UL_GMEMLIM This returns the maximum amount of memory the process may use.
- On successful completion, the requested limit is returned. Otherwise, -1 is
- returned and the limit is not changed.
- ====================
- PRI LOW
- ====================
- -get duma running/compiling on all platforms which are supported on
- sourceforge.net's compile farms. see
- http://sourceforge.net/docman/display_doc.php?docid=762&group_id=1
- --> outdated: sourceforge's compile farm is no more available
- -use configuration file, which is read directly with system calls as
- replacement for the environment switches which use calls to the C library.
- this is to avoid hangs in the C library's getenv() function.
- --> outdated: now using char **environ variable instead getenv()
- -document 'J. "MUFTI" Scheurich' way of compiling/using DUMA's memory
- replacement functions only from own source files. Thus usage of DUMA
- for several system libraries is avoided.
- --> outdated with preprocessor option DUMA_NO_GLOBAL_MALLOC_FREE
- and compiler options "-include" (gcc) and "/FI" (MS Visual C++)
- ====================
- DONE
- ====================
- -define new thread-safe macros,
- which don't have to use the global variable DUMA_PROTECT_BELOW:
- 1- NEW_PROTECT_BELOW: a 'new' replacement which protects the lower bound
- 2- NEW_PROTECT_ABOVE: a 'new' replacement which protects the upper bound
- 3- MALLOC_PROTECT_BELOW: a 'malloc' replacement which protects the lower bound
- 4- MALLOC_PROTECT_ABOVE: a 'malloc' replacement which protects the upper bound
- --> done other way: thread safe macro DUMA_SET_PROTECT_BELOW(V) saves setting in TLS
- -implement/use TLS - Thread Local Storage for some variables
- f.e. file/line information per delete operator
- --> done
- -use "-include" option of preprocessor, when having gcc
- see http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_2.html#SEC11
- see http://gcc.gnu.org/onlinedocs/gcc-3.0.4/gcc_3.html#SEC14
- see http://gcc.gnu.org/onlinedocs/gcc-4.0.1/gcc/Preprocessor-Options.html
- --> done: see example_makes/ex6/Makefile
- -use "/FI" option of preprocessor, when having ms visual c++
- see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore
- /html/_core_.2f.fi.asp
- --> done: see win32-msvc.net/example6/example6.sln project settings
- -provide a function/macro, which tests the non-protectable side of an
- allocated memory block for illegal writes.
- --> done: duma_check(), duma_checkAll(), DUMA_CHECK() and DUMA_CHECKALL()
- -check and replace tabs in documents
- done in version 2.5.7
- - gain thread safety: get testmt.c work properly
- done in version 2.5.11
- - add environment variable DUMA_CHECK_FREQ to autmatically check
- no man's land at each n'th allocation/deallocation.
- n=0 for no automatic checks
- done for version 2.5.12
- - enhance testmt.c to run on Windows without pthread library
- done for version 2.5.15
|