I was listening to
Charlie on the MTA and this idea popped into my head. Apologies to the original writers and everyone who reads this (
Youtube video for tune reference)
The 410 staff will be releasing p3 soon so hear me out: this could happen to you!*banjo interlude*
Let me tell you the story
of thread number thirty
on a tragic and fateful day
it put its argument in esi
called the trap instruction
and went off into kernel space!
But did it ever return,
no it never returned
and its fate is still unlearned (wait, how did that get in the page tables)
it will spin forever
in the lower addresses
its the thread that never returned
All the registers were saved
and the thread took a mutex
and wrote the data in the proper place
it released a mutex and did the iret instruction
but returned to kernel space!
But did it ever return
no it never returned
and its fate is still unlearned (we don't actually need to free memory, right?)
it will spin forever
in the lower addresses
its the thread that never returned
Now all night long
I sit in the cluster
crying "What will become of me?
I have to write readline,
and fix cas2i_runflag,
and also document my p3!"
But did it ever return
no it never returned
and its fate is still unlearned (atomic unlock and quickly deschedule)
it will spin forever
in the lower addresses
its the thread that never returned
Now you students of 410
don't you think its a scandal
how your kernel never seem to last,
draw a picture, tell a story,
FIND THE POINT WHERE THEY DIVERGE
and you just might find find the answer fast
(of why) it never returned
no it never returned
and its fate is still unlearned
it will spin forever
in the lower addresses
its the thread that never returned (huh? its back in userspace)
its the thread that might have returned (no wait it isn't)
its the thread that never returned (I don't think we're supposed to be executing code on our page tables)