aboutsummaryrefslogtreecommitdiff
path: root/sys/cmd/rc/sys.c
AgeCommit message (Collapse)Author
2021-11-12chore: simplified organizational structurelaptopNicholas
2021-10-21Fix: attempted to access stale memory upon exec failure.Nicholas Noll
Now correctly prints out argv[1]
2021-10-21feat(rc): expanded tree printingNicholas Noll
2021-10-20Feat: now execs instead of exec + fork if going to exit.Nicholas Noll
One quick solution to the lack of tracking deep into the command line is to note that the pattern of code emitted for an async is: Xasync |__ child (command) |__ parent (continues) The child creates a process group, as described before. If the child is a simple command, we will now "exec" as it will exit immediately after the command. This gives us the correct behavior, at least for simple cases. This also fixed pipes. However, if child has to be forked, i.e. can't be immediately execed, then I don't think this process works...
2021-10-20Refactored interactivity to track with thread.Nicholas Noll
Hit a bit of a stopping point. Specifically, the way XAsync runs currently is by forking the execution context and having the child run the async code while the parent runs the remainder. The problem with this architecture is it doesn't interact well with job control. When we fork, we create a new process group. Thus the Xasync fork becomes the new leader. In short, our traversal of the parse tree as to be less "preorder" and more "in order", i.e. from the leaves up. The "left" command of the pipeline should be the "leader" of the process group.
2021-10-19feat(rc): prototype of async jobsNicholas Noll
2021-10-18feat(rc): job control prototype working for basic commandsNicholas Noll
2021-10-15feat(rc): working prototype of input->compile->print loopNicholas Noll