* Context Switching is Broken
@ 2010-06-10 11:11 Herman Swartz
2010-06-10 14:01 ` Russell King - ARM Linux
0 siblings, 1 reply; 11+ messages in thread
From: Herman Swartz @ 2010-06-10 11:11 UTC (permalink / raw)
To: linux-arm-kernel
Context switching is broken. The man page for context is example code that doesn't work, but should.
Does a bug report need to be submitted?
Thanks
Herman
^ permalink raw reply [flat|nested] 11+ messages in thread
* Context Switching is Broken
2010-06-10 11:11 Context Switching is Broken Herman Swartz
@ 2010-06-10 14:01 ` Russell King - ARM Linux
2010-06-10 14:16 ` Will Deacon
0 siblings, 1 reply; 11+ messages in thread
From: Russell King - ARM Linux @ 2010-06-10 14:01 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Jun 10, 2010 at 04:11:35AM -0700, Herman Swartz wrote:
> Context switching is broken. The man page for context is example code
> that doesn't work, but should. Does a bug report need to be submitted?
$ man context
No manual entry for context
?
^ permalink raw reply [flat|nested] 11+ messages in thread
* Context Switching is Broken
2010-06-10 14:01 ` Russell King - ARM Linux
@ 2010-06-10 14:16 ` Will Deacon
2010-06-10 14:20 ` Russell King - ARM Linux
0 siblings, 1 reply; 11+ messages in thread
From: Will Deacon @ 2010-06-10 14:16 UTC (permalink / raw)
To: linux-arm-kernel
> On Thu, Jun 10, 2010 at 04:11:35AM -0700, Herman Swartz wrote:
> > Context switching is broken. The man page for context is example code
> > that doesn't work, but should. Does a bug report need to be submitted?
>
> $ man context
> No manual entry for context
>
> ?
>
Quite. man makecontext has a fairly scary example, maybe that's
it.
Will
^ permalink raw reply [flat|nested] 11+ messages in thread
* Context Switching is Broken
2010-06-10 14:16 ` Will Deacon
@ 2010-06-10 14:20 ` Russell King - ARM Linux
2010-06-10 20:36 ` Martin Guy
0 siblings, 1 reply; 11+ messages in thread
From: Russell King - ARM Linux @ 2010-06-10 14:20 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Jun 10, 2010 at 03:16:49PM +0100, Will Deacon wrote:
> > On Thu, Jun 10, 2010 at 04:11:35AM -0700, Herman Swartz wrote:
> > > Context switching is broken. The man page for context is example code
> > > that doesn't work, but should. Does a bug report need to be submitted?
> >
> > $ man context
> > No manual entry for context
> >
> > ?
> >
>
> Quite. man makecontext has a fairly scary example, maybe that's it.
In which case it's a question for libc people - the kernel has nothing
to do with makecontext, getcontext, setcontext and swapcontext.
I believe for glibc, these are simply unimplemented on ARM, and linking
a program which uses makecontext with glibc would result in the linker
issuing:
warning: makecontext is not implemented and will always fail
Same for the other three functions.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Context Switching is Broken
2010-06-10 14:20 ` Russell King - ARM Linux
@ 2010-06-10 20:36 ` Martin Guy
2010-06-10 21:18 ` Herman Swartz
0 siblings, 1 reply; 11+ messages in thread
From: Martin Guy @ 2010-06-10 20:36 UTC (permalink / raw)
To: linux-arm-kernel
On 6/10/10, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
> On Thu, Jun 10, 2010 at 03:16:49PM +0100, Will Deacon wrote:
> > > On Thu, Jun 10, 2010 at 04:11:35AM -0700, Herman Swartz wrote:
> > > > Context switching is broken. The man page for context is example code
> > > > that doesn't work, but should. Does a bug report need to be submitted?
> > >
> > > $ man context
> > > No manual entry for context
> > >
>
> > Quite. man makecontext has a fairly scary example, maybe that's it.
>
> In which case it's a question for libc people - the kernel has nothing
> to do with makecontext, getcontext, setcontext and swapcontext.
>
> I believe for glibc, these are simply unimplemented on ARM, and linking
> a program which uses makecontext with glibc would result in the linker
> issuing:
>
> warning: makecontext is not implemented and will always fail
Indeed on ARM:
martin:~$ make makecontext
cc makecontext.c -o makecontext
/tmp/ccnapqW4.o: In function `main':
makecontext.c:(.text+0x110): warning: warning: getcontext is not
implemented and will always fail
makecontext.c:(.text+0x164): warning: warning: makecontext is not
implemented and will always fail
/tmp/ccnapqW4.o: In function `func1':
makecontext.c:(.text+0x24): warning: warning: swapcontext is not
implemented and will always fail
$ ./makecontext
Function not inplemented.
$
so?
M
^ permalink raw reply [flat|nested] 11+ messages in thread
* Context Switching is Broken
2010-06-10 20:36 ` Martin Guy
@ 2010-06-10 21:18 ` Herman Swartz
2010-06-10 21:29 ` Martin Guy
0 siblings, 1 reply; 11+ messages in thread
From: Herman Swartz @ 2010-06-10 21:18 UTC (permalink / raw)
To: linux-arm-kernel
Martin,
Looks like you took the example code out of the man page and tried to compile. This is what I get to. Look at my email sent a few minutes ago.
Thanks
HermanI
----- Original Message ----
From: Martin Guy <martinwguy@gmail.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Will Deacon <will.deacon@arm.com>; Herman Swartz <herman_swartz@yahoo.com>; linux-arm-kernel at lists.infradead.org
Sent: Thu, June 10, 2010 4:36:39 PM
Subject: Re: Context Switching is Broken
On 6/10/10, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote:
> On Thu, Jun 10, 2010 at 03:16:49PM +0100, Will Deacon wrote:
>? > > On Thu, Jun 10, 2010 at 04:11:35AM -0700, Herman Swartz wrote:
>? > > > Context switching is broken. The man page for context is example code
>? > > > that doesn't work, but should. Does a bug report need to be submitted?
>? > >
>? > > $ man context
>? > > No manual entry for context
>? > >
>
> > Quite. man makecontext has a fairly scary example, maybe that's it.
>
> In which case it's a question for libc people - the kernel has nothing
>? to do with makecontext, getcontext, setcontext and swapcontext.
>
>? I believe for glibc, these are simply unimplemented on ARM, and linking
>? a program which uses makecontext with glibc would result in the linker
>? issuing:
>
>? warning: makecontext is not implemented and will always fail
Indeed on ARM:
martin:~$ make makecontext
cc? ? makecontext.c? -o makecontext
/tmp/ccnapqW4.o: In function `main':
makecontext.c:(.text+0x110): warning: warning: getcontext is not
implemented and will always fail
makecontext.c:(.text+0x164): warning: warning: makecontext is not
implemented and will always fail
/tmp/ccnapqW4.o: In function `func1':
makecontext.c:(.text+0x24): warning: warning: swapcontext is not
implemented and will always fail
$ ./makecontext
Function not inplemented.
$
so?
? ? M
^ permalink raw reply [flat|nested] 11+ messages in thread
* Context Switching is Broken
2010-06-10 21:18 ` Herman Swartz
@ 2010-06-10 21:29 ` Martin Guy
2010-06-10 22:59 ` Russell King - ARM Linux
2010-06-10 23:22 ` Herman Swartz
0 siblings, 2 replies; 11+ messages in thread
From: Martin Guy @ 2010-06-10 21:29 UTC (permalink / raw)
To: linux-arm-kernel
Hermann
While context switching works fine - any Unix system would have a hard
time working without it - these four esoteric system calls are not
implemented in the ARM port of Linux. If you'd like to modify the
linux source code to implement them, I'm sure the community would be
happy to review the patches for inclusion in the next version of the
kernel.
They seem to be implemented on x86 processors if you need them.
M
^ permalink raw reply [flat|nested] 11+ messages in thread
* Context Switching is Broken
2010-06-10 21:29 ` Martin Guy
@ 2010-06-10 22:59 ` Russell King - ARM Linux
2010-06-10 23:26 ` Herman Swartz
2010-06-10 23:22 ` Herman Swartz
1 sibling, 1 reply; 11+ messages in thread
From: Russell King - ARM Linux @ 2010-06-10 22:59 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Jun 10, 2010 at 10:29:12PM +0100, Martin Guy wrote:
> While context switching works fine - any Unix system would have a hard
> time working without it - these four esoteric system calls are not
> implemented in the ARM port of Linux. If you'd like to modify the
> linux source code to implement them, I'm sure the community would be
> happy to review the patches for inclusion in the next version of the
> kernel.
If you read what I said:
"I believe for glibc, these are simply unimplemented on ARM, and linking
a program which uses makecontext with glibc would result in the linker
issuing:"
These calls are nothing to do with the kernel. They're a subject purely
for glibc. So there's no modification to the Linux kernel source code
which could effect their implementation.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Context Switching is Broken
2010-06-10 21:29 ` Martin Guy
2010-06-10 22:59 ` Russell King - ARM Linux
@ 2010-06-10 23:22 ` Herman Swartz
1 sibling, 0 replies; 11+ messages in thread
From: Herman Swartz @ 2010-06-10 23:22 UTC (permalink / raw)
To: linux-arm-kernel
esoteric "confined to and understandable by only an enlightened inner circle"
Sounds like there was a decision made during porting not to include these calls because they weren't considered useful enough.
What is the chance of requesting this to be included, along with other mods,?in the next release of the kernel for ARM?
The Sheeva PLUG is a neat/thrifty little box that runs 7X24. Unlike other computers laying around the house. :-)
JNOS is an Amateur Radio?packet radio communications program for TCP/IP running many?time dependent?segments.
Here is a requested?segment of the code:
/* Now do the context switch.
???? * This technique was inspired by Rob, PE1CHL, and is a bit tricky.
???? *
???? * If the old process has gone away, simply load the new process's
???? * environment. Otherwise, save the current process's state. Then if
???? * this is still the old process, load the new environment. Since the
???? * new task will "think" it's returning from the setjmp() with a return
???? * value of 1, the comparison with 0 will bypass the longjmp(), which
???? * would otherwise cause an infinite loop.
???? */
??? /* i_state isn't needed --- the signal mask is part of the context */
??? if (oldproc == NULLPROC)
??????? setcontext(&Curproc->env);
??? else
??????? swapcontext(&oldproc->env, &Curproc->env);
??? /* At this point, we're running in the newly dispatched task */
??? tmp = Curproc->retval;
??? Curproc->retval = 0;
??? /* Also restore the true interrupt state here, in case the longjmp
???? * DOES restore the interrupt state saved at the time of the setjmp().
???? * This is the case with Turbo-C's setjmp/longjmp.
???? */
??? restore(Curproc->i_state);
??? return tmp;
}
----- Original Message ----
From: Martin Guy <martinwguy@gmail.com>
To: Herman Swartz <herman_swartz@yahoo.com>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>; Will Deacon <will.deacon@arm.com>; linux-arm-kernel at lists.infradead.org
Sent: Thu, June 10, 2010 5:29:12 PM
Subject: Re: Context Switching is Broken
Hermann
While context switching works fine - any Unix system would have a hard
time working without it - these four esoteric system calls are not
implemented in the ARM port of Linux. If you'd like to modify the
linux source code to implement them, I'm sure the community would be
happy to review the patches for inclusion in the next version of the
kernel.
They seem to be implemented on x86 processors if you need them.
? ? M
^ permalink raw reply [flat|nested] 11+ messages in thread
* Context Switching is Broken
2010-06-10 22:59 ` Russell King - ARM Linux
@ 2010-06-10 23:26 ` Herman Swartz
2010-06-10 23:36 ` Russell King - ARM Linux
0 siblings, 1 reply; 11+ messages in thread
From: Herman Swartz @ 2010-06-10 23:26 UTC (permalink / raw)
To: linux-arm-kernel
Yes, the kernel has the functions, because the kernel uses them in it's operation. The glibc needs to implement these calls to the kernel. Do I have that right?
Herman
----- Original Message ----
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Martin Guy <martinwguy@gmail.com>
Cc: Herman Swartz <herman_swartz@yahoo.com>; Will Deacon <will.deacon@arm.com>; linux-arm-kernel at lists.infradead.org
Sent: Thu, June 10, 2010 6:59:30 PM
Subject: Re: Context Switching is Broken
On Thu, Jun 10, 2010 at 10:29:12PM +0100, Martin Guy wrote:
> While context switching works fine - any Unix system would have a hard
> time working without it - these four esoteric system calls are not
> implemented in the ARM port of Linux. If you'd like to modify the
> linux source code to implement them, I'm sure the community would be
> happy to review the patches for inclusion in the next version of the
> kernel.
If you read what I said:
"I believe for glibc, these are simply unimplemented on ARM, and linking
a program which uses makecontext with glibc would result in the linker
issuing:"
These calls are nothing to do with the kernel.? They're a subject purely
for glibc.? So there's no modification to the Linux kernel source code
which could effect their implementation.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Context Switching is Broken
2010-06-10 23:26 ` Herman Swartz
@ 2010-06-10 23:36 ` Russell King - ARM Linux
0 siblings, 0 replies; 11+ messages in thread
From: Russell King - ARM Linux @ 2010-06-10 23:36 UTC (permalink / raw)
To: linux-arm-kernel
On Thu, Jun 10, 2010 at 04:26:47PM -0700, Herman Swartz wrote:
> Yes, the kernel has the functions, because the kernel uses them in
> it's operation. The glibc needs to implement these calls to the
> kernel. Do I have that right?
No. The kernel's context switching is entirely different to the
"context switching" that you're talking about here.
As I've said twice - and I'm not going to repeat it a third time -
this has nothing to do with the kernel and everything to do with
glibc.
You can see this from the i386 version of setcontext(), which can
be found in the glibc source code:
sysdeps/unix/sysv/linux/i386/setcontext.S
The only call this code makes to the kernel is to set the processes
signal mask - which ARM has provided since day 1, and is used for
many things other than providing this support. So there's nothing
to add to the kernel.
What's missing is the glibc support code. Not the kernel code.
You need to talk to glibc people about this, not kernel people.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2010-06-10 23:36 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-10 11:11 Context Switching is Broken Herman Swartz
2010-06-10 14:01 ` Russell King - ARM Linux
2010-06-10 14:16 ` Will Deacon
2010-06-10 14:20 ` Russell King - ARM Linux
2010-06-10 20:36 ` Martin Guy
2010-06-10 21:18 ` Herman Swartz
2010-06-10 21:29 ` Martin Guy
2010-06-10 22:59 ` Russell King - ARM Linux
2010-06-10 23:26 ` Herman Swartz
2010-06-10 23:36 ` Russell King - ARM Linux
2010-06-10 23:22 ` Herman Swartz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).