Branch data Line data Source code
1 : : #ifndef __CR_PARASITE_H__
2 : : #define __CR_PARASITE_H__
3 : :
4 : : #define PARASITE_STACK_SIZE (16 << 10)
5 : : #define PARASITE_ARG_SIZE 8196
6 : :
7 : : #define PARASITE_MAX_SIZE (64 << 10)
8 : :
9 : : #ifndef __ASSEMBLY__
10 : :
11 : : #include <sys/un.h>
12 : :
13 : : #include "image.h"
14 : : #include "util-net.h"
15 : :
16 : : #include "../protobuf/vma.pb-c.h"
17 : :
18 : : #define __head __used __section(.head.text)
19 : :
20 : : enum {
21 : : PARASITE_CMD_INIT,
22 : : PARASITE_CMD_INIT_THREAD,
23 : : PARASITE_CMD_CFG_LOG,
24 : : PARASITE_CMD_FINI,
25 : : PARASITE_CMD_FINI_THREAD,
26 : :
27 : : PARASITE_CMD_DUMPPAGES_INIT,
28 : : PARASITE_CMD_DUMPPAGES,
29 : : PARASITE_CMD_DUMPPAGES_FINI,
30 : :
31 : : PARASITE_CMD_DUMP_SIGACTS,
32 : : PARASITE_CMD_DUMP_ITIMERS,
33 : : PARASITE_CMD_DUMP_MISC,
34 : : PARASITE_CMD_DUMP_CREDS,
35 : : PARASITE_CMD_DUMP_THREAD,
36 : : PARASITE_CMD_DRAIN_FDS,
37 : : PARASITE_CMD_GET_PROC_FD,
38 : : PARASITE_CMD_DUMP_TTY,
39 : :
40 : : PARASITE_CMD_MAX,
41 : : };
42 : :
43 : : struct parasite_init_args {
44 : : int h_addr_len;
45 : : struct sockaddr_un h_addr;
46 : :
47 : : int p_addr_len;
48 : : struct sockaddr_un p_addr;
49 : :
50 : : int nr_threads;
51 : : };
52 : :
53 : : struct parasite_log_args {
54 : : int log_level;
55 : : };
56 : :
57 : : struct parasite_dump_pages_args {
58 : : VmaEntry vma_entry;
59 : : unsigned long nrpages_dumped; /* how many pages are dumped */
60 : : unsigned long nrpages_skipped;
61 : : unsigned long nrpages_total;
62 : : };
63 : :
64 : : struct parasite_dump_sa_args {
65 : : rt_sigaction_t sas[SIGMAX];
66 : : };
67 : :
68 : : struct parasite_dump_itimers_args {
69 : : struct itimerval real;
70 : : struct itimerval virt;
71 : : struct itimerval prof;
72 : : };
73 : :
74 : : /*
75 : : * Misc sfuff, that is too small for separate file, but cannot
76 : : * be read w/o using parasite
77 : : */
78 : :
79 : : struct parasite_dump_misc {
80 : : unsigned long brk;
81 : : k_rtsigset_t blocked;
82 : :
83 : : u32 pid;
84 : : u32 sid;
85 : : u32 pgid;
86 : : };
87 : :
88 : : #define PARASITE_MAX_GROUPS (PAGE_SIZE / sizeof(unsigned int))
89 : :
90 : : struct parasite_dump_creds {
91 : : unsigned int secbits;
92 : : unsigned int ngroups;
93 : : unsigned int groups[PARASITE_MAX_GROUPS];
94 : : };
95 : :
96 : : struct parasite_dump_thread {
97 : : unsigned int *tid_addr;
98 : : pid_t tid;
99 : : k_rtsigset_t blocked;
100 : : };
101 : :
102 : : #define PARASITE_MAX_FDS (PAGE_SIZE / sizeof(int))
103 : :
104 : : struct parasite_drain_fd {
105 : : int nr_fds;
106 : : int fds[PARASITE_MAX_FDS];
107 : : };
108 : :
109 : : static inline int drain_fds_size(struct parasite_drain_fd *dfds)
110 : : {
111 : 349 : return sizeof(dfds->nr_fds) + dfds->nr_fds * sizeof(dfds->fds[0]);
112 : : }
113 : :
114 : : struct parasite_tty_args {
115 : : int fd;
116 : :
117 : : int sid;
118 : : int pgrp;
119 : : bool hangup;
120 : :
121 : : int st_pckt;
122 : : int st_lock;
123 : : int st_excl;
124 : : };
125 : :
126 : : /* the parasite prefix is added by gen_offsets.sh */
127 : : #define parasite_sym(pblob, name) ((void *)(pblob) + parasite_blob_offset__##name)
128 : :
129 : : #endif /* !__ASSEMBLY__ */
130 : :
131 : : #endif /* __CR_PARASITE_H__ */
|