git/trace2/tr2_sid.c

#include "git-compat-util.h"
#include "hex.h"
#include "strbuf.h"
#include "trace2/tr2_tbuf.h"
#include "trace2/tr2_sid.h"

#define TR2_ENVVAR_PARENT_SID

static struct strbuf tr2sid_buf =;
static int tr2sid_nr_git_parents;

/*
 * Compute the final component of the SID representing the current process.
 * This should uniquely identify the process and be a valid filename (to
 * allow writing trace2 data to per-process files).  It should also be fixed
 * length for possible use as a database key.
 *
 * "<yyyymmdd>T<hhmmss>.<fraction>Z-<host>-<process>"
 *
 * where <host> is a 9 character string:
 *    "H<first_8_chars_of_sha1_of_hostname>"
 *    "Localhost" when no hostname.
 *
 * where <process> is a 9 character string containing the least significant
 * 32 bits in the process-id.
 *    "P<pid>"
 * (This is an abribrary choice.  On most systems pid_t is a 32 bit value,
 * so limit doesn't matter.  On larger systems, a truncated value is fine
 * for our purposes here.)
 */
static void tr2_sid_append_my_sid_component(void)
{}

/*
 * Compute a "unique" session id (SID) for the current process.  This allows
 * all events from this process to have a single label (much like a PID).
 *
 * Export this into our environment so that all child processes inherit it.
 *
 * If we were started by another git instance, use our parent's SID as a
 * prefix.  (This lets us track parent/child relationships even if there
 * is an intermediate shell process.)
 *
 * Additionally, count the number of nested git processes.
 */
static void tr2_sid_compute(void)
{}

const char *tr2_sid_get(void)
{}

int tr2_sid_depth(void)
{}

void tr2_sid_release(void)
{}