[Python-checkins] CVS: python/dist/src/Include mymalloc.h,2.18,2.19

Guido van Rossum python-dev@python.org
Fri, 5 May 2000 11:36:12 -0400 (EDT)


Update of /projects/cvsroot/python/dist/src/Include
In directory eric:/projects/python/develop/guido/src/Include

Modified Files:
	mymalloc.h 
Log Message:
Add two scenarios by Vladimir Marangozov that show how to use your own
allocator.


Index: mymalloc.h
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Include/mymalloc.h,v
retrieving revision 2.18
retrieving revision 2.19
diff -C2 -r2.18 -r2.19
*** mymalloc.h	2000/05/03 23:44:23	2.18
--- mymalloc.h	2000/05/05 15:36:09	2.19
***************
*** 96,101 ****
     The PyCore_* macros can be defined to make the interpreter use a
     custom allocator. Note that they are for internal use only. Both
!    the core and extension modules should use the PyMem_* API. */
  
  #ifndef PyCore_MALLOC_FUNC
  #undef PyCore_REALLOC_FUNC
--- 96,104 ----
     The PyCore_* macros can be defined to make the interpreter use a
     custom allocator. Note that they are for internal use only. Both
!    the core and extension modules should use the PyMem_* API.
  
+    See the comment block at the end of this file for two scenarios
+    showing how to use this to use a different allocator. */
+ 
  #ifndef PyCore_MALLOC_FUNC
  #undef PyCore_REALLOC_FUNC
***************
*** 200,203 ****
--- 203,245 ----
  }
  #endif
+ 
+ /* SCENARIOS
+ 
+    Here are two scenarios by Vladimir Marangozov (the author of the
+    memory allocation redesign).
+ 
+    1) Scenario A
+ 
+    Suppose you want to use a debugging malloc library that collects info on
+    where the malloc calls originate from. Assume the interface is:
+ 
+    d_malloc(size_t n, char* src_file, unsigned long src_line) c.s.
+ 
+    In this case, you would define (for example in config.h) :
+ 
+    #define PyCore_MALLOC_FUNC      d_malloc
+    ...
+    #define PyCore_MALLOC_PROTO	Py_PROTO((size_t, char *, unsigned long))
+    ...
+    #define NEED_TO_DECLARE_MALLOC_AND_FRIEND
+ 
+    #define PyCore_MALLOC(n)	PyCore_MALLOC_FUNC((n), __FILE__, __LINE__)
+    ...
+ 
+    2) Scenario B
+ 
+    Suppose you want to use malloc hooks (defined & initialized in a 3rd party
+    malloc library) instead of malloc functions.  In this case, you would
+    define:
+ 
+    #define PyCore_MALLOC_FUNC	(*malloc_hook)
+    ...
+    #define NEED_TO_DECLARE_MALLOC_AND_FRIEND
+ 
+    and ignore the previous definitions about PyCore_MALLOC_FUNC, etc.
+ 
+ 
+ */
+ 
  
  #endif /* !Py_MYMALLOC_H */