tlds
Transactional Operations for Linked Data Structures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
bmharness.hpp File Reference
#include <cstdlib>
#include <iostream>
#include <signal.h>
#include <pthread.h>
#include <api/api.hpp>
#include <common/platform.hpp>
#include <common/locks.hpp>
#include "bmconfig.hpp"
Include dependency graph for bmharness.hpp:

Go to the source code of this file.

Functions

Config CFG TM_ALIGN (64)
 
void dump_csv ()
 
void usage ()
 
void parseargs (int argc, char **argv)
 
void nontxnwork ()
 
void catch_SIGALRM (int)
 
void barrier (uint32_t which)
 
void run (uintptr_t id)
 
NOINLINE void * run_wrapper (void *i)
 
int main (int argc, char **argv)
 

Function Documentation

void barrier ( uint32_t  which)

Support a few lightweight barriers

Here is the caller graph for this function:

void catch_SIGALRM ( int  )

Here is the caller graph for this function:

void dump_csv ( )

Print benchmark configuration output

Here is the caller graph for this function:

int main ( int  argc,
char **  argv 
)

Main routine: parse args, set up the TM system, prep the benchmark, run the experiments, verify results, print results, and shut down the system

Here is the call graph for this function:

void nontxnwork ( )

Run some nops between transactions, to simulate some time being spent on computation

Here is the call graph for this function:

Here is the caller graph for this function:

void parseargs ( int  argc,
char **  argv 
)

Parse command line arguments

Here is the call graph for this function:

Here is the caller graph for this function:

void run ( uintptr_t  id)

Here is the call graph for this function:

Here is the caller graph for this function:

NOINLINE void* run_wrapper ( void *  i)

pthread wrapper for running the experiments

NB: noinline prevents this from getting inlined into main (and prevents run from being inlined there as well. This eliminates an _ITM_initializeProcess ordering problem if there's a transaction lexically scoped inside of main.

Here is the call graph for this function:

Here is the caller graph for this function:

Config CFG TM_ALIGN ( 64  )
void usage ( )

Print usage

Here is the caller graph for this function: