linux-um archives
 help / color / mirror / Atom feed
* [uml-devel] Question about kernel_thread in UML TT mode
@ 2005-04-28 10:00 Alex LIU
  2005-04-29 20:20 ` Blaisorblade
  0 siblings, 1 reply; 4+ messages in thread
From: Alex LIU @ 2005-04-28 10:00 UTC (permalink / raw)
  To: UML-dev

Hi,all:

I found UML only implement its own kernel_thread function but doesn't implement kernel_thread_helper function.
Then how does UML start a kernel thread in TT mode? Is there any other functions being called? Thanks a lot!

Alex






-------------------------------------------------------
SF.Net email is sponsored by: Tell us your software development plans!
Take this survey and enter to win a one-year sub to SourceForge.net
Plus IDC's 2005 look-ahead and a copy of this survey
Click here to start!  http://www.idcswdc.com/cgi-bin/survey?id\x105hix
_______________________________________________
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] 4+ messages in thread

* RE: [uml-devel] Question about kernel_thread in UML TT mode
  2005-04-29 20:20 ` Blaisorblade
@ 2005-04-29  9:40   ` Alex LIU
  2005-04-29 11:39     ` stian
  0 siblings, 1 reply; 4+ messages in thread
From: Alex LIU @ 2005-04-29  9:40 UTC (permalink / raw)
  To: 'Blaisorblade', user-mode-linux-devel

On Thursday 29 April 2005, Blaisorblade wrote:
> What's kernel_thread_helper? 

kernel_thread_helper and kernel_thread are defined in i386 as following:
-----------------------------------------------
/*
 * This gets run with %ebx containing the
 * function to call, and %edx containing
 * the "args".
 */
extern void kernel_thread_helper(void);
__asm__(".section .text\n"
	".align 4\n"
	"kernel_thread_helper:\n\t"
	"movl %edx,%eax\n\t"
	"pushl %edx\n\t"
	"call *%ebx\n\t"
	"pushl %eax\n\t"
	"call do_exit\n"
	".previous");

/*
 * Create a kernel thread
 */
int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{
	struct pt_regs regs;

	/* BProc: (SLAVE) kernel forks are not subject to BProc's
	 * remote process management stuff. */
	bproc_kcall();

	memset(&regs, 0, sizeof(regs));

	regs.ebx = (unsigned long) fn;
	regs.edx = (unsigned long) arg;

	regs.xds = __USER_DS;
	regs.xes = __USER_DS;
	regs.orig_eax = -1;
	regs.eip = (unsigned long) kernel_thread_helper;
	regs.xcs = __KERNEL_CS;
	regs.eflags = X86_EFLAGS_IF | X86_EFLAGS_SF | X86_EFLAGS_PF | 0x2;

	/* Ok, create the new process.. */
	return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
}
-----------------------------------------------

I think kernel_thread_helper make the new generated kernel thread to call the function and then exit. But in UML there is no kernel_thread_helper. Then how does UML make its kernel thread call the function and then exit? Thanks a lot!

Alex




-------------------------------------------------------
SF.Net email is sponsored by: Tell us your software development plans!
Take this survey and enter to win a one-year sub to SourceForge.net
Plus IDC's 2005 look-ahead and a copy of this survey
Click here to start!  http://www.idcswdc.com/cgi-bin/survey?id\x105hix
_______________________________________________
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] 4+ messages in thread

* RE: [uml-devel] Question about kernel_thread in UML TT mode
  2005-04-29  9:40   ` Alex LIU
@ 2005-04-29 11:39     ` stian
  0 siblings, 0 replies; 4+ messages in thread
From: stian @ 2005-04-29 11:39 UTC (permalink / raw)
  To: Alex LIU; +Cc: 'Blaisorblade', user-mode-linux-devel

> extern void kernel_thread_helper(void);
> __asm__(".section .text\n"
> 	".align 4\n"
> 	"kernel_thread_helper:\n\t"
> 	"movl %edx,%eax\n\t"
> 	"pushl %edx\n\t"
> 	"call *%ebx\n\t"
> 	"pushl %eax\n\t"
> 	"call do_exit\n"
> 	".previous");

kernel_thread helper is just a dummy wrapper to feed into kernel_thread
and can probably look at as a static local function only for use of x86
implementation of kernel_thread.


Stian


-------------------------------------------------------
SF.Net email is sponsored by: Tell us your software development plans!
Take this survey and enter to win a one-year sub to SourceForge.net
Plus IDC's 2005 look-ahead and a copy of this survey
Click here to start!  http://www.idcswdc.com/cgi-bin/survey?id=105hix
_______________________________________________
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] 4+ messages in thread

* Re: [uml-devel] Question about kernel_thread in UML TT mode
  2005-04-28 10:00 [uml-devel] Question about kernel_thread in UML TT mode Alex LIU
@ 2005-04-29 20:20 ` Blaisorblade
  2005-04-29  9:40   ` Alex LIU
  0 siblings, 1 reply; 4+ messages in thread
From: Blaisorblade @ 2005-04-29 20:20 UTC (permalink / raw)
  To: user-mode-linux-devel; +Cc: Alex LIU

On Thursday 28 April 2005 12:00, Alex LIU wrote:
> Hi,all:
>
> I found UML only implement its own kernel_thread function but doesn't
> implement kernel_thread_helper function.
??? What's kernel_thread_helper? kernel_thread calls the arch-independent 
do_fork(), which works like the rest. In particular, it will call the 
arch-specific copy_thread; and copy_thread_tt will do the necessary work.
> Then how does UML start a kernel 
> thread in TT mode? Is there any other functions being called? Thanks a lot!

> Alex

-- 
Paolo Giarrusso, aka Blaisorblade
Skype user "PaoloGiarrusso"
Linux registered user n. 292729
http://www.user-mode-linux.org/~blaisorblade




-------------------------------------------------------
SF.Net email is sponsored by: Tell us your software development plans!
Take this survey and enter to win a one-year sub to SourceForge.net
Plus IDC's 2005 look-ahead and a copy of this survey
Click here to start!  http://www.idcswdc.com/cgi-bin/survey?id=105hix
_______________________________________________
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] 4+ messages in thread

end of thread, other threads:[~2005-04-29 11:39 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-04-28 10:00 [uml-devel] Question about kernel_thread in UML TT mode Alex LIU
2005-04-29 20:20 ` Blaisorblade
2005-04-29  9:40   ` Alex LIU
2005-04-29 11:39     ` stian

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox