This commit is contained in:
albert 2003-01-16 08:03:40 +00:00
parent 256e1f767c
commit ebc5354699
4 changed files with 34 additions and 8 deletions

View File

@ -105,7 +105,7 @@
typedef struct symb { typedef struct symb {
const char *name; const char *name;
unsigned long addr; unsigned KLONG addr;
} symb; } symb;
static const symb fail = { "?", 0 }; static const symb fail = { "?", 0 };
@ -185,7 +185,7 @@ static void chop_version(char *arg){
/***********************************/ /***********************************/
static const symb *search(unsigned long address, symb *idx, unsigned count){ static const symb *search(unsigned KLONG address, symb *idx, unsigned count){
unsigned left; unsigned left;
unsigned mid; unsigned mid;
unsigned right; unsigned right;
@ -289,7 +289,7 @@ bypass:
char *saved; char *saved;
if(!*endp) return 1; if(!*endp) return 1;
saved = endp; saved = endp;
ksyms_index[ksyms_count].addr = strtoul(endp, &endp, 16); ksyms_index[ksyms_count].addr = STRTOUKL(endp, &endp, 16);
if(endp==saved || *endp != ' ') goto bad_parse; if(endp==saved || *endp != ' ') goto bad_parse;
endp++; endp++;
ksyms_index[ksyms_count].name = endp; ksyms_index[ksyms_count].name = endp;
@ -392,7 +392,7 @@ good_match:;
} }
return 1; /* success */ return 1; /* success */
} }
sysmap_index[sysmap_count].addr = strtoul(endp, &endp, 16); sysmap_index[sysmap_count].addr = STRTOUKL(endp, &endp, 16);
if(*endp != ' ') goto bad_parse; if(*endp != ' ') goto bad_parse;
endp++; endp++;
if(!strchr(SYMBOL_TYPE_CHARS, *endp)) goto bad_parse; if(!strchr(SYMBOL_TYPE_CHARS, *endp)) goto bad_parse;
@ -561,7 +561,7 @@ const char * read_wchan_file(unsigned pid){
#define MAX_OFFSET (0x1000*sizeof(long)) /* past this is generally junk */ #define MAX_OFFSET (0x1000*sizeof(long)) /* past this is generally junk */
/* return pointer to temporary static buffer with function name */ /* return pointer to temporary static buffer with function name */
const char * wchan(unsigned long address, unsigned pid) { const char * wchan(unsigned KLONG address, unsigned pid) {
const symb *mod_symb; const symb *mod_symb;
const symb *map_symb; const symb *map_symb;
const symb *good_symb; const symb *good_symb;

View File

@ -9,6 +9,31 @@
#define EXTERN_C_END #define EXTERN_C_END
#endif #endif
// Some ports make the mistake of running a 32-bit userspace
// on a 64-bit kernel. Shame on them. It's not at all OK to
// make everything "long long", since that causes unneeded
// slowness on 32-bit hardware.
//
// SPARC: 32-bit kernel is an ex-penguin, so use "long long".
//
// MIPS: Used for embedded systems and obsolete hardware.
// Oh, there's a 64-bit version? SGI is headed toward IA-64,
// so don't worry about 64-bit MIPS.
//
// PowerPC: Big ugly problem! Macs are popular. :-/
//
// Unknown: HP-PA-RISC, zSeries, and x86-64
//
#if defined(__sparc__) // || defined(__mips__) || defined(__powerpc__)
#define KLONG long long // not typedef; want "unsigned KLONG" to work
#define KLF "L"
#define STRTOUKL strtoull
#else
#define KLONG long
#define KLF "l"
#define STRTOUKL strtoul
#endif
#if !defined(restrict) && __STDC_VERSION__ < 199901 #if !defined(restrict) && __STDC_VERSION__ < 199901
#if __GNUC__ > 2 || __GNUC_MINOR__ >= 92 // maybe 92 or 95 ? #if __GNUC__ > 2 || __GNUC_MINOR__ >= 92 // maybe 92 or 95 ?
#define restrict __restrict__ #define restrict __restrict__

View File

@ -200,9 +200,9 @@ static void stat2proc(const char* S, proc_t *restrict P) {
"%Lu " /* start_time */ "%Lu " /* start_time */
"%lu " "%lu "
"%ld " "%ld "
"%lu %lu %lu %lu %lu %lu " "%lu %"KLF"u %"KLF"u %"KLF"u %"KLF"u %"KLF"u "
"%*s %*s %*s %*s " /* discard, no RT signals & Linux 2.1 used hex */ "%*s %*s %*s %*s " /* discard, no RT signals & Linux 2.1 used hex */
"%lu %lu %lu " "%"KLF"u %lu %lu "
"%d %d " "%d %d "
"%lu %lu", "%lu %lu",
&P->state, &P->state,

View File

@ -102,7 +102,8 @@ typedef struct proc_t {
cmin_flt, /* cumulative min_flt of process and child processes */ cmin_flt, /* cumulative min_flt of process and child processes */
cmaj_flt, /* cumulative maj_flt of process and child processes */ cmaj_flt, /* cumulative maj_flt of process and child processes */
nswap, /* ? */ nswap, /* ? */
cnswap, /* cumulative nswap ? */ cnswap; /* cumulative nswap ? */
unsigned KLONG
start_code, /* address of beginning of code segment */ start_code, /* address of beginning of code segment */
end_code, /* address of end of code segment */ end_code, /* address of end of code segment */
start_stack, /* address of the bottom of stack for the process */ start_stack, /* address of the bottom of stack for the process */