mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 08:00:53 +00:00
capture: rename PidRoot to Overlay and add src/dst
Really what we want to deal with here is tracking an overlay that we may need to be able to decode after the fact (in case processes exit or we need to do post-processing symbol resolution). For the podman case, that is $some_path mapped to root (/), generally speaking. For flatpak though, that would have two mappings, one for /app and another for /usr (possibly more).
This commit is contained in:
@ -828,20 +828,27 @@ sysprof_capture_writer_add_fork (SysprofCaptureWriter *self,
|
||||
}
|
||||
|
||||
bool
|
||||
sysprof_capture_writer_add_pid_root (SysprofCaptureWriter *self,
|
||||
int64_t time,
|
||||
int cpu,
|
||||
int32_t pid,
|
||||
const char *path,
|
||||
uint32_t layer)
|
||||
sysprof_capture_writer_add_overlay (SysprofCaptureWriter *self,
|
||||
int64_t time,
|
||||
int cpu,
|
||||
int32_t pid,
|
||||
uint32_t layer,
|
||||
const char *src,
|
||||
const char *dst)
|
||||
{
|
||||
SysprofCapturePidRoot *ev;
|
||||
size_t strl = strlen (path);
|
||||
size_t len = sizeof *ev + strl + 1;
|
||||
SysprofCaptureOverlay *ev;
|
||||
size_t srclen = strlen (src);
|
||||
size_t dstlen = strlen (dst);
|
||||
size_t len = sizeof *ev + srclen + 1 + dstlen + 1;
|
||||
|
||||
assert (self != NULL);
|
||||
assert (src != NULL);
|
||||
assert (dst != NULL);
|
||||
|
||||
ev = (SysprofCapturePidRoot *)sysprof_capture_writer_allocate (self, &len);
|
||||
if (srclen > INT16_MAX || dstlen > INT16_MAX)
|
||||
return false;
|
||||
|
||||
ev = (SysprofCaptureOverlay *)sysprof_capture_writer_allocate (self, &len);
|
||||
if (!ev)
|
||||
return false;
|
||||
|
||||
@ -850,12 +857,19 @@ sysprof_capture_writer_add_pid_root (SysprofCaptureWriter *self,
|
||||
cpu,
|
||||
pid,
|
||||
time,
|
||||
SYSPROF_CAPTURE_FRAME_PID_ROOT);
|
||||
ev->layer = layer;
|
||||
memcpy (ev->path, path, strl);
|
||||
ev->path[strl] = 0;
|
||||
SYSPROF_CAPTURE_FRAME_OVERLAY);
|
||||
|
||||
self->stat.frame_count[SYSPROF_CAPTURE_FRAME_PID_ROOT]++;
|
||||
ev->layer = layer;
|
||||
ev->src_len = srclen;
|
||||
ev->dst_len = dstlen;
|
||||
|
||||
memcpy (&ev->data[0], src, srclen);
|
||||
memcpy (&ev->data[srclen+1], dst, dstlen);
|
||||
|
||||
ev->data[srclen] = 0;
|
||||
ev->data[srclen+1+dstlen] = 0;
|
||||
|
||||
self->stat.frame_count[SYSPROF_CAPTURE_FRAME_OVERLAY]++;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user