![]() |
ATLAS Offline Software
|
#include <stddef.h>Go to the source code of this file.
Classes | |
| struct | StackHandle_ |
| Unique reference for a stack trace. More... | |
| struct | StackNode_ |
| Node used to store trace data. More... | |
| struct | StackCursor_ |
| Cursor object used to move between nodes of the tree. More... | |
Macros | |
| #define | STACK_ELEMENT_BEGIN_P(element) (*((element)-1) == 0) |
| Is the element pointed to by ELEMENT the first one in its node? More... | |
| #define | STACK_ELEMENT_NODE(element) ((StackNode*)((char*)((element)-1) - offsetof(StackNode, p))) |
| ELEMENT should be a pointer to the first element in a node. More... | |
| #define | STACK_ELEMENT_NODEPARENT(element) (STACK_ELEMENT_NODE(element)->parent) |
| ELEMENT should be a pointer to the first element in a node. More... | |
| #define | STACK_NODE_NTH_ELEMENT(node, n) ((node)->p[n+1]) |
| Return the Nth element stored in a node. More... | |
| #define | STACK_NODE_NTH_CHILD(node, n) (*(StackNode**)&((node)->p[n+1+(node)->nelts])) |
| Return a pointer to the Nth child stored in a node. More... | |
| #define | STACK_ELEMENT_NONNULL(elt) ((elt) ? (elt) : (StackElement)1) |
| We can't store a null element in a trace; fold them to 1. More... | |
| #define | STACK_NODE_SET_ELEMENT(node, n, elt) do{ (node)->p[n+1] = STACK_ELEMENT_NONNULL(elt); } while(0) |
| Set the Nth element stored in a node. More... | |
| #define | STACK_HANDLE_ELEMENT(handle) ((handle)->element) |
| Return a pointer to the first element in the handle's trace. More... | |
| #define | STACK_HANDLE_ADDR(handle) STACK_ELEMENT_ADDR(STACK_HANDLE_ELEMENT(handle)) |
| Return the first element in the handle's trace. More... | |
| #define | STACK_HANDLE_PARENT(handle) STACK_ELEMENT_PARENT(STACK_HANDLE_ELEMENT(handle)) |
| Return a pointer to the second in the handle's trace. More... | |
| #define | STACK_HANDLE_IS_ROOT(handle) STACK_ELEMENT_IS_ROOT(STACK_HANDLE_ELEMENT(handle)) |
| Test to see if a handle represents the root of the call tree. More... | |
| #define | STACK_ELEMENT_ADDR(element) (*(element)) |
| Given a pointer to an element, return the element. More... | |
| #define | STACK_ELEMENT_PARENT(element) hhh_stack_element_parent(element) |
| Given a pointer to an element, return a pointer to the element's parent. More... | |
| #define | STACK_ELEMENT_IS_ROOT(element) (*(element) == 0) |
| Test if an element is the root of trace. More... | |
| #define | STACK_CURSOR_ELEMENT(cursor) ((cursor).elt) |
| Return the address of the element referenced by the cursor. More... | |
| #define | STACK_CURSOR_ELEMENT_ADDR(cursor) STACK_ELEMENT_ADDR(STACK_CURSOR_ELEMENT(cursor)) |
| Return the element referenced by the cursor. More... | |
| #define | STACK_CURSOR_INIT_ROOT(cursor) hhh_Cursor_initRoot(&cursor) |
| Initialize a cursor to point at the root of the tree. More... | |
| #define | STACK_CURSOR_INIT_HANDLE(cursor, handle) hhh_Cursor_initHandle(&cursor, handle) |
| Initialize a cursor from a handle. More... | |
| #define | STACK_CURSOR_IS_ROOT(cursor) STACK_ELEMENT_IS_ROOT(STACK_CURSOR_ELEMENT(cursor)) |
| Does the cursor reference the root of the tree? More... | |
| #define | STACK_CURSOR_PARENT(cursor) hhh_Cursor_parent(&cursor) |
| Move to the cursor to the parent node. More... | |
| #define | STACK_CURSOR_NCHILDREN(cursor) hhh_Cursor_nchildren(&cursor) |
| Return the number of children. More... | |
| #define | STACK_CURSOR_CHILD(cursor, n) hhh_Cursor_child(&cursor, n) |
| Move to the cursor to the nth child. More... | |
| #define | STACK_CURSOR_NEXT(cursor) hhh_Cursor_next(&cursor) |
| Visit next element in depth-first order. More... | |
Typedefs | |
| typedef void * | StackElement |
| One element of a stack trace. More... | |
| typedef struct StackHandle_ | StackHandle |
| typedef struct StackNode_ | StackNode |
| typedef struct StackCursor_ | StackCursor |
Functions | |
| StackHandle * | hhh_stackstash_store (const StackElement *addresses, int n_addresses) |
| Return the handle for a stack trace. More... | |
| StackElement * | hhh_stack_element_parent (StackElement *elt) |
| Function interface to iterate over a trace. More... | |
| void | hhh_Cursor_initRoot (StackCursor *cursor) |
| Initialize a cursor to point at the root of the tree. More... | |
| void | hhh_Cursor_initHandle (StackCursor *cursor, StackHandle *handle) |
| Initialize a cursor from a handle. More... | |
| void | hhh_Cursor_parent (StackCursor *cursor) |
| Move to the cursor to the parent node. More... | |
| void | hhh_Cursor_child (StackCursor *cursor, int n) |
| Move to the cursor to the nth child. More... | |
| int | hhh_Cursor_nchildren (StackCursor *cursor) |
| Return the number of children. More... | |
| void | hhh_Cursor_next (StackCursor *cursor) |
| Visit next element in depth-first order. More... | |
| #define STACK_CURSOR_CHILD | ( | cursor, | |
| n | |||
| ) | hhh_Cursor_child(&cursor, n) |
Move to the cursor to the nth child.
Definition at line 253 of file stackstash.h.
| #define STACK_CURSOR_ELEMENT | ( | cursor | ) | ((cursor).elt) |
Return the address of the element referenced by the cursor.
Definition at line 232 of file stackstash.h.
| #define STACK_CURSOR_ELEMENT_ADDR | ( | cursor | ) | STACK_ELEMENT_ADDR(STACK_CURSOR_ELEMENT(cursor)) |
Return the element referenced by the cursor.
Definition at line 235 of file stackstash.h.
| #define STACK_CURSOR_INIT_HANDLE | ( | cursor, | |
| handle | |||
| ) | hhh_Cursor_initHandle(&cursor, handle) |
Initialize a cursor from a handle.
Definition at line 241 of file stackstash.h.
| #define STACK_CURSOR_INIT_ROOT | ( | cursor | ) | hhh_Cursor_initRoot(&cursor) |
Initialize a cursor to point at the root of the tree.
Definition at line 238 of file stackstash.h.
| #define STACK_CURSOR_IS_ROOT | ( | cursor | ) | STACK_ELEMENT_IS_ROOT(STACK_CURSOR_ELEMENT(cursor)) |
Does the cursor reference the root of the tree?
Definition at line 244 of file stackstash.h.
| #define STACK_CURSOR_NCHILDREN | ( | cursor | ) | hhh_Cursor_nchildren(&cursor) |
Return the number of children.
Definition at line 250 of file stackstash.h.
| #define STACK_CURSOR_NEXT | ( | cursor | ) | hhh_Cursor_next(&cursor) |
Visit next element in depth-first order.
Definition at line 256 of file stackstash.h.
| #define STACK_CURSOR_PARENT | ( | cursor | ) | hhh_Cursor_parent(&cursor) |
Move to the cursor to the parent node.
Definition at line 247 of file stackstash.h.
| #define STACK_ELEMENT_ADDR | ( | element | ) | (*(element)) |
Given a pointer to an element, return the element.
Definition at line 218 of file stackstash.h.
| #define STACK_ELEMENT_BEGIN_P | ( | element | ) | (*((element)-1) == 0) |
Is the element pointed to by ELEMENT the first one in its node?
Definition at line 165 of file stackstash.h.
| #define STACK_ELEMENT_IS_ROOT | ( | element | ) | (*(element) == 0) |
Test if an element is the root of trace.
Definition at line 225 of file stackstash.h.
ELEMENT should be a pointer to the first element in a node.
Returns a pointer to the node itself.
Definition at line 169 of file stackstash.h.
| #define STACK_ELEMENT_NODEPARENT | ( | element | ) | (STACK_ELEMENT_NODE(element)->parent) |
ELEMENT should be a pointer to the first element in a node.
Returns a pointer to the parent of this node.
Definition at line 174 of file stackstash.h.
| #define STACK_ELEMENT_NONNULL | ( | elt | ) | ((elt) ? (elt) : (StackElement)1) |
We can't store a null element in a trace; fold them to 1.
Definition at line 184 of file stackstash.h.
| #define STACK_ELEMENT_PARENT | ( | element | ) | hhh_stack_element_parent(element) |
Given a pointer to an element, return a pointer to the element's parent.
Gives 0 if element referred to the root.
Definition at line 222 of file stackstash.h.
| #define STACK_HANDLE_ADDR | ( | handle | ) | STACK_ELEMENT_ADDR(STACK_HANDLE_ELEMENT(handle)) |
Return the first element in the handle's trace.
Definition at line 202 of file stackstash.h.
| #define STACK_HANDLE_ELEMENT | ( | handle | ) | ((handle)->element) |
Return a pointer to the first element in the handle's trace.
Definition at line 199 of file stackstash.h.
| #define STACK_HANDLE_IS_ROOT | ( | handle | ) | STACK_ELEMENT_IS_ROOT(STACK_HANDLE_ELEMENT(handle)) |
Test to see if a handle represents the root of the call tree.
Definition at line 210 of file stackstash.h.
| #define STACK_HANDLE_PARENT | ( | handle | ) | STACK_ELEMENT_PARENT(STACK_HANDLE_ELEMENT(handle)) |
Return a pointer to the second in the handle's trace.
Definition at line 206 of file stackstash.h.
Return a pointer to the Nth child stored in a node.
Definition at line 180 of file stackstash.h.
Return the Nth element stored in a node.
Definition at line 177 of file stackstash.h.
| #define STACK_NODE_SET_ELEMENT | ( | node, | |
| n, | |||
| elt | |||
| ) | do{ (node)->p[n+1] = STACK_ELEMENT_NONNULL(elt); } while(0) |
Set the Nth element stored in a node.
Definition at line 187 of file stackstash.h.
| typedef struct StackCursor_ StackCursor |
Definition at line 74 of file stackstash.h.
| typedef void* StackElement |
One element of a stack trace.
Definition at line 74 of file stackstash.h.
| typedef struct StackHandle_ StackHandle |
Definition at line 74 of file stackstash.h.
| typedef struct StackNode_ StackNode |
Definition at line 74 of file stackstash.h.
| void hhh_Cursor_child | ( | StackCursor * | cursor, |
| int | n | ||
| ) |
Move to the cursor to the nth child.
| void hhh_Cursor_initHandle | ( | StackCursor * | cursor, |
| StackHandle * | handle | ||
| ) |
Initialize a cursor from a handle.
| void hhh_Cursor_initRoot | ( | StackCursor * | cursor | ) |
Initialize a cursor to point at the root of the tree.
| int hhh_Cursor_nchildren | ( | StackCursor * | cursor | ) |
Return the number of children.
| void hhh_Cursor_next | ( | StackCursor * | cursor | ) |
Visit next element in depth-first order.
| void hhh_Cursor_parent | ( | StackCursor * | cursor | ) |
Move to the cursor to the parent node.
| StackElement* hhh_stack_element_parent | ( | StackElement * | elt | ) |
Function interface to iterate over a trace.
| elt | Pointer to an element of a trace. |
Returns a pointer to the previous element of the trace (the caller). Returns 0 if we're at the root of the trace.
| StackHandle* hhh_stackstash_store | ( | const StackElement * | addresses, |
| int | n_addresses | ||
| ) |
Return the handle for a stack trace.
| addresses | Stack trace to store. |
| n_addresses | Length of the trace. |
Returns the unique Handle object representing this trace. If this trace has been seen before, the existing Handle object will be returned; otherwise, a new Handle object will be made and returned.
1.8.18