f54b9090d4428a9186fd368e7d44baa4cf9da197
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"
Stefan Schuermans add cmdline to proc_begin

Stefan Schuermans authored 4 years ago

3) #include "stringlist.h"
Stefan Schuermans add exe and cwd to proc_begin

Stefan Schuermans authored 4 years ago

4) #include "symlink.h"
5) #include "timestamp.h"
Stefan Schuermans first incomplete begin_proc...

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

28) 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

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

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

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

Stefan Schuermans authored 4 years ago

44)   if (symlink_read("/proc/self/exe", &proc_begin.exe, cleaner) != 0) {
45)     return -1;
46)   }
47)   if (symlink_read("/proc/self/cwd", &proc_begin.cwd, cleaner) != 0) {
48)     return -1;
49)   }
Stefan Schuermans add cmdline to proc_begin

Stefan Schuermans authored 4 years ago

50)   if (stringlist_read("/proc/self/cmdline", &proc_begin.n_cmdline,
51)                       &proc_begin.cmdline, cleaner) != 0) {
52)     return -1;
53)   }
Stefan Schuermans add environ to proc_begin

Stefan Schuermans authored 4 years ago

54)   if (stringlist_read("/proc/self/environ", &proc_begin.n_environ,
55)                       &proc_begin.environ, cleaner) != 0) {
56)     return -1;
57)   }
Stefan Schuermans first incomplete begin_proc...

Stefan Schuermans authored 4 years ago

58) 
59)   struct _Lwproctrace__Event event = LWPROCTRACE__EVENT__INIT;
60)   event.timestamp = &timestamp;
61)   event.proc_begin = &proc_begin;
62) 
Stefan Schuermans add exe and cwd to proc_begin

Stefan Schuermans authored 4 years ago

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