// -*- mode: c++; c-file-style: "k&r"; c-basic-offset: 4 -*- // vim: set ts=4 sw=4: /*********************************************************************** * * tracer.h: * latency tracing functions * **********************************************************************/ #ifndef _LIB_TRACER_H_ #define _LIB_TRACER_H_ #include <map> #include <string> #include <sys/time.h> /* Trace details of an individual type of request. */ typedef struct Request_Trace { bool is_tracing; uint64_t start_time; uint8_t curr_stage; uint8_t max_stage; uint32_t stage[16]; uint32_t n_traces; } Request_Trace; /* Mapping of names to request trace data structure. */ static std::map<std::string, Request_Trace *> trace_map; void Trace_Init(const std::string &name, Request_Trace *trace); void Trace_Flush(const std::string &name); void Trace_Start(const std::string &name); void Trace_Save(const std::string &name, const uint32_t index = 0); void Trace_Stop(const std::string &name); #endif // _LIB_TRACER_H_