Cygwin: forkables: update doc, add release notes
This commit is contained in:
		
							parent
							
								
									1ba66fe8fa
								
							
						
					
					
						commit
						f6be530a23
					
				|  | @ -31,6 +31,12 @@ What's new: | |||
| - New APIs: signalfd, timerfd_create, timerfd_gettime, timerfd_settime, | ||||
|   timer_getoverrun. | ||||
| 
 | ||||
| - fork(2) now is able to recover from when an in-use executable/dll is | ||||
|   removed or replaced during process runtime.  This feature is disabled by | ||||
|   default and limited to exes/dlls on the same NTFS partition as the Cygwin | ||||
|   installation.  For more information and how to enable, please refer to | ||||
|   https://www.cygwin.com/cygwin-ug-net/highlights.html#ov-hi-process | ||||
| 
 | ||||
| 
 | ||||
| What changed: | ||||
| ------------- | ||||
|  |  | |||
|  | @ -202,21 +202,27 @@ While Windows does not allow to remove binaries in use from the file | |||
| system, they still can be renamed or moved into the recycle bin, as | ||||
| outlined for unlink(2) in <xref linkend="ov-new1.7-file"></xref>. | ||||
| To allow an existing process to fork, the original binary files need to be | ||||
| available via their original file names, but they may reside in | ||||
| different directories when using the <ulink | ||||
| available via their original file names, but they may reside in a | ||||
| different directory when using the <ulink | ||||
| url="https://social.msdn.microsoft.com/search/en-US?query=dotlocal%20dll%20redirection" | ||||
| >DotLocal (.local) Dll Redirection</ulink> feature. | ||||
| Since NTFS does support hardlinks, when the fork fails we try again, but | ||||
| create a private directory containing hardlinks to the original files as | ||||
| well as the .local file now.  The private directory for the hardlinks is | ||||
| /var/run/cygfork/, which you have to create manually for now if you need to | ||||
| protect fork against exe- and dll- updates on your Cygwin instance.  As | ||||
| hardlinks cannot be used across multiple NTFS file systems, please make sure | ||||
| your exe- and dll- replacing operations operate on the same single NTFS file | ||||
| system as your Cygwin instance and the /var/run/cygfork/ directory.</para> | ||||
| well as the <literal>.local</literal> file now.  The base directory for the | ||||
| private hardlink directory is <literal>/var/run/cygfork/</literal>, which | ||||
| you have to create manually for now if you need to protect fork against | ||||
| updates to executables and dlls on your Cygwin instance.  As hardlinks | ||||
| cannot be used across multiple NTFS file systems, please make sure your | ||||
| executable and dll replacing operations operate on the same single NTFS file | ||||
| system as your Cygwin instance and the <literal>/var/run/cygfork/</literal> | ||||
| directory.  Note that this private hardlink directory also does help for | ||||
| when a wrong dll is found in the parent process' current working directory. | ||||
| To enable creating the hardlinks, you need to stop all currently running | ||||
| Cygwin processes after creating this directory, once per Cygwin installation: | ||||
| <literallayout>$ mkdir --mode=a=rwxt /var/run/cygfork</literallayout></para> | ||||
| 
 | ||||
| <para>We create one directory per user, application and application age, | ||||
| and remove it when no more processes use that directory.  To indicate | ||||
| <para>We create one hardlink directory per user, application and application | ||||
| age, and remove it when no more processes use that directory.  To indicate | ||||
| whether a directory still is in use, we define a mutex name similar to | ||||
| the directory name.  As mutexes are destroyed when no process holds a | ||||
| handle open any more, we can clean up even after power loss or similar: | ||||
|  |  | |||
|  | @ -107,6 +107,13 @@ Native Windows processes not started by Cygwin processes are mapped | |||
| into the range beyond 65535. | ||||
| </para></listitem> | ||||
| 
 | ||||
| <listitem><para> | ||||
| fork(2) now is able to recover from when an in-use executable/dll is | ||||
| removed or replaced during process runtime.  This feature is disabled by | ||||
| default and limited to exes/dlls on the same NTFS partition as the Cygwin | ||||
| installation.  For more information and how to enable, please refer to | ||||
| <xref linkend="ov-hi-process"></xref>. | ||||
| </para></listitem> | ||||
| </itemizedlist> | ||||
| 
 | ||||
| </sect2> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue