[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] Make start_code and end_code available in /proc/*/stat
From: |
Justus Winter |
Subject: |
[PATCH] Make start_code and end_code available in /proc/*/stat |
Date: |
Mon, 5 Aug 2013 12:11:30 +0200 |
This makes killall5 actually kill any processes not marked as
important.
* process.c (process_file_gc_stat): Fix {start,end}_code.
---
process.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/process.c b/process.c
index c5ef7d8..269a18b 100644
--- a/process.c
+++ b/process.c
@@ -116,6 +116,26 @@ process_file_gc_stat (struct proc_stat *ps, char
**contents)
thread_basic_info_t thbi = proc_stat_thread_basic_info (ps);
const char *fn = args_filename (proc_stat_args (ps));
+ vm_address_t start_code = 1; /* 0 would make killall5.c consider it
+ a kernel process, thus use 1 as
+ default. */
+ vm_address_t end_code = 1;
+ process_t p;
+ error_t err = proc_pid2proc (ps->context->server, ps->pid, &p);
+ if (! err)
+ {
+ boolean_t essential = 0;
+ proc_is_important (p, &essential);
+ if (essential)
+ start_code = end_code = 0; /* To make killall5.c consider it a
+ kernel process that is to be
+ left alone. */
+ else
+ proc_get_code (p, &start_code, &end_code);
+
+ mach_port_deallocate (mach_task_self (), p);
+ }
+
/* See proc(5) for more information about the contents of each field for the
Linux procfs. */
return asprintf (contents,
@@ -152,7 +172,9 @@ process_file_gc_stat (struct proc_stat *ps, char **contents)
timeval_jiffies (thbi->creation_time), /* FIXME: ... since boot */
(long unsigned) tbi->virtual_size,
(long unsigned) tbi->resident_size / PAGE_SIZE, 0L,
- 0L, 0L, 0L, 0L, 0L,
+ start_code,
+ end_code,
+ 0L, 0L, 0L,
0L, 0L, 0L, 0L,
(long unsigned) proc_stat_thread_rpc (ps), /* close enough */
0L, 0L,
--
1.7.10.4
- [PATCH 07/16] init: Mark all of inits children and init itself as important, (continued)
- [PATCH 07/16] init: Mark all of inits children and init itself as important, Justus Winter, 2013/08/05
- [PATCH 08/16] libdiskfs: register libdiskfs-based translators as important, Justus Winter, 2013/08/05
- [PATCH 09/16] libnetfs: register libnetfs-based translators as important, Justus Winter, 2013/08/05
- [PATCH 10/16] libtrivfs: register libtrivfs-based translators as important, Justus Winter, 2013/08/05
- [PATCH 11/16] mach-defpager: register mach-defpager translators as important, Justus Winter, 2013/08/05
- [PATCH 12/16] trans: register symlink translators as important, Justus Winter, 2013/08/05
- [PATCH 13/16] proc: keep track of {start,end}_code, Justus Winter, 2013/08/05
- [PATCH 14/16] hurd: add proc_{get,set}_code, Justus Winter, 2013/08/05
- [PATCH 15/16] exec: keep track of the range where executable segments are mapped, Justus Winter, 2013/08/05
- [PATCH 16/16] Build fixes: Build processUser.o and link against it, Justus Winter, 2013/08/05
- [PATCH] Make start_code and end_code available in /proc/*/stat,
Justus Winter <=
Make sysvinit pid 1, fix killall5 (2), Justus Winter, 2013/08/15