2003-06-19 00:49:05

by David Mosberger

[permalink] [raw]
Subject: missing bit for thread_info-next-to-task_struct patch

The attached patch is needed to really allow the thread_info to live
in the same chunk of memory as task structure. I missed it in my last
patch because the fix was originally keyed on INIT_THREAD_SIZE, which
was wrong but resulted in a one-liner patch which was easy to miss.
The patch below is cleaner. I suppose it would be nice if we could
get rid of INIT_THREAD_SIZE entirely, but it looks like user-mode
Linux still relies on it.

--david

diff -Nru a/include/linux/sched.h b/include/linux/sched.h
--- a/include/linux/sched.h Wed Jun 18 18:01:04 2003
+++ b/include/linux/sched.h Wed Jun 18 18:01:04 2003
@@ -504,9 +509,10 @@
*/
extern struct exec_domain default_exec_domain;

-#ifndef INIT_THREAD_SIZE
-# define INIT_THREAD_SIZE 2048*sizeof(long)
-#endif
+#ifndef __HAVE_ARCH_TASK_STRUCT_ALLOCATOR
+# ifndef INIT_THREAD_SIZE
+# define INIT_THREAD_SIZE 2048*sizeof(long)
+# endif

union thread_union {
struct thread_info thread_info;
@@ -514,6 +520,9 @@
};

extern union thread_union init_thread_union;
+
+#endif /* !__HAVE_ARCH_TASK_STRUCT_ALLOCATOR */
+
extern struct task_struct init_task;

extern struct mm_struct init_mm;


2003-06-19 04:47:05

by Christoph Hellwig

[permalink] [raw]
Subject: Re: missing bit for thread_info-next-to-task_struct patch

On Wed, Jun 18, 2003 at 06:02:20PM -0700, David Mosberger wrote:
> +++ b/include/linux/sched.h Wed Jun 18 18:01:04 2003
> @@ -504,9 +509,10 @@
> */
> extern struct exec_domain default_exec_domain;
>
> -#ifndef INIT_THREAD_SIZE
> -# define INIT_THREAD_SIZE 2048*sizeof(long)
> -#endif
> +#ifndef __HAVE_ARCH_TASK_STRUCT_ALLOCATOR
> +# ifndef INIT_THREAD_SIZE
> +# define INIT_THREAD_SIZE 2048*sizeof(long)
> +# endif

This looks strange. Either you move the ifndef INIT_THREAD_SIZE
outside the other ifdef or maybe remove it comepltly it it's
not needed otherwise..

2003-06-19 04:52:57

by David Mosberger

[permalink] [raw]
Subject: Re: missing bit for thread_info-next-to-task_struct patch

>>>>> On Thu, 19 Jun 2003 06:00:59 +0100, Christoph Hellwig <[email protected]> said:

Christoph> On Wed, Jun 18, 2003 at 06:02:20PM -0700, David Mosberger wrote:
>> +++ b/include/linux/sched.h Wed Jun 18 18:01:04 2003
>> @@ -504,9 +509,10 @@
>> */
>> extern struct exec_domain default_exec_domain;
>>
>> -#ifndef INIT_THREAD_SIZE
>> -# define INIT_THREAD_SIZE 2048*sizeof(long)
>> -#endif
>> +#ifndef __HAVE_ARCH_TASK_STRUCT_ALLOCATOR
>> +# ifndef INIT_THREAD_SIZE
>> +# define INIT_THREAD_SIZE 2048*sizeof(long)
>> +# endif

Christoph> This looks strange. Either you move the ifndef INIT_THREAD_SIZE
Christoph> outside the other ifdef or maybe remove it comepltly it it's
Christoph> not needed otherwise..

The INIT_THREAD_SIZE cleanup can be done as a separate patch. I don't
want to hack (and probably break) UM for no good reason.

--david