On 2/23/07, Alan <alan@lxorguk.ukuu.org.uk> wrote:
Blocked threadlets go back out to userspace, as new threads, after the
first blocking syscall completes. That's how Ingo described them in
plain English, that's how his threadlet example would have to work,
and that appears to be what his patches actually do.
Y'know, there's more to life than x86. I'm no MMU expert, but I know
enough about ARM TLS and ptrace to have fixed ltrace -- not that that
took any special wizardry, just a need for it to work and some basic
forensic skill. If you want me to go away completely or not follow up
henceforth on anything you write, say so, and I'll decide what to do
in response. Otherwise, you might consider evaluating whether there's
a way to interpret my comments so that they reflect a perspective that
does not overlap 100% with yours rather than total idiocy.
Ingo's original example code:
long my_threadlet_fn(void *data)
{
char *name = data;
int fd;
fd = open(name, O_RDONLY);
if (fd < 0)
goto out;
fstat(fd, &stat);
read(fd, buf, count)
...
out:
return threadlet_complete();
}
You're telling me that runs entirely in kernel space when open()
blocks, and doesn't touch errno if fstat() fails? Now who hasn't read
the code?
Cheers,
- Michael
-