<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:times new roman,serif;font-size:large"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Aug 1, 2021 at 8:13 PM Andrew Warkentin <<a href="mailto:andreww591@gmail.com">andreww591@gmail.com</a>> wrote</div><div dir="ltr" class="gmail_attr"><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
To start the child the parent would either<br>
call exec() to start the child running a different program, or call a<br>
new function that starts the child with a parent-provided entry point<br>
and whatever memory mappings the parent set up. </blockquote><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">This is what I plan to do on the OS I'm writing<br>
(manipulating the child's state won't require any additional<br>
primitives beyond regular file I/O since literally all process state<br>
will have a file-based interface).<br></blockquote><div><br></div><div class="gmail_default" style="font-family:"times new roman",serif;font-size:large">In that case you don't need *any* primitive except create_empty_process(): you can do exec() by opening the file, writing to /proc/<child>/mem and then to <proc/<child>/pc-and-go.</div></div></div>