From: Chen Gang <gang.chen@asianux.com>
To: Christoph Lameter <cl@linux.com>
Cc: Chen Gang F T <chen.gang.flying.transformer@gmail.com>,
Pekka Enberg <penberg@kernel.org>,
mpm@selenic.com, linux-mm@kvack.org
Subject: Re: [PATCH] mm/slub.c: use 'unsigned long' instead of 'int' for variable 'slub_debug'
Date: Mon, 22 Jul 2013 09:19:47 +0800 [thread overview]
Message-ID: <51EC88B3.7080506@asianux.com> (raw)
In-Reply-To: <0000013ff73b8090-4aef0610-aff7-420a-8a7d-e1120607c382-000000@email.amazonses.com>
On 07/19/2013 10:00 PM, Christoph Lameter wrote:
> On Fri, 19 Jul 2013, Chen Gang F T wrote:
>
>>> The fundamental issue is that typically ints are used for flags and I
>>> would like to keep it that way. Changing the constants in slab.h and the
>>> allocator code to be unsigned int instead of unsigned long wont be that
>>> much of a deal.
>>>
>>
>> At least, we need use 'unsigned' instead of 'signed'.
>
> Ok.
>
>> Hmm... Things maybe seem more complex, please see bellow:
>>
>> For 'SLAB_RED_ZONE' (or the other constants), they also can be assigned
>> to "struct kmem_cache" member variable 'flags'.
>>
>> But for "struct kmem_cache", it has 2 different definitions, they share
>> with the 'SLAB_RED_ZONE' (or the other constants).
>>
>> One defines 'flags' as 'unsigned int' in "include/linux/slab_def.h"
>>
>> 16 /*
>> 17 * struct kmem_cache
>> 18 *
>> 19 * manages a cache.
>> 20 */
>> 21
>> 22 struct kmem_cache {
>> 23 /* 1) Cache tunables. Protected by cache_chain_mutex */
>> 24 unsigned int batchcount;
>> 25 unsigned int limit;
>> 26 unsigned int shared;
>> 27
>> 28 unsigned int size;
>> 29 u32 reciprocal_buffer_size;
>> 30 /* 2) touched by every alloc & free from the backend */
>> 31
>> 32 unsigned int flags; /* constant flags */
>> 33 unsigned int num; /* # of objs per slab */
>> ...
>>
>> The other defines 'flags' as 'unsigned long' in "include/linux/slub_def.h"
>> (but from its comments, it even says it is for 'Slab' cache management !!)
>
> SLUB is slab allocator so there is nothing wrong with that.
>
OK, thanks.
>> Maybe it is also related with our discussion ('unsigned int' or 'unsigned long') ?
>
> Well we can make this uniformly unsigned int or long I guess. What would
> be the benefits of one vs the other?
>
Yeah, need let the 2 'flags' with the same type: "make this uniformly
unsigned int or long".
Hmm... Flags variable is always the solid length variable, so it is not
suitable to use 'unsigned long' which length depends on 32/64 machine
automatically.
If the 'unsigned int' is not enough, we need use 'unsigned long long'
instead of. Else (it's enough), better to still use 'unsigned int' to
save memory usage.
'unsigned long' is useful(necessary) for some variables (e.g. address
related variables), but is not suitable for the always solid length
variable.
Thanks.
--
Chen Gang
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
prev parent reply other threads:[~2013-07-22 1:20 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-12 1:43 Chen Gang
2013-07-12 3:27 ` [PATCH] mm/slub.c: beautify code of this file Chen Gang
2013-07-12 13:58 ` Christoph Lameter
2013-07-15 0:31 ` Chen Gang
2013-07-15 1:04 ` [PATCH 0/2] " Chen Gang
2013-07-15 1:05 ` [PATCH 1/2] mm/slub.c: beautify code for 80 column limitation and tab alignment Chen Gang
2013-07-15 14:19 ` Christoph Lameter
2013-07-16 0:55 ` Chen Gang
2013-07-15 1:06 ` [PATCH 2/2] mm/slub.c: beautify code for removing redundancy 'break' statement Chen Gang
2013-07-17 7:08 ` Pekka Enberg
2013-07-17 14:47 ` Christoph Lameter
2013-07-18 0:02 ` Chen Gang
2013-07-12 13:53 ` [PATCH] mm/slub.c: use 'unsigned long' instead of 'int' for variable 'slub_debug' Christoph Lameter
2013-07-15 0:19 ` Chen Gang
2013-07-15 14:17 ` Christoph Lameter
2013-07-16 0:53 ` Chen Gang
2013-07-17 14:46 ` Christoph Lameter
2013-07-18 0:13 ` Chen Gang
2013-07-18 13:42 ` Christoph Lameter
2013-07-19 0:50 ` Chen Gang F T
2013-07-19 14:00 ` Christoph Lameter
2013-07-22 1:19 ` Chen Gang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51EC88B3.7080506@asianux.com \
--to=gang.chen@asianux.com \
--cc=chen.gang.flying.transformer@gmail.com \
--cc=cl@linux.com \
--cc=linux-mm@kvack.org \
--cc=mpm@selenic.com \
--cc=penberg@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox