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 <[email protected]>
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 <[email protected]>
> wrote:
>
>> On Mon, 24 Mar 2025 at 15:12, ron minnich <[email protected]> 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