2005-09-14 22:27:09

by Jeff Dike

[permalink] [raw]
Subject: [PATCH 1/10] UML - _switch_to code consolidation

This patch moves code that is in both switch_to_tt and
switch_to_skas to the top level _switch_to function, keeping us from
duplicating code. It is required for the stack trace patch to work
properly.

Signed-off-by: Allan Graves <[email protected]>
Signed-off-by: Jeff Dike <[email protected]>

Index: linux-2.6.13/arch/um/kernel/process_kern.c
===================================================================
--- linux-2.6.13.orig/arch/um/kernel/process_kern.c 2005-09-13 16:04:11.000000000 -0400
+++ linux-2.6.13/arch/um/kernel/process_kern.c 2005-09-13 16:08:18.000000000 -0400
@@ -113,8 +113,16 @@

void *_switch_to(void *prev, void *next, void *last)
{
- return(CHOOSE_MODE(switch_to_tt(prev, next),
- switch_to_skas(prev, next)));
+ struct task_struct *from = prev;
+ struct task_struct *to= next;
+
+ to->thread.prev_sched = from;
+ set_current(to);
+
+ CHOOSE_MODE_PROC(switch_to_tt, switch_to_skas, prev, next);
+
+ return(current->thread.prev_sched);
+
}

void interrupt_end(void)
Index: linux-2.6.13/arch/um/kernel/skas/include/mode_kern-skas.h
===================================================================
--- linux-2.6.13.orig/arch/um/kernel/skas/include/mode_kern-skas.h 2005-09-13 16:04:12.000000000 -0400
+++ linux-2.6.13/arch/um/kernel/skas/include/mode_kern-skas.h 2005-09-13 16:08:18.000000000 -0400
@@ -11,7 +11,7 @@
#include "asm/ptrace.h"

extern void flush_thread_skas(void);
-extern void *switch_to_skas(void *prev, void *next);
+extern void switch_to_skas(void *prev, void *next);
extern void start_thread_skas(struct pt_regs *regs, unsigned long eip,
unsigned long esp);
extern int copy_thread_skas(int nr, unsigned long clone_flags,
Index: linux-2.6.13/arch/um/kernel/skas/process_kern.c
===================================================================
--- linux-2.6.13.orig/arch/um/kernel/skas/process_kern.c 2005-09-13 16:05:34.000000000 -0400
+++ linux-2.6.13/arch/um/kernel/skas/process_kern.c 2005-09-13 16:08:18.000000000 -0400
@@ -24,7 +24,7 @@
#include "proc_mm.h"
#include "registers.h"

-void *switch_to_skas(void *prev, void *next)
+void switch_to_skas(void *prev, void *next)
{
struct task_struct *from, *to;

@@ -35,16 +35,11 @@
if(current->pid == 0)
switch_timers(0);

- to->thread.prev_sched = from;
- set_current(to);
-
switch_threads(&from->thread.mode.skas.switch_buf,
to->thread.mode.skas.switch_buf);

if(current->pid == 0)
switch_timers(1);
-
- return(current->thread.prev_sched);
}

extern void schedule_tail(struct task_struct *prev);
Index: linux-2.6.13/arch/um/kernel/tt/include/mode_kern-tt.h
===================================================================
--- linux-2.6.13.orig/arch/um/kernel/tt/include/mode_kern-tt.h 2005-09-13 16:04:12.000000000 -0400
+++ linux-2.6.13/arch/um/kernel/tt/include/mode_kern-tt.h 2005-09-13 16:08:18.000000000 -0400
@@ -11,7 +11,7 @@
#include "asm/ptrace.h"
#include "asm/uaccess.h"

-extern void *switch_to_tt(void *prev, void *next);
+extern void switch_to_tt(void *prev, void *next);
extern void flush_thread_tt(void);
extern void start_thread_tt(struct pt_regs *regs, unsigned long eip,
unsigned long esp);
Index: linux-2.6.13/arch/um/kernel/tt/process_kern.c
===================================================================
--- linux-2.6.13.orig/arch/um/kernel/tt/process_kern.c 2005-09-13 16:04:11.000000000 -0400
+++ linux-2.6.13/arch/um/kernel/tt/process_kern.c 2005-09-13 16:08:38.000000000 -0400
@@ -26,7 +26,7 @@
#include "init.h"
#include "tt.h"

-void *switch_to_tt(void *prev, void *next, void *last)
+int switch_to_tt(void *prev, void *next, void *last)
{
struct task_struct *from, *to, *prev_sched;
unsigned long flags;
@@ -36,8 +36,6 @@
from = prev;
to = next;

- to->thread.prev_sched = from;
-
cpu = from->thread_info->cpu;
if(cpu == 0)
forward_interrupts(to->thread.mode.tt.extern_pid);
@@ -53,7 +51,6 @@
forward_pending_sigio(to->thread.mode.tt.extern_pid);

c = 0;
- set_current(to);

err = os_write_file(to->thread.mode.tt.switch_pipe[1], &c, sizeof(c));
if(err != sizeof(c))
@@ -85,8 +82,6 @@

flush_tlb_all();
local_irq_restore(flags);
-
- return(current->thread.prev_sched);
}

void release_thread_tt(struct task_struct *task)


2005-09-15 05:31:16

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH 1/10] UML - _switch_to code consolidation


Which if any of these are -rc material? uml-return-a-real-error-code.patch?

Thanks.

2005-09-15 09:59:17

by Pavel Machek

[permalink] [raw]
Subject: Re: [PATCH 1/10] UML - _switch_to code consolidation

Hi!

> This patch moves code that is in both switch_to_tt and
> switch_to_skas to the top level _switch_to function, keeping us from
> duplicating code. It is required for the stack trace patch to work
> properly.
>
> Signed-off-by: Allan Graves <[email protected]>
> Signed-off-by: Jeff Dike <[email protected]>
>
> Index: linux-2.6.13/arch/um/kernel/process_kern.c
> ===================================================================
> --- linux-2.6.13.orig/arch/um/kernel/process_kern.c 2005-09-13 16:04:11.000000000 -0400
> +++ linux-2.6.13/arch/um/kernel/process_kern.c 2005-09-13 16:08:18.000000000 -0400
> @@ -113,8 +113,16 @@
>
> void *_switch_to(void *prev, void *next, void *last)
> {
> - return(CHOOSE_MODE(switch_to_tt(prev, next),
> - switch_to_skas(prev, next)));
> + struct task_struct *from = prev;
> + struct task_struct *to= next;
> +
> + to->thread.prev_sched = from;
> + set_current(to);
> +
> + CHOOSE_MODE_PROC(switch_to_tt, switch_to_skas, prev, next);
> +
> + return(current->thread.prev_sched);
> +
> }

I sense a whitespace damage here.
Pavel

--
if you have sharp zaurus hardware you don't need... you know my address

2005-09-15 20:24:17

by Jeff Dike

[permalink] [raw]
Subject: Re: [PATCH 1/10] UML - _switch_to code consolidation

On Wed, Sep 14, 2005 at 10:30:35PM -0700, Andrew Morton wrote:
> Which if any of these are -rc material? uml-return-a-real-error-code.patch?

I consider them all to be 2.6.14 material, which is why I sent them.

With the exception of uml-breakpoint-an-arbitrary-thread.patch, which
adds a bit of functionality, they are all bug fixes and code
movement/cleanup. In order of my preference of reaching mainline:

uml-remove-include-of-asm-elfh.patch
serious bug - this fixes the x86_64 build

uml-preserve-errno-in-error-paths.patch
serious bug - if you hit some of these, UML will hang

uml-return-a-real-error-code.patch
a small bug, almost a cleanup

uml-remove-a-useless-include.patch
uml-remove-an-unused-file.patch
uml-remove-some-build-warnings.patch
code cleanup

uml-move-libc-code-out-of-mem_userc-and-tempfilec.patch
uml-merge-mem_userc-and-memc.patch
code movement

uml-_switch_to-code-consolidation.patch
code cleanup - can be omitted from mainline if
uml-breakpoint-an-arbitrary-thread.patch is

uml-breakpoint-an-arbitrary-thread.patch
functionality


Jeff

2005-09-16 19:06:50

by Blaisorblade

[permalink] [raw]
Subject: Re: [uml-devel] Re: [PATCH 1/10] UML - _switch_to code consolidation

On Thursday 15 September 2005 11:58, Pavel Machek wrote:
> Hi!
>

> I sense a whitespace damage here.
Yes, it seems definitely that getting Jeff to use tabs consistently is a
daunting task, since when he started removing the Emacs annotations from the
files.

Apart for parentheses excess in return and missing spaces with if and such...

Jeff, have you moved that to your emacs settings or not yet?
--
Inform me of my mistakes, so I can keep imitating Homer Simpson's "Doh!".
Paolo Giarrusso, aka Blaisorblade (Skype ID "PaoloGiarrusso", ICQ 215621894)
http://www.user-mode-linux.org/~blaisorblade






___________________________________
Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB
http://mail.yahoo.it