enhanced libproc cgroup/cmdline support, exploited by top
Library Changes . added PROC_EDITCMDLCVT flag . added an internal (static) fill_cmdline_cvt function: - reads and "escapes" /proc/#/cmdline - returns result as a single string in a single vector - callers are guaranteed a cmdline (no more NULL) . added vectorize_this_str function, exploited by fill_cgroup_cvt, fill_cmdline_cvt . generalized read_cmdline function as read_unvectored, now exploited by fill_cgroup_cvt, fill_cmdline_cvt, read_cmdline ( cgroup and cmdline no longer need be converted to string ) ( vectors before being transformed to final representation ) . fixed bug regarding skipped group numbers (when enabled) . escape_str made responsible for all single byte translation with distinction between control chars + other unprintable . added escaped_copy function for already escaped strings . reorganized parts of proc_t to restore formatting standards ( displacement changes shouldn't matter with new version # ) . former ZAP_SUSEONLY #define now OOMEM_ENABLE . added to library.map: escaped_copy; read_cmdline Top Program Changes . exploited the new PROC_EDITCMDLCVT provision . eliminated now obsolete #include "proc/escape.h" . changed the P_WCH display format if no kernel symbol table . fixed very old bug in lflgs for out-of-view sort fields . former ZAP_SUSEONLY #define now OOMEM_ENABLE Ps Program Changes . exploited the new PROC_EDITCMDLCVT provision . exploited the new escaped_copy function . consolidated pr_args and pr_comm into pr_argcom Signed-off-by: Jan Görig <jgorig@redhat.com>
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
#include <netinet/in.h> /* htons */
|
||||
#endif
|
||||
|
||||
#ifndef ZAP_SUSEONLY
|
||||
#ifndef OOMEM_ENABLE
|
||||
long smp_num_cpus; /* number of CPUs */
|
||||
#endif
|
||||
|
||||
@@ -182,7 +182,7 @@ static void old_Hertz_hack(void){
|
||||
setlocale(LC_NUMERIC, savelocale);
|
||||
jiffies = user_j + nice_j + sys_j + other_j;
|
||||
seconds = (up_1 + up_2) / 2;
|
||||
#ifndef ZAP_SUSEONLY
|
||||
#ifndef OOMEM_ENABLE
|
||||
h = (unsigned)( (double)jiffies/seconds/smp_num_cpus );
|
||||
#else
|
||||
h = (unsigned)( (double)jiffies/seconds/smp_num_cpus() );
|
||||
@@ -252,7 +252,7 @@ static int check_for_privs(void){
|
||||
return !!rc;
|
||||
}
|
||||
|
||||
#ifdef ZAP_SUSEONLY
|
||||
#ifdef OOMEM_ENABLE
|
||||
long smp_num_cpus(void)
|
||||
{
|
||||
static long _smp_num_cpus=-1; /* number of CPUs */
|
||||
@@ -279,7 +279,7 @@ static void init_libproc(void) __attribute__((constructor));
|
||||
static void init_libproc(void){
|
||||
have_privs = check_for_privs();
|
||||
init_Linux_version(); /* Must be called before we check code */
|
||||
#ifndef ZAP_SUSEONLY
|
||||
#ifndef OOMEM_ENABLE
|
||||
// ought to count CPUs in /proc/stat instead of relying
|
||||
// on glibc, which foolishly tries to parse /proc/cpuinfo
|
||||
//
|
||||
|
Reference in New Issue
Block a user