All of lore.kernel.org
 help / color / mirror / Atom feed
* [uml-devel] stack and scheduler patches
@ 2005-08-31 23:06 Allan Graves
  2005-09-02 16:59 ` Jeff Dike
  0 siblings, 1 reply; 6+ messages in thread
From: Allan Graves @ 2005-08-31 23:06 UTC (permalink / raw)
  To: user-mode-linux-devel

[-- Attachment #1: Type: text/plain, Size: 64 bytes --]

Jeff,
Here's the patches.  Hope these meet your approval!
Allan

[-- Attachment #2: sched_um.patch --]
[-- Type: text/plain, Size: 5148 bytes --]

diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/kernel/process_kern.c linux-2.6.13-stack/arch/um/kernel/process_kern.c
--- linux-2.6.13/arch/um/kernel/process_kern.c	2005-08-28 19:41:01.000000000 -0400
+++ linux-2.6.13-stack/arch/um/kernel/process_kern.c	2005-08-31 17:50:17.000000000 -0400
@@ -113,8 +113,17 @@
 
 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=(struct task_struct*)prev;
+        struct task_struct *to=(struct task_struct*)next;
+
+        to->thread.prev_sched = from;
+        set_current(to);
+
+          CHOOSE_MODE(switch_to_tt(prev, next),
+             switch_to_skas(prev, next));
+
+        return(current->thread.prev_sched); 
+
 }
 
 void interrupt_end(void)
diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/kernel/skas/include/mode_kern-skas.h linux-2.6.13-stack/arch/um/kernel/skas/include/mode_kern-skas.h
--- linux-2.6.13/arch/um/kernel/skas/include/mode_kern-skas.h	2005-08-28 19:41:01.000000000 -0400
+++ linux-2.6.13-stack/arch/um/kernel/skas/include/mode_kern-skas.h	2005-08-30 16:46:17.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 int 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,
diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/kernel/skas/process_kern.c linux-2.6.13-stack/arch/um/kernel/skas/process_kern.c
--- linux-2.6.13/arch/um/kernel/skas/process_kern.c	2005-08-28 19:41:01.000000000 -0400
+++ linux-2.6.13-stack/arch/um/kernel/skas/process_kern.c	2005-08-31 15:48:35.000000000 -0400
@@ -24,7 +24,7 @@
 #include "proc_mm.h"
 #include "registers.h"
 
-void *switch_to_skas(void *prev, void *next)
+int switch_to_skas(void *prev, void *next)
 {
 	struct task_struct *from, *to;
 
@@ -35,8 +35,6 @@
 	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);
@@ -44,7 +42,7 @@
 	if(current->pid == 0)
 		switch_timers(1);
 
-	return(current->thread.prev_sched);
+	return(0);
 }
 
 extern void schedule_tail(struct task_struct *prev);
diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/kernel/tt/include/mode_kern-tt.h linux-2.6.13-stack/arch/um/kernel/tt/include/mode_kern-tt.h
--- linux-2.6.13/arch/um/kernel/tt/include/mode_kern-tt.h	2005-08-28 19:41:01.000000000 -0400
+++ linux-2.6.13-stack/arch/um/kernel/tt/include/mode_kern-tt.h	2005-08-31 11:15:55.000000000 -0400
@@ -11,7 +11,7 @@
 #include "asm/ptrace.h"
 #include "asm/uaccess.h"
 
-extern void *switch_to_tt(void *prev, void *next);
+extern int 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);
diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/kernel/tt/process_kern.c linux-2.6.13-stack/arch/um/kernel/tt/process_kern.c
--- linux-2.6.13/arch/um/kernel/tt/process_kern.c	2005-08-28 19:41:01.000000000 -0400
+++ linux-2.6.13-stack/arch/um/kernel/tt/process_kern.c	2005-08-31 15:48:31.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,7 +36,6 @@
 	from = prev;
 	to = next;
 
-	to->thread.prev_sched = from;
 
 	cpu = from->thread_info->cpu;
 	if(cpu == 0)
@@ -53,7 +52,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))
@@ -86,7 +84,7 @@
 	flush_tlb_all();
 	local_irq_restore(flags);
 
-	return(current->thread.prev_sched);
+        return(0);
 }
 
 void release_thread_tt(struct task_struct *task)

[-- Attachment #3: stack_trace.patch --]
[-- Type: text/plain, Size: 6271 bytes --]

diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/drivers/mconsole_kern.c linux-2.6.13-stack/arch/um/drivers/mconsole_kern.c
--- linux-2.6.13/arch/um/drivers/mconsole_kern.c	2005-08-28 19:41:01.000000000 -0400
+++ linux-2.6.13-stack/arch/um/drivers/mconsole_kern.c	2005-08-31 16:24:51.000000000 -0400
@@ -32,6 +32,7 @@
 #include "os.h"
 #include "umid.h"
 #include "irq_kern.h"
+#include "choose-mode.h"
 
 static int do_unlink_socket(struct notifier_block *notifier, 
 			    unsigned long what, void *data)
@@ -276,6 +277,7 @@
     go - continue the UML after a 'stop' \n\
     log <string> - make UML enter <string> into the kernel log\n\
     proc <file> - returns the contents of the UML's /proc/<file>\n\
+    stack <pid> - returns the stack of the specified pid\n\
 "
 
 void mconsole_help(struct mc_request *req)
@@ -479,6 +481,54 @@
 }
 #endif
 
+/* Mconsole stack trace
+   Added by Allan Graves, Jeff Dike
+   Dumps a stacks registers to the linux console.
+   Usage stack <pid>.  */
+void do_stack(struct mc_request *req)
+{
+        char *ptr = req->request.data; 
+        int pid_requested=-1;
+        struct task_struct *from=NULL;
+	struct task_struct *to=NULL;
+       
+        /* Would be nice:
+           1) Send showregs output to mconsole.
+           2) Add a way to stack dump all pids.
+        */
+
+        ptr += strlen("stack");
+        while(isspace(*ptr)) ptr++;
+
+        /* Should really check for multiple pids or reject bad args here */
+        /* What do the arguments in mconsole_reply mean? */
+        if (0==sscanf(ptr, "%d", &pid_requested) || pid_requested==-1) {
+                mconsole_reply(req, "Please specify a pid", 1, 0);
+                return;
+        }
+
+        from=current;
+        to=find_task_by_pid(pid_requested);
+
+        if((!to) || (pid_requested ==0)) {
+                mconsole_reply(req, "Couldn't find that pid", 1, 0);
+                return;
+        }
+        to->thread.saved_task=current;
+
+        switch_to(from,to,from);
+        mconsole_reply(req, "Stack Dumped to console and message log", 0, 0);
+
+}
+
+void mconsole_stack(struct mc_request *req)
+{
+	/* This command doesn't work in TT mode, so let's check and then get out of here */
+	CHOOSE_MODE(mconsole_reply(req, "Sorry, this doesn't work in TT mode", 1, 0),
+          do_stack(req));
+}
+
+
 /* Changed by mconsole_setup, which is __setup, and called before SMP is
  * active.
  */
diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/drivers/mconsole_user.c linux-2.6.13-stack/arch/um/drivers/mconsole_user.c
--- linux-2.6.13/arch/um/drivers/mconsole_user.c	2005-08-28 19:41:01.000000000 -0400
+++ linux-2.6.13-stack/arch/um/drivers/mconsole_user.c	2005-08-31 16:59:51.000000000 -0400
@@ -30,6 +30,7 @@
 	{ "go", mconsole_go, MCONSOLE_INTR },
 	{ "log", mconsole_log, MCONSOLE_INTR },
 	{ "proc", mconsole_proc, MCONSOLE_PROC },
+        { "stack", mconsole_stack, MCONSOLE_INTR },
 };
 
 /* Initialized in mconsole_init, which is an initcall */
Binary files linux-2.6.13/arch/um/drivers/.mconsole_user.c.swp and linux-2.6.13-stack/arch/um/drivers/.mconsole_user.c.swp differ
diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/include/mconsole.h linux-2.6.13-stack/arch/um/include/mconsole.h
--- linux-2.6.13/arch/um/include/mconsole.h	2005-08-28 19:41:01.000000000 -0400
+++ linux-2.6.13-stack/arch/um/include/mconsole.h	2005-08-29 17:09:47.000000000 -0400
@@ -81,6 +81,7 @@
 extern void mconsole_go(struct mc_request *req);
 extern void mconsole_log(struct mc_request *req);
 extern void mconsole_proc(struct mc_request *req);
+extern void mconsole_stack(struct mc_request *req);
 
 extern int mconsole_get_request(int fd, struct mc_request *req);
 extern int mconsole_notify(char *sock_name, int type, const void *data, 
diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/arch/um/kernel/process_kern.c linux-2.6.13-stack/arch/um/kernel/process_kern.c
--- linux-2.6.13/arch/um/kernel/process_kern.c	2005-08-31 18:35:52.000000000 -0400
+++ linux-2.6.13-stack/arch/um/kernel/process_kern.c	2005-08-31 18:46:45.000000000 -0400
@@ -119,8 +120,18 @@
         to->thread.prev_sched = from;
         set_current(to);
 
+        do 
+        { 
+          current->thread.saved_task = NULL ;
           CHOOSE_MODE(switch_to_tt(prev, next),
              switch_to_skas(prev, next));
+          if(current->thread.saved_task) 
+            show_regs(&(current->thread.regs));
+            next=(void *)current->thread.saved_task;
+            prev=(void*)current;
+        } while(current->thread.saved_task);
+
+
 
         return(current->thread.prev_sched); 
 
diff -uNr -x '.dep*' -x '.hdep*' -x '*.[oas]' -x '*~' -x '#*' -x '*CVS*' -x '*.orig' -x '*.rej' -x '*.old' -x '.menu*' -x asm -x local.h -x System.map -x autoconf.h -x compile.h -x version.h -x .version -x defkaymap.c -x uni_hash.tbl linux-2.6.13/include/asm-um/processor-generic.h linux-2.6.13-stack/include/asm-um/processor-generic.h
--- linux-2.6.13/include/asm-um/processor-generic.h	2005-08-28 19:41:01.000000000 -0400
+++ linux-2.6.13-stack/include/asm-um/processor-generic.h	2005-08-30 11:26:03.000000000 -0400
@@ -21,6 +21,7 @@
 	 * copy_thread) to mark that we are begin called from userspace (fork /
 	 * vfork / clone), and reset to 0 after. It is left to 0 when called
 	 * from kernelspace (i.e. kernel_thread() or fork_idle(), as of 2.6.11). */
+	struct task_struct *saved_task;
 	int forking;
 	int nsyscalls;
 	struct pt_regs regs;

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [uml-devel] stack and scheduler patches
  2005-08-31 23:06 [uml-devel] stack and scheduler patches Allan Graves
@ 2005-09-02 16:59 ` Jeff Dike
  2005-09-04 11:51   ` Blaisorblade
  2005-09-06 15:46   ` [uml-devel] stack and scheduler patches Allan Graves
  0 siblings, 2 replies; 6+ messages in thread
From: Jeff Dike @ 2005-09-02 16:59 UTC (permalink / raw)
  To: Allan Graves; +Cc: user-mode-linux-devel

On Wed, Aug 31, 2005 at 07:06:33PM -0400, Allan Graves wrote:
> Jeff,
> Here's the patches.  Hope these meet your approval!
> Allan

Some comments - I have these all fixed:

	+        struct task_struct *from=(struct task_struct*)prev;
	+        struct task_struct *to=(struct task_struct*)next;
There's no need to cast when the source is a void *

	+          CHOOSE_MODE(switch_to_tt(prev, next),
	+             switch_to_skas(prev, next));
There's a CHOOSE_MODE_PROC which lets you avoid repeating common argument
lists, although I was doing this wrong here too.

	+extern int switch_to_skas(void *prev, void *next);
	+extern int switch_to_tt(void *prev, void *next);
Since these can't do anything but return 0, they might as well be void

	+        if (0==sscanf(ptr, "%d", &pid_requested) || pid_requested==-1) {
The pid_requested==-1 is redundant - if sscanf failed, we just want to bail out

	+        if((!to) || (pid_requested == 0)) {
Why the check against 0?

	+		next=(void *)current->thread.saved_task;
	+		prev=(void*)current;
No need to cast when the target is a void * either

Also, OK for me to add a Signed-off-by: you?

				Jeff


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [uml-devel] stack and scheduler patches
  2005-09-02 16:59 ` Jeff Dike
@ 2005-09-04 11:51   ` Blaisorblade
  2005-09-06 15:37     ` Jeff Dike
  2005-09-06 16:10     ` [uml-devel] sched and stack patch changelogs Allan Graves
  2005-09-06 15:46   ` [uml-devel] stack and scheduler patches Allan Graves
  1 sibling, 2 replies; 6+ messages in thread
From: Blaisorblade @ 2005-09-04 11:51 UTC (permalink / raw)
  To: user-mode-linux-devel; +Cc: Jeff Dike, Allan Graves

On Friday 02 September 2005 18:59, Jeff Dike wrote:
> On Wed, Aug 31, 2005 at 07:06:33PM -0400, Allan Graves wrote:
> > Jeff,
> > Here's the patches.  Hope these meet your approval!
Could you please write a proper changelog? Reading a patch is possible, but 
needs time which I don't have in the very moment.

Also, what is the difference between your "stack trace" patch, which adds a 
member to thread_struct, for each process, so I'd like a minimum of 
justification, and one of the sysrq options which does exactly this?

Apart that the second is currently buggy, and is global, as in what you plan 
here:

/* Would be nice:
+           1) Send showregs output to mconsole.
+           2) Add a way to stack dump all pids.
+        */

Sorry if these questions seem bad - but that's why changelogs are used.
> > Allan

-- 
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



-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [uml-devel] stack and scheduler patches
  2005-09-04 11:51   ` Blaisorblade
@ 2005-09-06 15:37     ` Jeff Dike
  2005-09-06 16:10     ` [uml-devel] sched and stack patch changelogs Allan Graves
  1 sibling, 0 replies; 6+ messages in thread
From: Jeff Dike @ 2005-09-06 15:37 UTC (permalink / raw)
  To: Blaisorblade; +Cc: user-mode-linux-devel, Allan Graves

On Sun, Sep 04, 2005 at 01:51:32PM +0200, Blaisorblade wrote:
> Also, what is the difference between your "stack trace" patch, which adds a 
> member to thread_struct, for each process, so I'd like a minimum of 
> justification, and one of the sysrq options which does exactly this?

What this does, and sysrq t doesn't, is allow you to put a breakpoint
on that show_regs call and force a particular thread back into
context.  Then you can poke around the stack with gdb.  You could so
this in tt mode, but not previously in skas mode, and people have
missed this.

				Jeff


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [uml-devel] stack and scheduler patches
  2005-09-02 16:59 ` Jeff Dike
  2005-09-04 11:51   ` Blaisorblade
@ 2005-09-06 15:46   ` Allan Graves
  1 sibling, 0 replies; 6+ messages in thread
From: Allan Graves @ 2005-09-06 15:46 UTC (permalink / raw)
  To: Jeff Dike; +Cc: user-mode-linux-devel

Void casting: my compiler gave me a warning, and I don't like that.
pid=-1, leftover from error checking that i didn't need, my fault.
pid=0, find_task_by_pid(0) will return a valid pointer, but it doesn't 
seem to really be a good task.  This seems to be related to the kernel 
idle task.  If you pass 0, it will seg fault w\o the check.
I'm not sure what a signed off-by does, but long as i can get bb to 
agree with this....  i'm okay with it. :)
Allan


Jeff Dike wrote:

>On Wed, Aug 31, 2005 at 07:06:33PM -0400, Allan Graves wrote:
>  
>
>>Jeff,
>>Here's the patches.  Hope these meet your approval!
>>Allan
>>    
>>
>
>Some comments - I have these all fixed:
>
>	+        struct task_struct *from=(struct task_struct*)prev;
>	+        struct task_struct *to=(struct task_struct*)next;
>There's no need to cast when the source is a void *
>
>	+          CHOOSE_MODE(switch_to_tt(prev, next),
>	+             switch_to_skas(prev, next));
>There's a CHOOSE_MODE_PROC which lets you avoid repeating common argument
>lists, although I was doing this wrong here too.
>
>	+extern int switch_to_skas(void *prev, void *next);
>	+extern int switch_to_tt(void *prev, void *next);
>Since these can't do anything but return 0, they might as well be void
>
>	+        if (0==sscanf(ptr, "%d", &pid_requested) || pid_requested==-1) {
>The pid_requested==-1 is redundant - if sscanf failed, we just want to bail out
>
>	+        if((!to) || (pid_requested == 0)) {
>Why the check against 0?
>
>	+		next=(void *)current->thread.saved_task;
>	+		prev=(void*)current;
>No need to cast when the target is a void * either
>
>Also, OK for me to add a Signed-off-by: you?
>
>				Jeff
>  
>


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [uml-devel] sched and stack patch changelogs.
  2005-09-04 11:51   ` Blaisorblade
  2005-09-06 15:37     ` Jeff Dike
@ 2005-09-06 16:10     ` Allan Graves
  1 sibling, 0 replies; 6+ messages in thread
From: Allan Graves @ 2005-09-06 16:10 UTC (permalink / raw)
  To: Blaisorblade; +Cc: user-mode-linux-devel, Jeff Dike

BB: Sorry I hadn't included a changelog, Jeff and I had talked about this a lot, I forgot that other people would be reading them. :)  

Author: Allan Graves<allan.graves@gmail.com>
	Scheduler Cleanup Patch:
	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.

	Stack Trace Patch:
	This patch implements a stack trace for a thread, not unlike sysrq-t does.  The advantage to this is that a break point can be placed on showreqs, so that upon showing the stack, you jump immediately into the debugger.
	While sysrq-t does the same thing, sysrq-t shows *all* threads stacks.  It also doesn't work right now.  In the future, I thought it might be acceptable to make this show all pids stacks, but perhaps leaving well
	enough alone and just using sysrq-t would be okay.  For now, upon receiving the stack command, UML switches context to that thread, dumps its registers, and then switches context back to the original thread.  Since 
	UML compacts all threads into one of 4 host threads, this sort of mechanism could be expanded in the future to include other debugging helpers that sysrq does not cover.  



Blaisorblade wrote:

>On Friday 02 September 2005 18:59, Jeff Dike wrote:
>  
>
>>On Wed, Aug 31, 2005 at 07:06:33PM -0400, Allan Graves wrote:
>>    
>>
>>>Jeff,
>>>Here's the patches.  Hope these meet your approval!
>>>      
>>>
>Could you please write a proper changelog? Reading a patch is possible, but 
>needs time which I don't have in the very moment.
>
>Also, what is the difference between your "stack trace" patch, which adds a 
>member to thread_struct, for each process, so I'd like a minimum of 
>justification, and one of the sysrq options which does exactly this?
>
>Apart that the second is currently buggy, and is global, as in what you plan 
>here:
>
>/* Would be nice:
>+           1) Send showregs output to mconsole.
>+           2) Add a way to stack dump all pids.
>+        */
>
>Sorry if these questions seem bad - but that's why changelogs are used.
>  
>
>>>Allan
>>>      
>>>
>
>  
>


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-09-06 16:42 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-08-31 23:06 [uml-devel] stack and scheduler patches Allan Graves
2005-09-02 16:59 ` Jeff Dike
2005-09-04 11:51   ` Blaisorblade
2005-09-06 15:37     ` Jeff Dike
2005-09-06 16:10     ` [uml-devel] sched and stack patch changelogs Allan Graves
2005-09-06 15:46   ` [uml-devel] stack and scheduler patches Allan Graves

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.