Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.4
crash
crash-sles9-time.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File crash-sles9-time.patch of Package crash
From: Alan Tyson <atyson@hp.com> Subject: [PATCH] Fix "uptime" and "ps -t" for SLES9 References: 352836 This patch adds a quirk for SLES9 jiffies initialisation and corrects the time data in "uptime" and "ps -t" command. Acked-by: Bernhard Walle <bwalle@suse.de> --- defs.h | 8 ++++++++ kernel.c | 9 ++++++++- task.c | 11 +++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) --- a/defs.h +++ b/defs.h @@ -577,6 +571,7 @@ struct kernel_table { ulong p2m_missing; } pvops_xen; int highest_irq; + int is_suse_kernel; }; /* @@ -4905,6 +4632,13 @@ extern struct lkcd_environment *lkcd; #endif /* LKCD_COMMON */ + +/* + * SUSE specific + */ +#define is_SLES9() \ + ((THIS_KERNEL_VERSION == LINUX(2,6,5)) && kt->is_suse_kernel) + /* * gdb_interface.c */ --- a/kernel.c +++ b/kernel.c @@ -211,6 +211,12 @@ kernel_init() verify_version(); + /* + * check if we have a suse kernel (this is the module supported + * patch of agruen@suse.de + */ + kt->is_suse_kernel = symbol_exists("unsupported"); + if (symbol_exists("__per_cpu_offset")) { if (LKCD_KERNTYPES()) i = get_cpus_possible(); @@ -4022,7 +4009,7 @@ get_uptime(char *buf, ulonglong *j64p) if (symbol_exists("jiffies_64")) { get_symbol_data("jiffies_64", sizeof(ulonglong), &jiffies_64); - if (THIS_KERNEL_VERSION >= LINUX(2,6,0)) { + if (THIS_KERNEL_VERSION >= LINUX(2,6,0) && !is_SLES9()) { wrapped = (jiffies_64 & 0xffffffff00000000ULL); if (wrapped) { wrapped -= 0x100000000ULL; @@ -4532,6 +4512,7 @@ no_cpu_flags: fprintf(fp, " p2m_top: %lx\n", kt->pvops_xen.p2m_top); fprintf(fp, " p2m_top_entries: %d\n", kt->pvops_xen.p2m_top_entries); fprintf(fp, " p2m_missing: %lx\n", kt->pvops_xen.p2m_missing); + fprintf(fp, " is_suse_kernel: %ld\n", kt->is_suse_kernel); } /* --- a/task.c +++ b/task.c @@ -3511,6 +3508,12 @@ start_time_timespec(void) default: break; } + /* SLES9 stores start_time in nanoseconds, so set TIMESPEC in order */ + /* to do the right calculations in convert_start_time */ + if (is_SLES9()) { + tt->flags |= TIMESPEC; + return TRUE; + } tt->flags |= NO_TIMESPEC; @@ -3543,6 +3546,11 @@ convert_start_time(ulonglong start_time, ulong tmp1, tmp2; ulonglong wrapped; + /* SLES9's start_time is neither jiffies nor a timespec. It's ns */ + if (is_SLES9()) { + start_time = start_time / 1000000000; + } + switch(tt->flags & (TIMESPEC | NO_TIMESPEC)) { case TIMESPEC:
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor