Re: [patch 2/9] Store max number of objects in the page struct. - Kernel

This is a discussion on Re: [patch 2/9] Store max number of objects in the page struct. - Kernel ; On Wed, 2008-03-19 at 10:49 -0700, Christoph Lameter wrote: > On Wed, 19 Mar 2008, Zhang, Yanmin wrote: > > > > + if ((PAGE_SIZE 65535) > > > + return get_order(size * 65535) - 1; > > Is it ...

+ Reply to Thread
Results 1 to 5 of 5

Thread: Re: [patch 2/9] Store max number of objects in the page struct.

  1. Re: [patch 2/9] Store max number of objects in the page struct.

    On Wed, 2008-03-19 at 10:49 -0700, Christoph Lameter wrote:
    > On Wed, 19 Mar 2008, Zhang, Yanmin wrote:
    >
    > > > + if ((PAGE_SIZE << min_order) / size > 65535)
    > > > + return get_order(size * 65535) - 1;

    > > Is it better to define something like USHORT_MAX to replace 65535?

    >
    > Yes. Do we have something like that?


    I couldn't find such definition in include/linux/kernel.h.


    But glibc defines USHRT_MAX file include/limits.h:

    /* Minimum and maximum values a `signed short int' can hold. */
    # define SHRT_MIN (-32768)
    # define SHRT_MAX 32767

    /* Maximum value an `unsigned short int' can hold. (Minimum is 0.) */
    # define USHRT_MAX 65535


    How about below patch against 2.6.25-rc6?

    ---

    Add definitions of USHRT_MAX and others into kernel. ipc uses it and
    slub implementation might also use it.

    The patch is against 2.6.25-rc6.

    Signed-off-by: Zhang Yanmin

    ---

    --- linux-2.6.25-rc6/include/linux/kernel.h 2008-03-20 04:25:46.000000000 +0800
    +++ linux-2.6.25-rc6_work/include/linux/kernel.h 2008-03-20 04:17:45.000000000 +0800
    @@ -20,6 +20,9 @@
    extern const char linux_banner[];
    extern const char linux_proc_banner[];

    +#define USHRT_MAX ((u16)(~0U))
    +#define SHRT_MAX ((s16)(USHRT_MAX>>1))
    +#define SHRT_MIN (-SHRT_MAX - 1)
    #define INT_MAX ((int)(~0U>>1))
    #define INT_MIN (-INT_MAX - 1)
    #define UINT_MAX (~0U)
    --- linux-2.6.25-rc6/ipc/util.h 2008-03-20 04:25:46.000000000 +0800
    +++ linux-2.6.25-rc6_work/ipc/util.h 2008-03-20 04:22:07.000000000 +0800
    @@ -12,7 +12,6 @@

    #include

    -#define USHRT_MAX 0xffff
    #define SEQ_MULTIPLIER (IPCMNI)

    void sem_init (void);






    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. Re: [patch 2/9] Store max number of objects in the page struct.

    Reviewed-by: Christoph Lameter

    On Thu, 20 Mar 2008, Zhang, Yanmin wrote:

    > On Wed, 2008-03-19 at 10:49 -0700, Christoph Lameter wrote:
    > > On Wed, 19 Mar 2008, Zhang, Yanmin wrote:
    > >
    > > > > + if ((PAGE_SIZE << min_order) / size > 65535)
    > > > > + return get_order(size * 65535) - 1;
    > > > Is it better to define something like USHORT_MAX to replace 65535?

    > >
    > > Yes. Do we have something like that?

    >
    > I couldn't find such definition in include/linux/kernel.h.
    >
    >
    > But glibc defines USHRT_MAX file include/limits.h:
    >
    > /* Minimum and maximum values a `signed short int' can hold. */
    > # define SHRT_MIN (-32768)
    > # define SHRT_MAX 32767
    >
    > /* Maximum value an `unsigned short int' can hold. (Minimum is 0.) */
    > # define USHRT_MAX 65535
    >
    >
    > How about below patch against 2.6.25-rc6?
    >
    > ---
    >
    > Add definitions of USHRT_MAX and others into kernel. ipc uses it and
    > slub implementation might also use it.
    >
    > The patch is against 2.6.25-rc6.
    >
    > Signed-off-by: Zhang Yanmin
    >
    > ---
    >
    > --- linux-2.6.25-rc6/include/linux/kernel.h 2008-03-20 04:25:46.000000000 +0800
    > +++ linux-2.6.25-rc6_work/include/linux/kernel.h 2008-03-20 04:17:45.000000000 +0800
    > @@ -20,6 +20,9 @@
    > extern const char linux_banner[];
    > extern const char linux_proc_banner[];
    >
    > +#define USHRT_MAX ((u16)(~0U))
    > +#define SHRT_MAX ((s16)(USHRT_MAX>>1))
    > +#define SHRT_MIN (-SHRT_MAX - 1)
    > #define INT_MAX ((int)(~0U>>1))
    > #define INT_MIN (-INT_MAX - 1)
    > #define UINT_MAX (~0U)
    > --- linux-2.6.25-rc6/ipc/util.h 2008-03-20 04:25:46.000000000 +0800
    > +++ linux-2.6.25-rc6_work/ipc/util.h 2008-03-20 04:22:07.000000000 +0800
    > @@ -12,7 +12,6 @@
    >
    > #include
    >
    > -#define USHRT_MAX 0xffff
    > #define SEQ_MULTIPLIER (IPCMNI)
    >
    > void sem_init (void);
    >
    >
    >
    >
    >
    >
    >

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. Re: [patch 2/9] Store max number of objects in the page struct.

    On Thu, 20 Mar 2008 11:32:17 +0800
    "Zhang, Yanmin" wrote:

    > Add definitions of USHRT_MAX and others into kernel. ipc uses it and
    > slub implementation might also use it.
    >
    > The patch is against 2.6.25-rc6.
    >
    > Signed-off-by: Zhang Yanmin
    >
    > ---
    >
    > --- linux-2.6.25-rc6/include/linux/kernel.h 2008-03-20 04:25:46.000000000 +0800
    > +++ linux-2.6.25-rc6_work/include/linux/kernel.h 2008-03-20 04:17:45.000000000 +0800
    > @@ -20,6 +20,9 @@
    > extern const char linux_banner[];
    > extern const char linux_proc_banner[];
    >
    > +#define USHRT_MAX ((u16)(~0U))
    > +#define SHRT_MAX ((s16)(USHRT_MAX>>1))
    > +#define SHRT_MIN (-SHRT_MAX - 1)


    We have UINT_MAX and ULONG_MAX and ULLONG_MAX. If these were actually
    UNT_MAX, ULNG_MAX and ULLNG_MAX then USHRT_MAX would make sense.

    But they aren't, so it doesn't

    Please, let's call them USHORT_MAX, SHORT_MAX and SHORT_MIN.

    > --- linux-2.6.25-rc6/ipc/util.h 2008-03-20 04:25:46.000000000 +0800
    > +++ linux-2.6.25-rc6_work/ipc/util.h 2008-03-20 04:22:07.000000000 +0800
    > @@ -12,7 +12,6 @@
    >
    > #include
    >
    > -#define USHRT_MAX 0xffff
    > #define SEQ_MULTIPLIER (IPCMNI)
    >
    > void sem_init (void);


    And then convert IPC to use them?
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  4. Re: [patch 2/9] Store max number of objects in the page struct.

    Andrew Morton writes:

    >> +#define USHRT_MAX ((u16)(~0U))
    >> +#define SHRT_MAX ((s16)(USHRT_MAX>>1))
    >> +#define SHRT_MIN (-SHRT_MAX - 1)

    >
    > We have UINT_MAX and ULONG_MAX and ULLONG_MAX. If these were actually
    > UNT_MAX, ULNG_MAX and ULLNG_MAX then USHRT_MAX would make sense.
    >
    > But they aren't, so it doesn't
    >
    > Please, let's call them USHORT_MAX, SHORT_MAX and SHORT_MIN.


    SHRT_MIN, SHRT_MAX, and USHRT_MAX are the spellings used by
    required in ISO-conforming C implementations. That
    doesn't mean that the kernel has to use those spellings, but it
    does mean that those names are widely understood by C
    programmers.
    --
    Ben Pfaff
    http://benpfaff.org

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  5. [PATCH] Add definitions of USHORT_MAX and others

    Below is the new patch. Thanks for the comments.

    ---

    Add definitions of USHORT_MAX and others into kernel. ipc uses it and
    slub implementation might also use it.

    The patch is against 2.6.25-rc6.

    Signed-off-by: Zhang Yanmin
    Reviewed-by: Christoph Lameter

    ---

    diff -Nraup linux-2.6.25-rc6/include/linux/kernel.h linux-2.6.25-rc6_maxshort/include/linux/kernel.h
    --- linux-2.6.25-rc6/include/linux/kernel.h 2008-03-24 02:05:25.000000000 +0800
    +++ linux-2.6.25-rc6_maxshort/include/linux/kernel.h 2008-03-24 02:07:27.000000000 +0800
    @@ -20,6 +20,9 @@
    extern const char linux_banner[];
    extern const char linux_proc_banner[];

    +#define USHORT_MAX ((u16)(~0U))
    +#define SHORT_MAX ((s16)(USHORT_MAX>>1))
    +#define SHORT_MIN (-SHORT_MAX - 1)
    #define INT_MAX ((int)(~0U>>1))
    #define INT_MIN (-INT_MAX - 1)
    #define UINT_MAX (~0U)
    diff -Nraup linux-2.6.25-rc6/ipc/msg.c linux-2.6.25-rc6_maxshort/ipc/msg.c
    --- linux-2.6.25-rc6/ipc/msg.c 2008-03-24 02:05:25.000000000 +0800
    +++ linux-2.6.25-rc6_maxshort/ipc/msg.c 2008-03-24 02:07:27.000000000 +0800
    @@ -324,19 +324,19 @@ copy_msqid_to_user(void __user *buf, str
    out.msg_rtime = in->msg_rtime;
    out.msg_ctime = in->msg_ctime;

    - if (in->msg_cbytes > USHRT_MAX)
    - out.msg_cbytes = USHRT_MAX;
    + if (in->msg_cbytes > USHORT_MAX)
    + out.msg_cbytes = USHORT_MAX;
    else
    out.msg_cbytes = in->msg_cbytes;
    out.msg_lcbytes = in->msg_cbytes;

    - if (in->msg_qnum > USHRT_MAX)
    - out.msg_qnum = USHRT_MAX;
    + if (in->msg_qnum > USHORT_MAX)
    + out.msg_qnum = USHORT_MAX;
    else
    out.msg_qnum = in->msg_qnum;

    - if (in->msg_qbytes > USHRT_MAX)
    - out.msg_qbytes = USHRT_MAX;
    + if (in->msg_qbytes > USHORT_MAX)
    + out.msg_qbytes = USHORT_MAX;
    else
    out.msg_qbytes = in->msg_qbytes;
    out.msg_lqbytes = in->msg_qbytes;
    diff -Nraup linux-2.6.25-rc6/ipc/util.c linux-2.6.25-rc6_maxshort/ipc/util.c
    --- linux-2.6.25-rc6/ipc/util.c 2008-03-24 02:05:25.000000000 +0800
    +++ linux-2.6.25-rc6_maxshort/ipc/util.c 2008-03-24 02:07:27.000000000 +0800
    @@ -84,8 +84,8 @@ void ipc_init_ids(struct ipc_ids *ids)
    ids->seq = 0;
    {
    int seq_limit = INT_MAX/SEQ_MULTIPLIER;
    - if(seq_limit > USHRT_MAX)
    - ids->seq_max = USHRT_MAX;
    + if(seq_limit > USHORT_MAX)
    + ids->seq_max = USHORT_MAX;
    else
    ids->seq_max = seq_limit;
    }
    diff -Nraup linux-2.6.25-rc6/ipc/util.h linux-2.6.25-rc6_maxshort/ipc/util.h
    --- linux-2.6.25-rc6/ipc/util.h 2008-03-24 02:05:25.000000000 +0800
    +++ linux-2.6.25-rc6_maxshort/ipc/util.h 2008-03-24 02:07:27.000000000 +0800
    @@ -12,7 +12,6 @@

    #include

    -#define USHRT_MAX 0xffff
    #define SEQ_MULTIPLIER (IPCMNI)

    void sem_init (void);


    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread