<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://library.morph.zone/index.php?action=history&amp;feed=atom&amp;title=Vfork_and_fork_with_ixemul</id>
		<title>Vfork and fork with ixemul - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://library.morph.zone/index.php?action=history&amp;feed=atom&amp;title=Vfork_and_fork_with_ixemul"/>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Vfork_and_fork_with_ixemul&amp;action=history"/>
		<updated>2026-05-18T07:51:56Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://library.morph.zone/index.php?title=Vfork_and_fork_with_ixemul&amp;diff=4388&amp;oldid=prev</id>
		<title>JPV at 10:19, 4 February 2026</title>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Vfork_and_fork_with_ixemul&amp;diff=4388&amp;oldid=prev"/>
				<updated>2026-02-04T10:19:38Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 10:19, 4 February 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l4&quot; &gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Contrary to some misconceptions '''ixemul.library''' does have a working vfork(), and assisted fork().&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Contrary to some misconceptions '''ixemul.library''' does have a working &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/ins&gt;vfork()&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/ins&gt;, and assisted &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/ins&gt;fork()&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==vfork==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==vfork==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JPV</name></author>	</entry>

	<entry>
		<id>https://library.morph.zone/index.php?title=Vfork_and_fork_with_ixemul&amp;diff=4387&amp;oldid=prev</id>
		<title>JPV: Created page with &quot;''Originally published at: https://morph.zone/modules/newbb_plus/viewtopic.php?topic_id=14169&amp;forum=12''  ''Author: Harry Sintonen''   Contrary to some misconceptions '''ixemu...&quot;</title>
		<link rel="alternate" type="text/html" href="https://library.morph.zone/index.php?title=Vfork_and_fork_with_ixemul&amp;diff=4387&amp;oldid=prev"/>
				<updated>2026-02-04T10:18:51Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;#039;&amp;#039;Originally published at: https://morph.zone/modules/newbb_plus/viewtopic.php?topic_id=14169&amp;amp;forum=12&amp;#039;&amp;#039;  &amp;#039;&amp;#039;Author: Harry Sintonen&amp;#039;&amp;#039;   Contrary to some misconceptions &amp;#039;&amp;#039;&amp;#039;ixemu...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;''Originally published at: https://morph.zone/modules/newbb_plus/viewtopic.php?topic_id=14169&amp;amp;forum=12''&lt;br /&gt;
&lt;br /&gt;
''Author: Harry Sintonen''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Contrary to some misconceptions '''ixemul.library''' does have a working vfork(), and assisted fork().&lt;br /&gt;
&lt;br /&gt;
==vfork==&lt;br /&gt;
Generally ''vfork()'' should be directly usable in situations where ''fork()'' + ''exec*()'' is used. In this case ''vfork()'' can used instead. Any potential ''exit()'' calls in the child code path should be replaced with ''_exit()''.&lt;br /&gt;
&lt;br /&gt;
==fork==&lt;br /&gt;
Replacing ''fork()'' is doable, but might require significant work. First, the application and all its dependencies should be built with '''-mresident32''' flag. The application must manually duplicate the context at the time of the ''fork()'' call by doing the following:&lt;br /&gt;
#Perform the first part of the fork by calling ''ix_vfork()''. A new child is spawned and the parent's execution is paused. pid == 0 indicates child codepath, the parent will get returned the pid of the child.&lt;br /&gt;
#In child: Duplicate static data segment and initialize the child memory allocator and other internal structures: ''ix_vfork_setup_child();''&lt;br /&gt;
#In child: copy the parent's state to the child. Generally this requires use of static variables to relay values over to the child. Any ''malloc()'' memory and local variables and structures that are used by the child must be cloned before the parent is let to continue. This always requires manual work to construct the necessary code to perform the state cloning, as each use of ''fork()'' is unique in regards of what state is present and how the child will be using it after the call.&lt;br /&gt;
#In child: Indicate that parent can continue with ''ix_vfork_resume();''&lt;br /&gt;
&lt;br /&gt;
At this stage both parent and child are executing the same code segment, concurrently. Both have their own copies of static variables and can use them freely.&lt;br /&gt;
&lt;br /&gt;
If everything is done correctly this works fine. It is successfully used by for example the ixemul shell (pdksh).&lt;/div&gt;</summary>
		<author><name>JPV</name></author>	</entry>

	</feed>