about summary refs log tree commit diff
path: root/third_party/git/trace2/tr2_sid.c
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/trace2/tr2_sid.c')
-rw-r--r--third_party/git/trace2/tr2_sid.c112
1 files changed, 0 insertions, 112 deletions
diff --git a/third_party/git/trace2/tr2_sid.c b/third_party/git/trace2/tr2_sid.c
deleted file mode 100644
index dc6e75ef1315..000000000000
--- a/third_party/git/trace2/tr2_sid.c
+++ /dev/null
@@ -1,112 +0,0 @@
-#include "cache.h"
-#include "trace2/tr2_tbuf.h"
-#include "trace2/tr2_sid.h"
-
-#define TR2_ENVVAR_PARENT_SID "GIT_TRACE2_PARENT_SID"
-
-static struct strbuf tr2sid_buf = STRBUF_INIT;
-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)
-{
-	const struct git_hash_algo *algo = &hash_algos[GIT_HASH_SHA1];
-	struct tr2_tbuf tb_now;
-	git_hash_ctx ctx;
-	pid_t pid = getpid();
-	unsigned char hash[GIT_MAX_RAWSZ + 1];
-	char hex[GIT_MAX_HEXSZ + 1];
-	char hostname[HOST_NAME_MAX + 1];
-
-	tr2_tbuf_utc_datetime(&tb_now);
-	strbuf_addstr(&tr2sid_buf, tb_now.buf);
-
-	strbuf_addch(&tr2sid_buf, '-');
-	if (xgethostname(hostname, sizeof(hostname)))
-		strbuf_add(&tr2sid_buf, "Localhost", 9);
-	else {
-		algo->init_fn(&ctx);
-		algo->update_fn(&ctx, hostname, strlen(hostname));
-		algo->final_fn(hash, &ctx);
-		hash_to_hex_algop_r(hex, hash, algo);
-		strbuf_addch(&tr2sid_buf, 'H');
-		strbuf_add(&tr2sid_buf, hex, 8);
-	}
-
-	strbuf_addf(&tr2sid_buf, "-P%08"PRIx32, (uint32_t)pid);
-}
-
-/*
- * 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 *parent_sid;
-
-	if (tr2sid_buf.len)
-		return;
-
-	parent_sid = getenv(TR2_ENVVAR_PARENT_SID);
-	if (parent_sid && *parent_sid) {
-		const char *p;
-		for (p = parent_sid; *p; p++)
-			if (*p == '/')
-				tr2sid_nr_git_parents++;
-
-		strbuf_addstr(&tr2sid_buf, parent_sid);
-		strbuf_addch(&tr2sid_buf, '/');
-		tr2sid_nr_git_parents++;
-	}
-
-	tr2_sid_append_my_sid_component();
-
-	setenv(TR2_ENVVAR_PARENT_SID, tr2sid_buf.buf, 1);
-}
-
-const char *tr2_sid_get(void)
-{
-	if (!tr2sid_buf.len)
-		tr2_sid_compute();
-
-	return tr2sid_buf.buf;
-}
-
-int tr2_sid_depth(void)
-{
-	if (!tr2sid_buf.len)
-		tr2_sid_compute();
-
-	return tr2sid_nr_git_parents;
-}
-
-void tr2_sid_release(void)
-{
-	strbuf_release(&tr2sid_buf);
-}