The *_bit() routines are defined to work on a pointer to unsigned long.
And the thread_info.flags is passed to *_bit() routines in
include/linux/thread_info.h. But
- alpha: flags is unsigned int
- ia64, sh, x86_64: flags is __u32
So flags should be changed to unsigned long instead.
The only affected 64-platforms are little endian, so it will work
without this change. But it's better to change it before people copy the
code to a big endian platform.
Signed-off-by: Akinobu Mita <[email protected]>
include/asm-alpha/thread_info.h | 2 +-
include/asm-ia64/thread_info.h | 2 +-
include/asm-sh/thread_info.h | 2 +-
include/asm-x86_64/thread_info.h | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
Index: 2.6-git/include/asm-alpha/thread_info.h
===================================================================
--- 2.6-git.orig/include/asm-alpha/thread_info.h
+++ 2.6-git/include/asm-alpha/thread_info.h
@@ -14,7 +14,7 @@ struct thread_info {
struct pcb_struct pcb; /* palcode state */
struct task_struct *task; /* main task structure */
- unsigned int flags; /* low level flags */
+ unsigned long flags; /* low level flags */
unsigned int ieee_state; /* see fpu.h */
struct exec_domain *exec_domain; /* execution domain */
Index: 2.6-git/include/asm-ia64/thread_info.h
===================================================================
--- 2.6-git.orig/include/asm-ia64/thread_info.h
+++ 2.6-git/include/asm-ia64/thread_info.h
@@ -24,7 +24,7 @@
struct thread_info {
struct task_struct *task; /* XXX not really needed, except for dup_task_struct() */
struct exec_domain *exec_domain;/* execution domain */
- __u32 flags; /* thread_info flags (see TIF_*) */
+ unsigned long flags; /* thread_info flags (see TIF_*) */
__u32 cpu; /* current CPU */
mm_segment_t addr_limit; /* user-level address space limit */
int preempt_count; /* 0=premptable, <0=BUG; will also serve as bh-counter */
Index: 2.6-git/include/asm-sh/thread_info.h
===================================================================
--- 2.6-git.orig/include/asm-sh/thread_info.h
+++ 2.6-git/include/asm-sh/thread_info.h
@@ -18,7 +18,7 @@
struct thread_info {
struct task_struct *task; /* main task structure */
struct exec_domain *exec_domain; /* execution domain */
- __u32 flags; /* low level flags */
+ unsigned long flags; /* low level flags */
__u32 cpu;
int preempt_count; /* 0 => preemptable, <0 => BUG */
struct restart_block restart_block;
Index: 2.6-git/include/asm-x86_64/thread_info.h
===================================================================
--- 2.6-git.orig/include/asm-x86_64/thread_info.h
+++ 2.6-git/include/asm-x86_64/thread_info.h
@@ -26,7 +26,7 @@ struct exec_domain;
struct thread_info {
struct task_struct *task; /* main task structure */
struct exec_domain *exec_domain; /* execution domain */
- __u32 flags; /* low level flags */
+ unsigned long flags; /* low level flags */
__u32 status; /* thread synchronous flags */
__u32 cpu; /* current CPU */
int preempt_count; /* 0 => preemptable, <0 => BUG */
--
--- 2.6-git.orig/include/asm-ia64/thread_info.h
+++ 2.6-git/include/asm-ia64/thread_info.h
@@ -24,7 +24,7 @@
struct thread_info {
struct task_struct *task; /* XXX not really needed, except for dup_task_struct() */
struct exec_domain *exec_domain;/* execution domain */
- __u32 flags; /* thread_info flags (see TIF_*) */
+ unsigned long flags; /* thread_info flags (see TIF_*) */
__u32 cpu; /* current CPU */
mm_segment_t addr_limit; /* user-level address space limit */
int preempt_count; /* 0=premptable, <0=BUG; will also serve as bh-counter */
This leaves a useless hole in the structure. Tell me again why
this is a good thing?
-Tony
On Wed, Feb 01, 2006 at 10:17:43AM -0800, Luck, Tony wrote:
>
> --- 2.6-git.orig/include/asm-ia64/thread_info.h
> +++ 2.6-git/include/asm-ia64/thread_info.h
> @@ -24,7 +24,7 @@
> struct thread_info {
> struct task_struct *task; /* XXX not really needed, except for dup_task_struct() */
> struct exec_domain *exec_domain;/* execution domain */
> - __u32 flags; /* thread_info flags (see TIF_*) */
> + unsigned long flags; /* thread_info flags (see TIF_*) */
> __u32 cpu; /* current CPU */
> mm_segment_t addr_limit; /* user-level address space limit */
> int preempt_count; /* 0=premptable, <0=BUG; will also serve as bh-counter */
>
> This leaves a useless hole in the structure. Tell me again why
> this is a good thing?
This patch stops warning message introduced by the "[patch 25/44]
ia64: use generic bitops" which replaces __set_bit() family to
generic one.
But I realize that I can't replace to generic one for ia64.
Because __set_bit() family are using the pointer to __u32, but
generic __set_bit() family are using the pointer to unsigned long.
So the patch 25/44 is wrong and the change above is unnessesary.
Thanks