lkml.org 
[lkml]   [2007]   [Dec]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: Warnings from sched_debug.c

    * Meelis Roos <mroos@linux.ee> wrote:

    > This happens on sparc64 with 2.6.24-rc6 (gcc-4.2):
    >
    > CC kernel/sched.o
    > In file included from kernel/sched.c:879:
    > kernel/sched_debug.c: In function 'nsec_high':
    > kernel/sched_debug.c:38: warning: comparison of distinct pointer types lacks a cast
    > kernel/sched_debug.c:41: warning: comparison of distinct pointer types lacks a cast
    > kernel/sched_debug.c: In function 'nsec_low':
    > kernel/sched_debug.c:51: warning: comparison of distinct pointer types lacks a cast

    it should be harmless. Does the patch below fix the warnings?

    Ingo

    -------------->
    Subject: sched: fix gcc warnings
    From: Ingo Molnar <mingo@elte.hu>

    Meelis Roos reported these warnings on sparc64:

    CC kernel/sched.o
    In file included from kernel/sched.c:879:
    kernel/sched_debug.c: In function 'nsec_high':
    kernel/sched_debug.c:38: warning: comparison of distinct pointer types lacks a cast

    the debug check in do_div() is over-eager here, because the long long
    is always positive in these places. Mark this by casting them to
    unsigned long long.

    no change in code output:

    text data bss dec hex filename
    51471 6582 376 58429 e43d sched.o.before
    51471 6582 376 58429 e43d sched.o.after

    md5:
    7f7729c111f185bf3ccea4d542abc049 sched.o.before.asm
    7f7729c111f185bf3ccea4d542abc049 sched.o.after.asm

    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    ---
    kernel/sched_debug.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    Index: linux/kernel/sched_debug.c
    ===================================================================
    --- linux.orig/kernel/sched_debug.c
    +++ linux/kernel/sched_debug.c
    @@ -31,9 +31,9 @@
    /*
    * Ease the printing of nsec fields:
    */
    -static long long nsec_high(long long nsec)
    +static long long nsec_high(unsigned long long nsec)
    {
    - if (nsec < 0) {
    + if ((long long)nsec < 0) {
    nsec = -nsec;
    do_div(nsec, 1000000);
    return -nsec;
    @@ -43,9 +43,9 @@ static long long nsec_high(long long nse
    return nsec;
    }

    -static unsigned long nsec_low(long long nsec)
    +static unsigned long nsec_low(unsigned long long nsec)
    {
    - if (nsec < 0)
    + if ((long long)nsec < 0)
    nsec = -nsec;

    return do_div(nsec, 1000000);

    \
     
     \ /
      Last update: 2007-12-21 12:07    [W:0.027 / U:0.292 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site