I've taken it a bit further, and it's odd.

rfork(RFCORE) works fine. up->errlab is 0 when the rfork(RFCORE) exits. But
here's the interesting part.
up->nerrlab is still 1 when we flip the process over to the ac. This is
because of the call to _procctl in syscall()

Then the process calls pwrite, and, up->nerrlab is 1 BEFORE the first
waserror() in syscall.

I think before the _procctl() in syscall, there needs to be a poperror().
this fixes it for me.
if (up->procctl == Procto ...) {poperror(); _procctl(up); }
The reason is, that when procctl is set to Proc_toac, that call to procctl
never returns, and the poperror never happens.

Why did this ever work, you say? I don't know.

Paul, see what you think.

On Mon, Mar 24, 2025 at 1:56 PM Paul Lalonde <paul.a.lalo...@gmail.com>
wrote:

> No, it does not block, failing if it can't.
>
> This piece is still buggy - the error labeling (waserror(), poperror(),
> error()) is out of balance, even in the path that doesn't fork.
> So I'm tracing carefully to understand where the missing poperror() or
> extra waserror() is.
>
> Paul
>
> On Mon, Mar 24, 2025 at 1:41 PM Stuart Morrow <morrow.stu...@gmail.com>
> wrote:
>
>> On Mon, 24 Mar 2025 at 15:12, ron minnich <rminn...@gmail.com> wrote:
>> > Further, he fixed the rfork support, such that processes can set up and
>> move from a TC to an AC. This restores a long-lost capability.
>> >
>> > This is a pretty major step forward. It is now even possible to do
>> things like this:
>> > main(){
>> > /* set it all up */
>> > rfork(RFACORE); /* something like that */
>> >
>> > and your process is now running on a dedicated, non-preempted,
>> interrupt-free, no kernel code, core all to its own.
>> 
>> Does that block until the resource is available?  9front added the
>> ability for rfork to fail.
> *9fans <https://9fans.topicbox.com/latest>* / 9fans / see discussions
> <https://9fans.topicbox.com/groups/9fans> + participants
> <https://9fans.topicbox.com/groups/9fans/members> + delivery options
> <https://9fans.topicbox.com/groups/9fans/subscription> Permalink
> <https://9fans.topicbox.com/groups/9fans/T25c85a39f00802e6-M578da3e508ed84bd7aa48d11>
>

------------------------------------------
9fans: 9fans
Permalink: 
https://9fans.topicbox.com/groups/9fans/T25c85a39f00802e6-M6d0cc61e0540afaec8fb578b
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription

Reply via email to