mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2024-11-23 01:49:53 +03:00
90 lines
2.2 KiB
C
90 lines
2.2 KiB
C
// SoftEther VPN Source Code - Developer Edition Master Branch
|
|
// Mayaqua Kernel
|
|
|
|
|
|
// Tracking.h
|
|
// Header of Tracking.c
|
|
|
|
#ifndef TRACKING_H
|
|
#define TRACKING_H
|
|
|
|
#include "MayaType.h"
|
|
|
|
// The number of array
|
|
#define TRACKING_NUM_ARRAY 1048576
|
|
|
|
// Hash from an pointer to an array index
|
|
#define TRACKING_HASH(p) (UINT)(((((UINT64)(p)) / (UINT64)(sizeof(void *))) % ((UINT64)TRACKING_NUM_ARRAY)))
|
|
|
|
// Call stack
|
|
struct CALLSTACK_DATA
|
|
{
|
|
bool symbol_cache;
|
|
UINT64 offset, disp;
|
|
char *name;
|
|
struct CALLSTACK_DATA *next;
|
|
char filename[MAX_PATH];
|
|
UINT line;
|
|
};
|
|
|
|
// Object
|
|
struct TRACKING_OBJECT
|
|
{
|
|
UINT Id;
|
|
char *Name;
|
|
UINT64 Address;
|
|
UINT Size;
|
|
UINT64 CreatedDate;
|
|
CALLSTACK_DATA *CallStack;
|
|
char FileName[MAX_PATH];
|
|
UINT LineNumber;
|
|
};
|
|
|
|
// Usage of the memory
|
|
struct MEMORY_STATUS
|
|
{
|
|
UINT MemoryBlocksNum;
|
|
UINT MemorySize;
|
|
};
|
|
|
|
// Tracking list
|
|
struct TRACKING_LIST
|
|
{
|
|
struct TRACKING_LIST *Next;
|
|
struct TRACKING_OBJECT *Object;
|
|
};
|
|
|
|
CALLSTACK_DATA *GetCallStack();
|
|
bool GetCallStackSymbolInfo(CALLSTACK_DATA *s);
|
|
void FreeCallStack(CALLSTACK_DATA *s);
|
|
CALLSTACK_DATA *WalkDownCallStack(CALLSTACK_DATA *s, UINT num);
|
|
void GetCallStackStr(char *str, UINT size, CALLSTACK_DATA *s);
|
|
void PrintCallStack(CALLSTACK_DATA *s);
|
|
void InitTracking();
|
|
void FreeTracking();
|
|
int CompareTrackingObject(const void *p1, const void *p2);
|
|
void LockTrackingList();
|
|
void UnlockTrackingList();
|
|
void InsertTrackingList(TRACKING_OBJECT *o);
|
|
void DeleteTrackingList(TRACKING_OBJECT *o, bool free_object_memory);
|
|
TRACKING_OBJECT *SearchTrackingList(UINT64 Address);
|
|
|
|
void TrackNewObj(UINT64 addr, char *name, UINT size);
|
|
void TrackGetObjSymbolInfo(TRACKING_OBJECT *o);
|
|
void TrackDeleteObj(UINT64 addr);
|
|
void TrackChangeObjSize(UINT64 addr, UINT size, UINT64 new_addr);
|
|
|
|
void GetMemoryStatus(MEMORY_STATUS *status);
|
|
void PrintMemoryStatus();
|
|
void MemoryDebugMenu();
|
|
int SortObjectView(void *p1, void *p2);
|
|
void DebugPrintAllObjects();
|
|
void DebugPrintCommandList();
|
|
void PrintObjectList(TRACKING_OBJECT *o);
|
|
void PrintObjectInfo(TRACKING_OBJECT *o);
|
|
void DebugPrintObjectInfo(UINT id);
|
|
|
|
bool IsTrackingEnabled();
|
|
|
|
#endif // TRACKING_H
|