[IBBUS] remove duplicate FDO extension fields [p_port_mgr,p_iou_mgr] and use same...
[mirror/winof/.git] / core / complib / cl_memtrack.h
1 /*\r
2  * Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.\r
3  * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. \r
4  *\r
5  * This software is available to you under the OpenIB.org BSD license\r
6  * below:\r
7  *\r
8  *     Redistribution and use in source and binary forms, with or\r
9  *     without modification, are permitted provided that the following\r
10  *     conditions are met:\r
11  *\r
12  *      - Redistributions of source code must retain the above\r
13  *        copyright notice, this list of conditions and the following\r
14  *        disclaimer.\r
15  *\r
16  *      - Redistributions in binary form must reproduce the above\r
17  *        copyright notice, this list of conditions and the following\r
18  *        disclaimer in the documentation and/or other materials\r
19  *        provided with the distribution.\r
20  *\r
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
22  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
23  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
24  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
25  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
26  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
27  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
28  * SOFTWARE.\r
29  *\r
30  * $Id$\r
31  */\r
32 \r
33 \r
34 /*\r
35  * Abstract:\r
36  *      Definitions of Data-Structures for memory allocation tracking functions.\r
37  *\r
38  * Environment:\r
39  *      All\r
40  */\r
41 \r
42 \r
43 #ifndef _CL_MEMTRACK_H_\r
44 #define _CL_MEMTRACK_H_\r
45 \r
46 \r
47 #include <complib/cl_types.h>\r
48 #include <complib/cl_memory.h>\r
49 #include <complib/cl_debug.h>\r
50 #include <complib/cl_qmap.h>\r
51 #include <complib/cl_spinlock.h>\r
52 \r
53 \r
54 /* Structure to track memory allocations. */\r
55 typedef struct _cl_mem_tracker\r
56 {\r
57         /* List for tracking memory allocations. */\r
58         cl_qmap_t               alloc_map;\r
59 \r
60         /* Lock for synchronization. */\r
61         cl_spinlock_t   lock;\r
62 \r
63         /* List to manage free headers. */\r
64         cl_qlist_t              free_hdr_list;\r
65 \r
66 } cl_mem_tracker_t;\r
67 \r
68 \r
69 #define FILE_NAME_LENGTH        64\r
70 \r
71 \r
72 /* Header for all memory allocations. */\r
73 typedef struct _cl_malloc_hdr\r
74 {\r
75         cl_map_item_t           map_item;\r
76         void                            *p_mem;\r
77         char                            file_name[FILE_NAME_LENGTH];\r
78         int32_t                         line_num;\r
79 \r
80 } cl_malloc_hdr_t;\r
81 \r
82 \r
83 extern cl_mem_tracker_t         *gp_mem_tracker;\r
84 \r
85 #endif  /* _CL_MEMTRACK_H_ */\r
86 \r