From 0a03eac352df45dd6de364f51673dbed78e2c678 Mon Sep 17 00:00:00 2001 From: albert <> Date: Thu, 23 Jan 2003 05:48:27 +0000 Subject: [PATCH] malloc error --- proc/ksym.c | 1 + proc/sysinfo.c | 155 +++++++++++++++++++++++++----------------------- proc/sysinfo.h | 100 +++++++++++++++---------------- proc/wchan.h | 2 +- ps/sortformat.c | 2 +- vmstat.c | 44 +++++++------- 6 files changed, 155 insertions(+), 149 deletions(-) diff --git a/proc/ksym.c b/proc/ksym.c index 21d9c96a..b38fe384 100644 --- a/proc/ksym.c +++ b/proc/ksym.c @@ -22,6 +22,7 @@ #include "procps.h" #include "version.h" #include "sysinfo.h" /* smp_num_cpus */ +#include "wchan.h" // to verify prototypes #define KSYMS_FILENAME "/proc/ksyms" diff --git a/proc/sysinfo.c b/proc/sysinfo.c index fd5bfe8a..cfd9352e 100644 --- a/proc/sysinfo.c +++ b/proc/sysinfo.c @@ -1,5 +1,5 @@ // Copyright (C) 1992-1998 by Michael K. Johnson, johnsonm@redhat.com -// Copyright 1998-2002 Albert Cahalan +// Copyright 1998-2003 Albert Cahalan // // This file is placed under the conditions of the GNU Library // General Public License, version 2, or any later version. @@ -283,7 +283,7 @@ void loadavg(double *restrict av1, double *restrict av5, double *restrict av15) typedef struct mem_table_struct { const char *name; /* memory type name */ - unsigned *slot; /* slot in return struct */ + unsigned long *slot; /* slot in return struct */ } mem_table_struct; static int compare_mem_table_structs(const void *a, const void *b){ @@ -316,41 +316,45 @@ static int compare_mem_table_structs(const void *a, const void *b){ * Committed_AS: 8440 kB 2.5.41+ * PageTables: 304 kB 2.5.41+ * ReverseMaps: 5738 2.5.41+ + * SwapCached: 0 kB 2.5.??+ + * HugePages_Total: 220 2.5.??+ + * HugePages_Free: 138 2.5.??+ + * Hugepagesize: 4096 kB 2.5.??+ */ /* obsolete */ -unsigned kb_main_shared; +unsigned long kb_main_shared; /* old but still kicking -- the important stuff */ -unsigned kb_main_buffers; -unsigned kb_main_cached; -unsigned kb_main_free; -unsigned kb_main_total; -unsigned kb_swap_free; -unsigned kb_swap_total; +unsigned long kb_main_buffers; +unsigned long kb_main_cached; +unsigned long kb_main_free; +unsigned long kb_main_total; +unsigned long kb_swap_free; +unsigned long kb_swap_total; /* recently introduced */ -unsigned kb_high_free; -unsigned kb_high_total; -unsigned kb_low_free; -unsigned kb_low_total; +unsigned long kb_high_free; +unsigned long kb_high_total; +unsigned long kb_low_free; +unsigned long kb_low_total; /* 2.4.xx era */ -unsigned kb_active; -unsigned kb_inact_laundry; -unsigned kb_inact_dirty; -unsigned kb_inact_clean; -unsigned kb_inact_target; -unsigned kb_swap_cached; /* late 2.4 only */ +unsigned long kb_active; +unsigned long kb_inact_laundry; +unsigned long kb_inact_dirty; +unsigned long kb_inact_clean; +unsigned long kb_inact_target; +unsigned long kb_swap_cached; /* late 2.4 only */ /* derived values */ -unsigned kb_swap_used; -unsigned kb_main_used; +unsigned long kb_swap_used; +unsigned long kb_main_used; /* 2.5.41+ */ -unsigned kb_writeback; -unsigned kb_slab; -unsigned nr_reversemaps; -unsigned kb_committed_as; -unsigned kb_dirty; -unsigned kb_inactive; -unsigned kb_mapped; -unsigned kb_pagetables; +unsigned long kb_writeback; +unsigned long kb_slab; +unsigned long nr_reversemaps; +unsigned long kb_committed_as; +unsigned long kb_dirty; +unsigned long kb_inactive; +unsigned long kb_mapped; +unsigned long kb_pagetables; void meminfo(void){ char namebuf[16]; /* big enough to hold any row name */ @@ -359,37 +363,37 @@ void meminfo(void){ char *head; char *tail; static const mem_table_struct mem_table[] = { - {"Active", &kb_active}, - {"Buffers", &kb_main_buffers}, - {"Cached", &kb_main_cached}, + {"Active", &kb_active}, // important + {"Buffers", &kb_main_buffers}, // important + {"Cached", &kb_main_cached}, // important {"Committed_AS", &kb_committed_as}, - {"Dirty", &kb_dirty}, + {"Dirty", &kb_dirty}, // kB version of vmstat nr_dirty {"HighFree", &kb_high_free}, {"HighTotal", &kb_high_total}, {"Inact_clean", &kb_inact_clean}, {"Inact_dirty", &kb_inact_dirty}, {"Inact_laundry",&kb_inact_laundry}, {"Inact_target", &kb_inact_target}, - {"Inactive", &kb_inactive}, + {"Inactive", &kb_inactive}, // important {"LowFree", &kb_low_free}, {"LowTotal", &kb_low_total}, - {"Mapped", &kb_mapped}, - {"MemFree", &kb_main_free}, - {"MemShared", &kb_main_shared}, - {"MemTotal", &kb_main_total}, - {"PageTables", &kb_pagetables}, - {"ReverseMaps", &nr_reversemaps}, - {"Slab", &kb_slab}, + {"Mapped", &kb_mapped}, // kB version of vmstat nr_mapped + {"MemFree", &kb_main_free}, // important + {"MemShared", &kb_main_shared}, // important + {"MemTotal", &kb_main_total}, // important + {"PageTables", &kb_pagetables}, // kB version of vmstat nr_page_table_pages + {"ReverseMaps", &nr_reversemaps}, // same as vmstat nr_page_table_pages + {"Slab", &kb_slab}, // kB version of vmstat nr_slab {"SwapCached", &kb_swap_cached}, - {"SwapFree", &kb_swap_free}, - {"SwapTotal", &kb_swap_total}, - {"Writeback", &kb_writeback} + {"SwapFree", &kb_swap_free}, // important + {"SwapTotal", &kb_swap_total}, // important + {"Writeback", &kb_writeback}, // kB version of vmstat nr_writeback }; const int mem_table_count = sizeof(mem_table)/sizeof(mem_table_struct); FILE_TO_BUF(MEMINFO_FILE,meminfo_fd); - kb_inactive = ~0U; + kb_inactive = ~0UL; head = buf; for(;;){ @@ -416,7 +420,7 @@ nextline: kb_low_total = kb_main_total; kb_low_free = kb_main_free; } - if(kb_inactive==~0U){ + if(kb_inactive==~0UL){ kb_inactive = kb_inact_dirty + kb_inact_clean + kb_inact_laundry; } kb_swap_used = kb_swap_total - kb_swap_free; @@ -429,38 +433,39 @@ nextline: typedef struct vm_table_struct { const char *name; /* VM statistic name */ - unsigned *slot; /* slot in return struct */ + unsigned long *slot; /* slot in return struct */ } vm_table_struct; static int compare_vm_table_structs(const void *a, const void *b){ return strcmp(((const vm_table_struct*)a)->name,((const vm_table_struct*)b)->name); } -unsigned vm_nr_dirty; // dirty writable pages -unsigned vm_nr_writeback; // pages under writeback -unsigned vm_nr_pagecache; // pages in pagecache -unsigned vm_nr_page_table_pages;// pages used for pagetables -unsigned vm_nr_reverse_maps; // includes PageDirect -unsigned vm_nr_mapped; // mapped into pagetables -unsigned vm_nr_slab; // in slab -unsigned vm_pgpgin; // disk reads (same as 1st num on /proc/stat page line) -unsigned vm_pgpgout; // disk writes (same as 2nd num on /proc/stat page line) -unsigned vm_pswpin; // swap reads (same as 1st num on /proc/stat swap line) -unsigned vm_pswpout; // swap writes (same as 2nd num on /proc/stat swap line) -unsigned vm_pgalloc; // page allocations -unsigned vm_pgfree; // page freeings -unsigned vm_pgactivate; // pages moved inactive -> active -unsigned vm_pgdeactivate; // pages moved active -> inactive -unsigned vm_pgfault; // total faults (major+minor) -unsigned vm_pgmajfault; // major faults -unsigned vm_pgscan; // pages scanned by page reclaim -unsigned vm_pgrefill; // inspected by refill_inactive_zone -unsigned vm_pgsteal; // total pages reclaimed -unsigned vm_kswapd_steal; // pages reclaimed by kswapd +// see include/linux/page-flags.h and mm/page_alloc.c +unsigned long vm_nr_dirty; // dirty writable pages +unsigned long vm_nr_writeback; // pages under writeback +unsigned long vm_nr_pagecache; // pages in pagecache +unsigned long vm_nr_page_table_pages;// pages used for pagetables +unsigned long vm_nr_reverse_maps; // includes PageDirect +unsigned long vm_nr_mapped; // mapped into pagetables +unsigned long vm_nr_slab; // in slab +unsigned long vm_pgpgin; // kB disk reads (same as 1st num on /proc/stat page line) +unsigned long vm_pgpgout; // kB disk writes (same as 2nd num on /proc/stat page line) +unsigned long vm_pswpin; // swap reads (same as 1st num on /proc/stat swap line) +unsigned long vm_pswpout; // swap writes (same as 2nd num on /proc/stat swap line) +unsigned long vm_pgalloc; // page allocations +unsigned long vm_pgfree; // page freeings +unsigned long vm_pgactivate; // pages moved inactive -> active +unsigned long vm_pgdeactivate; // pages moved active -> inactive +unsigned long vm_pgfault; // total faults (major+minor) +unsigned long vm_pgmajfault; // major faults +unsigned long vm_pgscan; // pages scanned by page reclaim +unsigned long vm_pgrefill; // inspected by refill_inactive_zone +unsigned long vm_pgsteal; // total pages reclaimed +unsigned long vm_kswapd_steal; // pages reclaimed by kswapd // next 3 as defined by the 2.5.52 kernel -unsigned vm_pageoutrun; // times kswapd ran page reclaim -unsigned vm_allocstall; // times a page allocator ran direct reclaim -unsigned vm_pgrotated; // pages rotated to the tail of the LRU for immediate reclaim +unsigned long vm_pageoutrun; // times kswapd ran page reclaim +unsigned long vm_allocstall; // times a page allocator ran direct reclaim +unsigned long vm_pgrotated; // pages rotated to the tail of the LRU for immediate reclaim void vminfo(void){ char namebuf[16]; /* big enough to hold any row name */ @@ -485,14 +490,14 @@ void vminfo(void){ {"pgfault", &vm_pgfault}, {"pgfree", &vm_pgfree}, {"pgmajfault", &vm_pgmajfault}, - {"pgpgin", &vm_pgpgin}, - {"pgpgout", &vm_pgpgout}, + {"pgpgin", &vm_pgpgin}, // important + {"pgpgout", &vm_pgpgout}, // important {"pgrefill", &vm_pgrefill}, {"pgrotated", &vm_pgrotated}, {"pgscan", &vm_pgscan}, {"pgsteal", &vm_pgsteal}, - {"pswpin", &vm_pswpin}, - {"pswpout", &vm_pswpout} + {"pswpin", &vm_pswpin}, // important + {"pswpout", &vm_pswpout} // important }; const int vm_table_count = sizeof(vm_table)/sizeof(vm_table_struct); diff --git a/proc/sysinfo.h b/proc/sysinfo.h index 70f681af..0189b464 100644 --- a/proc/sysinfo.h +++ b/proc/sysinfo.h @@ -17,65 +17,65 @@ extern void loadavg(double *av1, double *av5, double *av15); /* obsolete */ -extern unsigned kb_main_shared; +extern unsigned long kb_main_shared; /* old but still kicking -- the important stuff */ -extern unsigned kb_main_buffers; -extern unsigned kb_main_cached; -extern unsigned kb_main_free; -extern unsigned kb_main_total; -extern unsigned kb_swap_free; -extern unsigned kb_swap_total; +extern unsigned long kb_main_buffers; +extern unsigned long kb_main_cached; +extern unsigned long kb_main_free; +extern unsigned long kb_main_total; +extern unsigned long kb_swap_free; +extern unsigned long kb_swap_total; /* recently introduced */ -extern unsigned kb_high_free; -extern unsigned kb_high_total; -extern unsigned kb_low_free; -extern unsigned kb_low_total; +extern unsigned long kb_high_free; +extern unsigned long kb_high_total; +extern unsigned long kb_low_free; +extern unsigned long kb_low_total; /* 2.4.xx era */ -extern unsigned kb_active; -extern unsigned kb_inact_laundry; // grrr... -extern unsigned kb_inact_dirty; -extern unsigned kb_inact_clean; -extern unsigned kb_inact_target; -extern unsigned kb_swap_cached; /* late 2.4+ */ +extern unsigned long kb_active; +extern unsigned long kb_inact_laundry; // grrr... +extern unsigned long kb_inact_dirty; +extern unsigned long kb_inact_clean; +extern unsigned long kb_inact_target; +extern unsigned long kb_swap_cached; /* late 2.4+ */ /* derived values */ -extern unsigned kb_swap_used; -extern unsigned kb_main_used; +extern unsigned long kb_swap_used; +extern unsigned long kb_main_used; /* 2.5.41+ */ -extern unsigned kb_writeback; -extern unsigned kb_slab; -extern unsigned nr_reversemaps; -extern unsigned kb_committed_as; -extern unsigned kb_dirty; -extern unsigned kb_inactive; -extern unsigned kb_mapped; -extern unsigned kb_pagetables; +extern unsigned long kb_writeback; +extern unsigned long kb_slab; +extern unsigned long nr_reversemaps; +extern unsigned long kb_committed_as; +extern unsigned long kb_dirty; +extern unsigned long kb_inactive; +extern unsigned long kb_mapped; +extern unsigned long kb_pagetables; extern void meminfo(void); -extern unsigned vm_nr_dirty; -extern unsigned vm_nr_writeback; -extern unsigned vm_nr_pagecache; -extern unsigned vm_nr_page_table_pages; -extern unsigned vm_nr_reverse_maps; -extern unsigned vm_nr_mapped; -extern unsigned vm_nr_slab; -extern unsigned vm_pgpgin; -extern unsigned vm_pgpgout; -extern unsigned vm_pswpin; -extern unsigned vm_pswpout; -extern unsigned vm_pgalloc; -extern unsigned vm_pgfree; -extern unsigned vm_pgactivate; -extern unsigned vm_pgdeactivate; -extern unsigned vm_pgfault; -extern unsigned vm_pgmajfault; -extern unsigned vm_pgscan; -extern unsigned vm_pgrefill; -extern unsigned vm_pgsteal; -extern unsigned vm_kswapd_steal; -extern unsigned vm_pageoutrun; -extern unsigned vm_allocstall; +extern unsigned long vm_nr_dirty; +extern unsigned long vm_nr_writeback; +extern unsigned long vm_nr_pagecache; +extern unsigned long vm_nr_page_table_pages; +extern unsigned long vm_nr_reverse_maps; +extern unsigned long vm_nr_mapped; +extern unsigned long vm_nr_slab; +extern unsigned long vm_pgpgin; +extern unsigned long vm_pgpgout; +extern unsigned long vm_pswpin; +extern unsigned long vm_pswpout; +extern unsigned long vm_pgalloc; +extern unsigned long vm_pgfree; +extern unsigned long vm_pgactivate; +extern unsigned long vm_pgdeactivate; +extern unsigned long vm_pgfault; +extern unsigned long vm_pgmajfault; +extern unsigned long vm_pgscan; +extern unsigned long vm_pgrefill; +extern unsigned long vm_pgsteal; +extern unsigned long vm_kswapd_steal; +extern unsigned long vm_pageoutrun; +extern unsigned long vm_allocstall; extern void vminfo(void); diff --git a/proc/wchan.h b/proc/wchan.h index 061dfe91..f721378c 100644 --- a/proc/wchan.h +++ b/proc/wchan.h @@ -5,7 +5,7 @@ EXTERN_C_BEGIN -extern const char * wchan(unsigned long address, unsigned pid); +extern const char * wchan(unsigned KLONG address, unsigned pid); extern int open_psdb(const char *restrict override); extern int open_psdb_message(const char *restrict override, void (*message)(const char *, ...)); diff --git a/ps/sortformat.c b/ps/sortformat.c index 0536d33c..f67f749c 100644 --- a/ps/sortformat.c +++ b/ps/sortformat.c @@ -309,7 +309,7 @@ static sort_node *do_one_sort_spec(const char *spec){ fs = search_format_array(spec); if(fs){ sort_node *thisnode; - thisnode = malloc(sizeof(format_node)); + thisnode = malloc(sizeof(sort_node)); thisnode->sr = fs->sr; thisnode->need = fs->need; thisnode->reverse = reverse; diff --git a/vmstat.c b/vmstat.c index f9f6c5c9..189892f4 100644 --- a/vmstat.c +++ b/vmstat.c @@ -99,7 +99,7 @@ static void getrunners(unsigned int *restrict running, unsigned int *restrict bl } static void getstat(jiff *restrict cuse, jiff *restrict cice, jiff *restrict csys, jiff *restrict cide, jiff *restrict ciow, - unsigned *restrict pin, unsigned *restrict pout, unsigned *restrict s_in, unsigned *restrict sout, + unsigned long *restrict pin, unsigned long *restrict pout, unsigned long *restrict s_in, unsigned long *restrict sout, unsigned *restrict intr, unsigned *restrict ctxt, unsigned int *restrict running, unsigned int *restrict blocked, unsigned int *restrict btime, unsigned int *restrict processes) { @@ -123,11 +123,11 @@ static void getstat(jiff *restrict cuse, jiff *restrict cice, jiff *restrict csy if(b) sscanf(b, "cpu %Lu %Lu %Lu %Lu %Lu", cuse, cice, csys, cide, ciow); b = strstr(buff, "page "); - if(b) sscanf(b, "page %u %u", pin, pout); + if(b) sscanf(b, "page %lu %lu", pin, pout); else need_vmstat_file = 1; b = strstr(buff, "swap "); - if(b) sscanf(b, "swap %u %u", s_in, sout); + if(b) sscanf(b, "swap %lu %lu", s_in, sout); else need_vmstat_file = 1; b = strstr(buff, "intr "); @@ -249,17 +249,17 @@ static void new_header(void){ } static void new_format(void) { - const char format[]="%2u %2u %6u %6u %6u %6u %4u %4u %5u %5u %4u %5u %2u %2u %2u %2u\n"; + const char format[]="%2u %2u %6lu %6lu %6lu %6lu %4u %4u %5u %5u %4u %5u %2u %2u %2u %2u\n"; unsigned int tog=0; /* toggle switch for cleaner code */ unsigned int i; unsigned int hz = Hertz; unsigned int running,blocked,dummy_1,dummy_2; jiff cpu_use[2], cpu_nic[2], cpu_sys[2], cpu_idl[2], cpu_iow[2]; jiff duse, dsys, didl, diow, Div, divo2; - unsigned int pgpgin[2], pgpgout[2], pswpin[2], pswpout[2]; + unsigned long pgpgin[2], pgpgout[2], pswpin[2], pswpout[2]; unsigned int intr[2], ctxt[2]; unsigned int sleep_half; - unsigned int kb_per_page = sysconf(_SC_PAGESIZE) / 1024; + unsigned long kb_per_page = sysconf(_SC_PAGESIZE) / 1024ul; int debt = 0; // handle idle ticks running backwards sleep_half=(sleep_time/2); @@ -347,7 +347,7 @@ static void new_format(void) { static void sum_format(void) { unsigned int running, blocked, btime, processes; jiff cpu_use, cpu_nic, cpu_sys, cpu_idl, cpu_iow; - unsigned int pgpgin, pgpgout, pswpin, pswpout; + unsigned long pgpgin, pgpgout, pswpin, pswpout; unsigned int intr, ctxt; meminfo(); @@ -356,25 +356,25 @@ static void sum_format(void) { &intr, &ctxt, &running, &blocked, &btime, &processes); - printf("%13u kB total memory\n", kb_main_total); - printf("%13u kB used memory\n", kb_main_used); - printf("%13u kB active memory\n", kb_active); - printf("%13u kB inactive memory\n", kb_inactive); - printf("%13u kB free memory\n", kb_main_free); - printf("%13u kB buffer memory\n", kb_main_buffers); - printf("%13u kB swap cache\n", kb_main_cached); - printf("%13u kB total swap\n", kb_swap_total); - printf("%13u kB used swap\n", kb_swap_used); - printf("%13u kB free swap\n", kb_swap_free); + printf("%13lu kB total memory\n", kb_main_total); + printf("%13lu kB used memory\n", kb_main_used); + printf("%13lu kB active memory\n", kb_active); + printf("%13lu kB inactive memory\n", kb_inactive); + printf("%13lu kB free memory\n", kb_main_free); + printf("%13lu kB buffer memory\n", kb_main_buffers); + printf("%13lu kB swap cache\n", kb_main_cached); + printf("%13lu kB total swap\n", kb_swap_total); + printf("%13lu kB used swap\n", kb_swap_used); + printf("%13lu kB free swap\n", kb_swap_free); printf("%13Lu non-nice user cpu ticks\n", cpu_use); printf("%13Lu nice user cpu ticks\n", cpu_nic); printf("%13Lu system cpu ticks\n", cpu_sys); printf("%13Lu idle cpu ticks\n", cpu_idl); printf("%13Lu IO-wait cpu ticks\n", cpu_iow); - printf("%13u pages paged in\n", pgpgin); - printf("%13u pages paged out\n", pgpgout); - printf("%13u pages swapped in\n", pswpin); - printf("%13u pages swapped out\n", pswpout); + printf("%13lu pages paged in\n", pgpgin); + printf("%13lu pages paged out\n", pgpgout); + printf("%13lu pages swapped in\n", pswpin); + printf("%13lu pages swapped out\n", pswpout); printf("%13u interrupts\n", intr); printf("%13u CPU context switches\n", ctxt); printf("%13u boot time\n", btime); @@ -384,7 +384,7 @@ static void sum_format(void) { static void fork_format(void) { unsigned int running, blocked, btime, processes; jiff cpu_use, cpu_nic, cpu_sys, cpu_idl, cpu_iow; - unsigned int pgpgin, pgpgout, pswpin, pswpout; + unsigned long pgpgin, pgpgout, pswpin, pswpout; unsigned int intr, ctxt; getstat(&cpu_use, &cpu_nic, &cpu_sys, &cpu_idl, &cpu_iow,