CCTLib
Calling-context and data-object attribution library for Intel Pin
shadow_memory.H File Reference
#include <stdint.h>
#include <atomic>
#include <stdlib.h>
#include <sys/mman.h>
#include <tuple>
+ Include dependency graph for shadow_memory.H:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  ConcurrentShadowMemory< Ts >
 
class  ShadowMemory< Ts >
 

Macros

#define PAGE_OFFSET_BITS   (16LL)
 
#define PAGE_OFFSET(addr)   (addr & 0xFFFF)
 
#define PAGE_OFFSET_MASK   (0xFFFF)
 
#define SHADOW_PAGE_SIZE   (1 << PAGE_OFFSET_BITS)
 
#define PTR_SIZE   (sizeof(struct Status*))
 
#define LEVEL_1_PAGE_TABLE_BITS   (20)
 
#define LEVEL_1_PAGE_TABLE_ENTRIES   (1 << LEVEL_1_PAGE_TABLE_BITS)
 
#define LEVEL_1_PAGE_TABLE_SIZE   (LEVEL_1_PAGE_TABLE_ENTRIES * PTR_SIZE)
 
#define LEVEL_2_PAGE_TABLE_BITS   (12)
 
#define LEVEL_2_PAGE_TABLE_ENTRIES   (1 << LEVEL_2_PAGE_TABLE_BITS)
 
#define LEVEL_2_PAGE_TABLE_SIZE   (LEVEL_2_PAGE_TABLE_ENTRIES * PTR_SIZE)
 
#define LEVEL_1_PAGE_TABLE_SLOT(addr)   ((((uint64_t)addr) >> (LEVEL_2_PAGE_TABLE_BITS + PAGE_OFFSET_BITS)) & 0xfffff)
 
#define LEVEL_2_PAGE_TABLE_SLOT(addr)   ((((uint64_t)addr) >> (PAGE_OFFSET_BITS)) & 0xFFF)
 
#define SHADOW_STRUCT_SIZE   (sizeof(T))
 
#define PIN_ExitProcess(a)   exit(a)
 

Typedefs

template<class... Args>
using ShadowTuple = std::tuple< Args[SHADOW_PAGE_SIZE]... >
 

Functions

template<int I, typename... Ts>
 __attribute__ ((always_inline)) typename std
 

Macro Definition Documentation

◆ LEVEL_1_PAGE_TABLE_BITS

#define LEVEL_1_PAGE_TABLE_BITS   (20)

Definition at line 21 of file shadow_memory.H.

◆ LEVEL_1_PAGE_TABLE_ENTRIES

#define LEVEL_1_PAGE_TABLE_ENTRIES   (1 << LEVEL_1_PAGE_TABLE_BITS)

Definition at line 22 of file shadow_memory.H.

◆ LEVEL_1_PAGE_TABLE_SIZE

#define LEVEL_1_PAGE_TABLE_SIZE   (LEVEL_1_PAGE_TABLE_ENTRIES * PTR_SIZE)

Definition at line 23 of file shadow_memory.H.

◆ LEVEL_1_PAGE_TABLE_SLOT

#define LEVEL_1_PAGE_TABLE_SLOT (   addr)    ((((uint64_t)addr) >> (LEVEL_2_PAGE_TABLE_BITS + PAGE_OFFSET_BITS)) & 0xfffff)

Definition at line 29 of file shadow_memory.H.

◆ LEVEL_2_PAGE_TABLE_BITS

#define LEVEL_2_PAGE_TABLE_BITS   (12)

Definition at line 25 of file shadow_memory.H.

◆ LEVEL_2_PAGE_TABLE_ENTRIES

#define LEVEL_2_PAGE_TABLE_ENTRIES   (1 << LEVEL_2_PAGE_TABLE_BITS)

Definition at line 26 of file shadow_memory.H.

◆ LEVEL_2_PAGE_TABLE_SIZE

#define LEVEL_2_PAGE_TABLE_SIZE   (LEVEL_2_PAGE_TABLE_ENTRIES * PTR_SIZE)

Definition at line 27 of file shadow_memory.H.

◆ LEVEL_2_PAGE_TABLE_SLOT

#define LEVEL_2_PAGE_TABLE_SLOT (   addr)    ((((uint64_t)addr) >> (PAGE_OFFSET_BITS)) & 0xFFF)

Definition at line 30 of file shadow_memory.H.

◆ PAGE_OFFSET

#define PAGE_OFFSET (   addr)    (addr & 0xFFFF)

Definition at line 15 of file shadow_memory.H.

◆ PAGE_OFFSET_BITS

#define PAGE_OFFSET_BITS   (16LL)

Definition at line 14 of file shadow_memory.H.

◆ PAGE_OFFSET_MASK

#define PAGE_OFFSET_MASK   (0xFFFF)

Definition at line 16 of file shadow_memory.H.

◆ PIN_ExitProcess

#define PIN_ExitProcess (   a)    exit(a)

Definition at line 35 of file shadow_memory.H.

◆ PTR_SIZE

#define PTR_SIZE   (sizeof(struct Status*))

Definition at line 20 of file shadow_memory.H.

◆ SHADOW_PAGE_SIZE

#define SHADOW_PAGE_SIZE   (1 << PAGE_OFFSET_BITS)

Definition at line 17 of file shadow_memory.H.

◆ SHADOW_STRUCT_SIZE

#define SHADOW_STRUCT_SIZE   (sizeof(T))

Definition at line 32 of file shadow_memory.H.

Typedef Documentation

◆ ShadowTuple

template<class... Args>
using ShadowTuple = std::tuple<Args[SHADOW_PAGE_SIZE]...>

Definition at line 56 of file shadow_memory.H.

Function Documentation

◆ __attribute__()

template<int I, typename... Ts>
__attribute__ ( (always_inline)  )
inline

Definition at line 140 of file shadow_memory.H.

References address, PAGE_OFFSET, and PinCCTLib::sm.