CCTLib
Calling-context and data-object attribution library for Intel Pin
RedSpyAnalysis< AccessLen, bufferOffset > Struct Template Reference
+ Collaboration diagram for RedSpyAnalysis< AccessLen, bufferOffset >:

Public Member Functions

return memcmp (avPair->value+startOffset,(void **)(avPair->address)+startOffset, length)
 
 switch (AccessLen)
 
 switch (AccessLen)
 
 if (isRedundantRead)
 
 switch (AccessLen)
 
 switch (AccessLen)
 
 if (isRedundantWrite)
 
 if (isApprox)
 
 if (AccessLen >=32)
 
else if (AccessLen==16)
 
else if (AccessLen==10)
 
 if (isRedundantWrite)
 

Static Public Member Functions

static __attribute__ ((always_inline)) bool IsPartialWriteRedundant(size_t startOffset
 
static __attribute__ ((always_inline)) bool IsWriteRedundant(void *&addr
 
static __attribute__ ((always_inline)) VOID RecordNByteValueBeforeWrite(void *addr
 
static __attribute__ ((always_inline)) VOID CheckNByteValueAfterWrite(THREADID threadId)
 
static __attribute__ ((always_inline)) bool IsReadRedundant(void *addr
 
static __attribute__ ((always_inline)) VOID CheckNByteValueAfterRead(void *addr
 
static __attribute__ ((always_inline)) bool IsWriteRedundant(void *&addr
 
static __attribute__ ((always_inline)) VOID RecordNByteValueBeforeWrite(void *addr
 
static __attribute__ ((always_inline)) VOID CheckNByteValueAfterWrite(uint32_t opaqueHandle
 
static __attribute__ ((always_inline)) bool IsWriteRedundant(void *&addr
 
static __attribute__ ((always_inline)) VOID RecordNByteValueBeforeWrite(void *addr
 
static __attribute__ ((always_inline)) VOID CheckNByteValueAfterWrite(uint32_t opaqueHandle
 

Public Attributes

static size_t length
 
static size_t THREADID threadId
 
AddrValPairavPair = &tData->buffer[bufferOffset]
 
static THREADID threadId
 
 addr = avPair->address
 
avPair address = addr
 
static uint8_t * prev
 
static uint32_t opaqueHandle
 
static uint32_t THREADID threadId
 
ContextHandle_t curCtxtHandle = GetContextHandle(threadId, opaqueHandle)
 
tuple< uint8_t[SHADOW_PAGE_SIZE], ContextHandle_t[SHADOW_PAGE_SIZE]> & t = sm.GetOrCreateShadowBaseAddress((uint64_t)addr)
 
ContextHandle_t *__restrict__ prevIP = &(get<1>(t)[PAGE_OFFSET((uint64_t)addr)])
 
uint8_t * prevValue = &(get<0>(t)[PAGE_OFFSET((uint64_t)addr)])
 
bool isRedundantRead = IsReadRedundant(addr, prevValue)
 
const bool isAccessWithinPageBoundary = IS_ACCESS_WITHIN_PAGE_BOUNDARY((uint64_t)addr, AccessLen)
 
tData bytesWritten = AccessLen
 
void * addr
 
bool isRedundantWrite = IsWriteRedundant(addr, threadId)
 
uint8_t * status = GetOrCreateShadowBaseAddress((uint64_t)addr)
 
 else
 
return false
 
else *T * avPair = *(static_cast<T*>(addr))
 

Detailed Description

template<uint16_t AccessLen, uint32_t bufferOffset>
struct RedSpyAnalysis< AccessLen, bufferOffset >

Definition at line 225 of file cache_client.cpp.

Member Function Documentation

◆ __attribute__() [1/12]

template<uint16_t AccessLen, uint32_t bufferOffset>
static RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__ ( (always_inline)  )
static

References ClientGetTLS().

◆ __attribute__() [2/12]

template<uint16_t AccessLen, uint32_t bufferOffset>
static RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__ ( (always_inline)  )
static

References __attribute__, and delta.

◆ __attribute__() [3/12]

template<uint16_t AccessLen, uint32_t bufferOffset>
static RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__ ( (always_inline)  ) &
static

◆ __attribute__() [4/12]

template<uint16_t AccessLen, uint32_t bufferOffset>
static RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__ ( (always_inline)  ) &
static

◆ __attribute__() [5/12]

template<uint16_t AccessLen, uint32_t bufferOffset>
static RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__ ( (always_inline)  ) &
static

◆ __attribute__() [6/12]

template<uint16_t AccessLen, uint32_t bufferOffset>
static RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__ ( (always_inline)  )
static

References ClientGetTLS().

◆ __attribute__() [7/12]

template<uint16_t AccessLen, uint32_t bufferOffset>
static RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__ ( (always_inline)  )
inlinestatic

◆ __attribute__() [8/12]

template<uint16_t AccessLen, uint32_t bufferOffset>
static RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__ ( (always_inline)  )
static

References Sample_flag.

◆ __attribute__() [9/12]

template<uint16_t AccessLen, uint32_t bufferOffset>
static RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__ ( (always_inline)  )
static

◆ __attribute__() [10/12]

template<uint16_t AccessLen, uint32_t bufferOffset>
static RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__ ( (always_inline)  )
static

◆ __attribute__() [11/12]

template<uint16_t AccessLen, uint32_t bufferOffset>
static RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__ ( (always_inline)  )
static

◆ __attribute__() [12/12]

template<uint16_t AccessLen, uint32_t bufferOffset>
static RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__ ( (always_inline)  )
static

◆ if() [1/7]

template<uint16_t AccessLen, uint32_t bufferOffset>
RedSpyAnalysis< AccessLen, bufferOffset >::if ( AccessLen >=  32)
inline

Definition at line 1790 of file redspy_temporal_client.cpp.

References AddrValPair::value.

◆ if() [2/7]

template<uint16_t AccessLen, uint32_t bufferOffset>
else RedSpyAnalysis< AccessLen, bufferOffset >::if ( AccessLen  = = 10)
inline

Definition at line 1808 of file redspy_temporal_client.cpp.

◆ if() [3/7]

template<uint16_t AccessLen, uint32_t bufferOffset>
else RedSpyAnalysis< AccessLen, bufferOffset >::if ( AccessLen  = = 16)
inline

Definition at line 1799 of file redspy_temporal_client.cpp.

◆ if() [4/7]

template<uint16_t AccessLen, uint32_t bufferOffset>
RedSpyAnalysis< AccessLen, bufferOffset >::if ( isApprox  )
inline

◆ if() [5/7]

template<uint16_t AccessLen, uint32_t bufferOffset>
RedSpyAnalysis< AccessLen, bufferOffset >::if ( isRedundantRead  )
inline

◆ if() [6/7]

template<uint16_t AccessLen, uint32_t bufferOffset>
RedSpyAnalysis< AccessLen, bufferOffset >::if ( isRedundantWrite  )
inline

◆ if() [7/7]

template<uint16_t AccessLen, uint32_t bufferOffset>
RedSpyAnalysis< AccessLen, bufferOffset >::if ( isRedundantWrite  )
inline

◆ memcmp()

template<uint16_t AccessLen, uint32_t bufferOffset>
return RedSpyAnalysis< AccessLen, bufferOffset >::memcmp ( avPair->value startOffset,
(void **)(avPair->address)+  startOffset,
length   
)

◆ switch() [1/4]

template<uint16_t AccessLen, uint32_t bufferOffset>
RedSpyAnalysis< AccessLen, bufferOffset >::switch ( AccessLen  )
inline

Definition at line 236 of file cache_client.cpp.

References AddrValPair::address, and AddrValPair::value.

◆ switch() [2/4]

template<uint16_t AccessLen, uint32_t bufferOffset>
RedSpyAnalysis< AccessLen, bufferOffset >::switch ( AccessLen  )
inline

Definition at line 253 of file cache_client.cpp.

References AddrValPair::value.

◆ switch() [3/4]

template<uint16_t AccessLen, uint32_t bufferOffset>
RedSpyAnalysis< AccessLen, bufferOffset >::switch ( AccessLen  )
inline

Definition at line 223 of file redspy_client.cpp.

References AddrValPair::address, and AddrValPair::value.

◆ switch() [4/4]

template<uint16_t AccessLen, uint32_t bufferOffset>
RedSpyAnalysis< AccessLen, bufferOffset >::switch ( AccessLen  )
inline

Definition at line 260 of file redspy_client.cpp.

References AddrValPair::value.

Member Data Documentation

◆ addr [1/2]

template<uint16_t AccessLen, uint32_t bufferOffset>
void * RedSpyAnalysis< AccessLen, bufferOffset >::addr = avPair->address

Definition at line 235 of file cache_client.cpp.

◆ addr [2/2]

template<uint16_t AccessLen, uint32_t bufferOffset>
void* RedSpyAnalysis< AccessLen, bufferOffset >::addr

Definition at line 281 of file redspy_client.cpp.

◆ address

template<uint16_t AccessLen, uint32_t bufferOffset>
avPair RedSpyAnalysis< AccessLen, bufferOffset >::address = addr

Definition at line 252 of file cache_client.cpp.

◆ avPair [1/2]

template<uint16_t AccessLen, uint32_t bufferOffset>
AddrValPair * RedSpyAnalysis< AccessLen, bufferOffset >::avPair = &tData->buffer[bufferOffset]

Definition at line 228 of file cache_client.cpp.

◆ avPair [2/2]

template<uint16_t AccessLen, uint32_t bufferOffset>
else* T* RedSpyAnalysis< AccessLen, bufferOffset >::avPair = *(static_cast<T*>(addr))

Definition at line 1811 of file redspy_temporal_client.cpp.

◆ bytesWritten

template<uint16_t AccessLen, uint32_t bufferOffset>
tData RedSpyAnalysis< AccessLen, bufferOffset >::bytesWritten = AccessLen

Definition at line 255 of file redspy_client.cpp.

◆ curCtxtHandle

template<uint16_t AccessLen, uint32_t bufferOffset>
ContextHandle_t RedSpyAnalysis< AccessLen, bufferOffset >::curCtxtHandle = GetContextHandle(threadId, opaqueHandle)

Definition at line 764 of file loadspy_client.cpp.

◆ else

template<uint16_t AccessLen, uint32_t bufferOffset>
RedSpyAnalysis< AccessLen, bufferOffset >::else
Initial value:
{
return *((T*)(&avPair->value)) == *(static_cast<T*>(avPair->address))
uint8_t value[MAX_WRITE_OP_LENGTH]
void * address
AddrValPair * avPair

Definition at line 1778 of file redspy_temporal_client.cpp.

◆ false

template<uint16_t AccessLen, uint32_t bufferOffset>
return RedSpyAnalysis< AccessLen, bufferOffset >::false

Definition at line 1781 of file redspy_temporal_client.cpp.

◆ isAccessWithinPageBoundary

template<uint16_t AccessLen, uint32_t bufferOffset>
const bool RedSpyAnalysis< AccessLen, bufferOffset >::isAccessWithinPageBoundary = IS_ACCESS_WITHIN_PAGE_BOUNDARY((uint64_t)addr, AccessLen)

Definition at line 771 of file loadspy_client.cpp.

◆ isRedundantRead

template<uint16_t AccessLen, uint32_t bufferOffset>
bool RedSpyAnalysis< AccessLen, bufferOffset >::isRedundantRead = IsReadRedundant(addr, prevValue)

Definition at line 769 of file loadspy_client.cpp.

◆ isRedundantWrite

template<uint16_t AccessLen, uint32_t bufferOffset>
bool RedSpyAnalysis< AccessLen, bufferOffset >::isRedundantWrite = IsWriteRedundant(addr, threadId)

Definition at line 282 of file redspy_client.cpp.

◆ length

template<uint16_t AccessLen, uint32_t bufferOffset>
size_t RedSpyAnalysis< AccessLen, bufferOffset >::length

Definition at line 226 of file cache_client.cpp.

◆ opaqueHandle

template<uint16_t AccessLen, uint32_t bufferOffset>
uint32_t RedSpyAnalysis< AccessLen, bufferOffset >::opaqueHandle

Definition at line 761 of file loadspy_client.cpp.

◆ prev

template<uint16_t AccessLen, uint32_t bufferOffset>
uint8_t* RedSpyAnalysis< AccessLen, bufferOffset >::prev

Definition at line 649 of file loadspy_client.cpp.

◆ prevIP

template<uint16_t AccessLen, uint32_t bufferOffset>
ContextHandle_t *__restrict__ RedSpyAnalysis< AccessLen, bufferOffset >::prevIP = &(get<1>(t)[PAGE_OFFSET((uint64_t)addr)])

Definition at line 766 of file loadspy_client.cpp.

◆ prevValue

template<uint16_t AccessLen, uint32_t bufferOffset>
uint8_t* RedSpyAnalysis< AccessLen, bufferOffset >::prevValue = &(get<0>(t)[PAGE_OFFSET((uint64_t)addr)])

Definition at line 767 of file loadspy_client.cpp.

◆ status

template<uint16_t AccessLen, uint32_t bufferOffset>
uint8_t * RedSpyAnalysis< AccessLen, bufferOffset >::status = GetOrCreateShadowBaseAddress((uint64_t)addr)

Definition at line 287 of file redspy_client.cpp.

◆ t

template<uint16_t AccessLen, uint32_t bufferOffset>
tuple<uint8_t[SHADOW_PAGE_SIZE], ContextHandle_t[SHADOW_PAGE_SIZE]>& RedSpyAnalysis< AccessLen, bufferOffset >::t = sm.GetOrCreateShadowBaseAddress((uint64_t)addr)

Definition at line 765 of file loadspy_client.cpp.

◆ threadId [1/3]

template<uint16_t AccessLen, uint32_t bufferOffset>
static THREADID RedSpyAnalysis< AccessLen, bufferOffset >::threadId
Initial value:
{
RedSpyThreadData * ClientGetTLS(const THREADID threadId)
static size_t THREADID threadId

Definition at line 226 of file cache_client.cpp.

◆ threadId [2/3]

template<uint16_t AccessLen, uint32_t bufferOffset>
THREADID RedSpyAnalysis< AccessLen, bufferOffset >::threadId
Initial value:

Definition at line 232 of file cache_client.cpp.

◆ threadId [3/3]

template<uint16_t AccessLen, uint32_t bufferOffset>
uint32_t THREADID RedSpyAnalysis< AccessLen, bufferOffset >::threadId
Initial value:

Definition at line 761 of file loadspy_client.cpp.


The documentation for this struct was generated from the following files: