4f36c1fdff63e89e1e873a1c01fe4b03a62e7efb
Stefan Schuermans first incomplete begin_proc...

Stefan Schuermans authored 4 years ago

1) #include <liblwpttr/event.h>
Stefan Schuermans add exe and cwd to proc_begin

Stefan Schuermans authored 4 years ago

2) #include "cleaner.h"
3) #include "symlink.h"
4) #include "timestamp.h"
Stefan Schuermans first incomplete begin_proc...

Stefan Schuermans authored 4 years ago

5) 
6) #include <lwproctrace.pb-c.h>
7) 
8) #include <stdlib.h>
9) #include <sys/types.h>
10) #include <unistd.h>
11) 
Stefan Schuermans add exe and cwd to proc_begin

Stefan Schuermans authored 4 years ago

12) static int lwpttr_event_pack(struct _Lwproctrace__Event *event,
13)                              void **data, size_t *size,
14)                              lwpttr_cleaner_t *cleaner) {
15)   *size = lwproctrace__event__get_packed_size(event);
16)   *data = malloc(*size);
17)   if (! data) {
18)     lwpttr_cleaner_cleanup(cleaner);
19)     *size = 0;
20)     return -1;
21)   }
22)   *size = lwproctrace__event__pack(event, *data);
23)   lwpttr_cleaner_cleanup(cleaner);
24)   return 0;
25) }
26) 
Stefan Schuermans first incomplete begin_proc...

Stefan Schuermans authored 4 years ago

27) int lwpttr_event_proc_begin(void **data, size_t *size) {
Stefan Schuermans add exe and cwd to proc_begin

Stefan Schuermans authored 4 years ago

28)   *data = NULL;
29)   *size = 0;
30) 
31)   lwpttr_cleaner_t *cleaner = lwpttr_cleaner_new();
32)   if (! cleaner) {
33)     return -1;
34)   }
35) 
Stefan Schuermans first incomplete begin_proc...

Stefan Schuermans authored 4 years ago

36)   struct _Lwproctrace__Timespec timestamp = LWPROCTRACE__TIMESPEC__INIT;
Stefan Schuermans add exe and cwd to proc_begin

Stefan Schuermans authored 4 years ago

37)   lwpttr_event_get_timestamp(&timestamp);
Stefan Schuermans first incomplete begin_proc...

Stefan Schuermans authored 4 years ago

38) 
39)   struct _Lwproctrace__ProcBegin proc_begin = LWPROCTRACE__PROC_BEGIN__INIT;
40)   proc_begin.pid = getpid();
41)   proc_begin.has_ppid = 1;
42)   proc_begin.ppid = getppid();
Stefan Schuermans add exe and cwd to proc_begin

Stefan Schuermans authored 4 years ago

43)   if (symlink_read("/proc/self/exe", &proc_begin.exe, cleaner) != 0) {
44)     return -1;
45)   }
46)   if (symlink_read("/proc/self/cwd", &proc_begin.cwd, cleaner) != 0) {
47)     return -1;
48)   }
Stefan Schuermans first incomplete begin_proc...

Stefan Schuermans authored 4 years ago

49) 
50)   struct _Lwproctrace__Event event = LWPROCTRACE__EVENT__INIT;
51)   event.timestamp = &timestamp;
52)   event.proc_begin = &proc_begin;
53) 
Stefan Schuermans add exe and cwd to proc_begin

Stefan Schuermans authored 4 years ago

54)   return lwpttr_event_pack(&event, data, size, cleaner);