1 /* This file is part of the Project Athena Zephyr Notification System.
2 * It is one of the source files comprising zwgc, the Zephyr WindowGram
5 * Created by: Marc Horowitz <marc@athena.mit.edu>
9 * Copyright (c) 1989 by the Massachusetts Institute of Technology.
10 * For copying and distribution information, see the file
14 /* This entire module goes out the window in saber */
15 #if !defined(SABER) && (defined(DEBUG) || defined(DEBUG_MEMORY))
20 extern char *memory__malloc(); /* PRIVATE */
21 extern char *memory__realloc(); /* PRIVATE */
22 extern char *memory__calloc(); /* PRIVATE */
23 extern void memory__free(); /* PRIVATE */
27 #define CHECK_FIELD_VALUE 0xe5e7e3e9
29 typedef struct _memory_block_header {
31 char *creating_module;
32 int line_number_in_creating_module;
33 unsigned int check_field;
34 } memory_block_header;
36 #define memory__size_of_header (sizeof(struct _memory_block_header))
38 #define memory__get_header(block) \
39 ((struct _memory_block_header *)((block)-memory__size_of_header))
41 #define memory__on_heap_p(block) \
42 (memory__get_header(block)->check_field==CHECK_FIELD_VALUE)
46 #define memory__size_of_header 0
48 #define memory__on_heap_p(block) 1
53 * int string_Length(string s):
54 * Effects: Returns the number of non-null characters in s.
57 #ifndef memory__PROVIDER
60 extern char *current_module;
61 extern void set_module();
63 #define malloc(size) (set_module(__FILE__,__LINE__),\
65 #define realloc(ptr, size) (set_module(__FILE__,__LINE__),\
66 memory__realloc((char *) ptr, size))
67 #define calloc(nelem, elsize) (set_module(__FILE__,__LINE__),\
68 memory__calloc(nelem, elsize))
69 #define free(ptr) (set_module(__FILE__,__LINE__),\
70 memory__free((char *) ptr))
73 #define malloc(size) memory__malloc(size)
74 #define realloc(ptr, size) memory__realloc((char *) ptr, size)
75 #define calloc(nelem, elsize) memory__calloc(nelem, elsize)
76 #define free(ptr) memory__free((char *) ptr)
78 #endif /* DEBUG_MEMORY */
80 #endif /* memory__PROVIDER */
82 #endif /* memory_MODULE */