Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(490)

Side by Side Diff: source/libvpx/vpx_mem/include/vpx_mem_tracker.h

Issue 1124333011: libvpx: Pull from upstream (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libvpx.git@master
Patch Set: only update to last nights LKGR Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11
12 #ifndef VPX_MEM_INCLUDE_VPX_MEM_TRACKER_H_
13 #define VPX_MEM_INCLUDE_VPX_MEM_TRACKER_H_
14
15 /* vpx_mem_tracker version info */
16 #define vpx_mem_tracker_version "2.5.1.1"
17
18 #define VPX_MEM_TRACKER_VERSION_CHIEF 2
19 #define VPX_MEM_TRACKER_VERSION_MAJOR 5
20 #define VPX_MEM_TRACKER_VERSION_MINOR 1
21 #define VPX_MEM_TRACKER_VERSION_PATCH 1
22 /* END - vpx_mem_tracker version info */
23
24 #include <stdarg.h>
25
26 struct mem_block {
27 size_t addr;
28 unsigned int size,
29 line;
30 char *file;
31 struct mem_block *prev,
32 * next;
33
34 int padded; // This mem_block has padding for integrity checks.
35 // As of right now, this should only be 0 if
36 // using vpx_mem_alloc to allocate cache memory.
37 // 2005-01-11 tjf
38 };
39
40 #if defined(__cplusplus)
41 extern "C" {
42 #endif
43
44 /*
45 vpx_memory_tracker_init(int padding_size, int pad_value)
46 padding_size - the size of the padding before and after each mem addr.
47 Values > 0 indicate that integrity checks can be performe d
48 by inspecting these areas.
49 pad_value - the initial value within the padding area before and after
50 each mem addr.
51
52 Initializes the memory tracker interface. Should be called before any
53 other calls to the memory tracker.
54 */
55 int vpx_memory_tracker_init(int padding_size, int pad_value);
56
57 /*
58 vpx_memory_tracker_destroy()
59 Deinitializes the memory tracker interface
60 */
61 void vpx_memory_tracker_destroy();
62
63 /*
64 vpx_memory_tracker_add(size_t addr, unsigned int size,
65 char * file, unsigned int line)
66 addr - memory address to be added to list
67 size - size of addr
68 file - the file addr was referenced from
69 line - the line in file addr was referenced from
70 Adds memory address addr, it's size, file and line it came from
71 to the memory tracker allocation table
72 */
73 void vpx_memory_tracker_add(size_t addr, unsigned int size,
74 char *file, unsigned int line,
75 int padded);
76
77 /*
78 vpx_memory_tracker_add(size_t addr, unsigned int size, char * file, unsign ed int line)
79 addr - memory address to be added to be removed
80 padded - if 0, disables bounds checking on this memory block even if bou nds
81 checking is enabled. (for example, when allocating cache memory, we stil l want
82 to check for memory leaks, but we do not waste cache space for bounds ch eck padding)
83 Removes the specified address from the memory tracker's allocation
84 table
85 Return:
86 0: on success
87 -1: if memory allocation table's mutex could not be locked
88 -2: if the addr was not found in the list
89 */
90 int vpx_memory_tracker_remove(size_t addr);
91
92 /*
93 vpx_memory_tracker_find(unsigned int addr)
94 addr - address to be found in the memory tracker's
95 allocation table
96 Return:
97 If found, pointer to the memory block that matches addr
98 NULL otherwise
99 */
100 struct mem_block *vpx_memory_tracker_find(size_t addr);
101
102 /*
103 vpx_memory_tracker_dump()
104 Dumps the current contents of the memory
105 tracker allocation table
106 */
107 void vpx_memory_tracker_dump();
108
109 /*
110 vpx_memory_tracker_check_integrity()
111 If a padding_size was provided to vpx_memory_tracker_init()
112 This function will verify that the region before and after each
113 memory address contains the specified pad_value. Should the check
114 fail, the filename and line of the check will be printed out.
115 */
116 void vpx_memory_tracker_check_integrity(char *file, unsigned int line);
117
118 /*
119 vpx_memory_tracker_set_log_type
120 type - value representing the logging type to use
121 option - type specific option. This will be interpreted differently
122 based on the type.
123 Sets the logging type for the memory tracker.
124 Values currently supported:
125 0: if option is NULL, log to stderr, otherwise interpret option as a
126 filename and attempt to open it.
127 1: Use output_debug_string (WIN32 only), option ignored
128 Return:
129 0: on success
130 -1: if the logging type could not be set, because the value was invalid
131 or because a file could not be opened
132 */
133 int vpx_memory_tracker_set_log_type(int type, char *option);
134
135 /*
136 vpx_memory_tracker_set_log_func
137 userdata - ptr to be passed to the supplied logfunc, can be NULL
138 logfunc - the logging function to be used to output data from
139 vpx_memory_track_dump/check_integrity
140 Sets a logging function to be used by the memory tracker.
141 Return:
142 0: on success
143 -1: if the logging type could not be set because logfunc was NULL
144 */
145 int vpx_memory_tracker_set_log_func(void *userdata,
146 void(*logfunc)(void *userdata,
147 const char *fmt, va_list ar gs));
148
149 /* Wrappers to standard library functions. */
150 typedef void *(* mem_track_malloc_func)(size_t);
151 typedef void *(* mem_track_calloc_func)(size_t, size_t);
152 typedef void *(* mem_track_realloc_func)(void *, size_t);
153 typedef void (* mem_track_free_func)(void *);
154 typedef void *(* mem_track_memcpy_func)(void *, const void *, size_t);
155 typedef void *(* mem_track_memset_func)(void *, int, size_t);
156 typedef void *(* mem_track_memmove_func)(void *, const void *, size_t);
157
158 /*
159 vpx_memory_tracker_set_functions
160
161 Sets the function pointers for the standard library functions.
162
163 Return:
164 0: on success
165 -1: if the use global function pointers is not set.
166 */
167 int vpx_memory_tracker_set_functions(mem_track_malloc_func g_malloc_l
168 , mem_track_calloc_func g_calloc_l
169 , mem_track_realloc_func g_realloc_l
170 , mem_track_free_func g_free_l
171 , mem_track_memcpy_func g_memcpy_l
172 , mem_track_memset_func g_memset_l
173 , mem_track_memmove_func g_memmove_l);
174
175 #if defined(__cplusplus)
176 }
177 #endif
178
179 #endif // VPX_MEM_INCLUDE_VPX_MEM_TRACKER_H_
OLDNEW
« no previous file with comments | « source/libvpx/vpx_mem/include/vpx_mem_intrnl.h ('k') | source/libvpx/vpx_mem/memory_manager/hmm_alloc.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698