diff options
author | netblue30 <netblue30@protonmail.com> | 2022-06-02 17:03:36 -0400 |
---|---|---|
committer | netblue30 <netblue30@protonmail.com> | 2022-06-02 17:03:36 -0400 |
commit | 741aaa4f59f3604f6c139fedcf06c0a2f910a60c (patch) | |
tree | a899d718e3ef65b7553eadc858eeb5b1a482fe97 /src/firemon/top.c | |
parent | speed up firemon (diff) | |
download | firejail-741aaa4f59f3604f6c139fedcf06c0a2f910a60c.tar.gz firejail-741aaa4f59f3604f6c139fedcf06c0a2f910a60c.tar.zst firejail-741aaa4f59f3604f6c139fedcf06c0a2f910a60c.zip |
firemon rework
Diffstat (limited to 'src/firemon/top.c')
-rw-r--r-- | src/firemon/top.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/src/firemon/top.c b/src/firemon/top.c index 3e7323ded..56f171f5b 100644 --- a/src/firemon/top.c +++ b/src/firemon/top.c | |||
@@ -154,8 +154,8 @@ static char *print_top(unsigned index, unsigned parent, unsigned *utime, unsigne | |||
154 | 154 | ||
155 | // cpu | 155 | // cpu |
156 | itv *= clocktick; | 156 | itv *= clocktick; |
157 | float ud = (float) (*utime - pids[index].utime) / itv * 100; | 157 | float ud = (float) (*utime - pids[index].option.top.utime) / itv * 100; |
158 | float sd = (float) (*stime - pids[index].stime) / itv * 100; | 158 | float sd = (float) (*stime - pids[index].option.top.stime) / itv * 100; |
159 | float cd = ud + sd; | 159 | float cd = ud + sd; |
160 | *cpu = cd; | 160 | *cpu = cd; |
161 | char cpu_str[10]; | 161 | char cpu_str[10]; |
@@ -179,6 +179,34 @@ static char *print_top(unsigned index, unsigned parent, unsigned *utime, unsigne | |||
179 | return rv; | 179 | return rv; |
180 | } | 180 | } |
181 | 181 | ||
182 | // recursivity!!! | ||
183 | void pid_store_cpu(unsigned index, unsigned parent, unsigned *utime, unsigned *stime) { | ||
184 | if (pids[index].level == 1) { | ||
185 | *utime = 0; | ||
186 | *stime = 0; | ||
187 | } | ||
188 | |||
189 | // Remove unused parameter warning | ||
190 | (void)parent; | ||
191 | |||
192 | unsigned utmp = 0; | ||
193 | unsigned stmp = 0; | ||
194 | pid_get_cpu_time(index, &utmp, &stmp); | ||
195 | *utime += utmp; | ||
196 | *stime += stmp; | ||
197 | |||
198 | unsigned i; | ||
199 | for (i = index + 1; i < (unsigned)max_pids; i++) { | ||
200 | if (pids[i].parent == (pid_t)index) | ||
201 | pid_store_cpu(i, index, utime, stime); | ||
202 | } | ||
203 | |||
204 | if (pids[index].level == 1) { | ||
205 | pids[index].option.top.utime = *utime; | ||
206 | pids[index].option.top.stime = *stime; | ||
207 | } | ||
208 | } | ||
209 | |||
182 | 210 | ||
183 | typedef struct node_t { | 211 | typedef struct node_t { |
184 | struct node_t *next; | 212 | struct node_t *next; |