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