}
+#define COPY_STRING(dest, src) \
+ do \
+ { \
+ strncpy (dest, src, sizeof (dest) - 1); \
+ dest[sizeof (dest) - 1] = 0; \
+ } \
+ while (0)
+
+
void
-tracker_add_process (tracker_t *tracker)
+tracker_add_process (tracker_t * tracker,
+ pid_t pid,
+ const char *command_line)
{
+ new_process_t event;
+
+ event.type = NEW_PROCESS;
+ event.pid = pid;
+ COPY_STRING (event.command_line, command_line);
+
+ tracker_append (tracker, &event, sizeof (event));
}
void
-tracker_add_map (tracker_t *tracker)
+tracker_add_map (tracker_t * tracker,
+ pid_t pid,
+ uint64_t start,
+ uint64_t end,
+ uint64_t offset,
+ uint64_t inode,
+ const char *filename)
{
+ new_map_t event;
+
+ event.type = NEW_MAP;
+ event.pid = pid;
+ COPY_STRING (event.file_name, filename);
+ event.start = start;
+ event.end = end;
+ event.offset = offset;
+ event.inode = inode;
+
+ tracker_append (tracker, &event, sizeof (event));
}
void
tracker_t *tracker_new (void);
void tracker_free (tracker_t *);
-void tracker_add_process (tracker_t *tracker);
-void tracker_add_map (tracker_t *tracker);
+void tracker_add_process (tracker_t *tracker,
+ pid_t pid,
+ const char *command_line);
+void
+tracker_add_map (tracker_t * tracker,
+ pid_t pid,
+ uint64_t start,
+ uint64_t end,
+ uint64_t offset,
+ uint64_t inode,
+ const char *filename);
void tracker_add_sample (tracker_t *tracker,
pid_t pid,
uint64_t *ips,