nuttx/Documentation/guides/index.rst
Marco Casaroli aae62ceaae !Documentation: Describe the fork()/vfork() split.
Documentation/guides/fork_vfork_migration.rst is new.  It says what changed
and why, gives the two primitives as a table, states plainly what breaks, and
answers "which replacement do I want?" from the reader's own reason for having
called fork() -- posix_spawn() or vfork() to run a program, pthread_create()
for a second flow of control that shares memory, fork() itself for an
independent copy.  It also documents the two configuration symbols, what an
architecture has to implement to gain real fork(), and the one visible
consequence of moving the vfork() suspension into the kernel: a waitpid()
after a child that _exit()s can only report status where
CONFIG_SCHED_CHILD_STATUS is enabled.

reference/user/01_task_control.rst gains an entry for fork() and rewrites the
one for vfork(), which described NuttX's limitations rather than the
interface's contract.  standards/posix.rst moves fork() from "No" to "Cond."
and vfork() from "Yes" to "Cond.", both being conditional on the configuration
now.  implementation/memory_configurations.rst no longer lists fork() as
unimplementable in the presence of address environments, which was the whole
point of that section's wish list.  Three long-standing typos in that file are
corrected while touching it, since codespell checks the whole of any file a
patch modifies.

BREAKING CHANGE: this commit carries no code; it is the migration guide for
the fork() withdrawal in the commit before it, and is marked so that every
commit in the series carries the marker CONTRIBUTING.md 1.13 requires.  The
quick fixes are in Documentation/guides/fork_vfork_migration.rst.

Assisted-by: Claude Code:claude-opus-5
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>
2026-08-10 08:57:30 -03:00

66 lines
1.4 KiB
ReStructuredText

.. todo::
Create "tutorial" type documentation for specific subjects not to be covered in more general terms.
======
Guides
======
.. toctree::
nfs.rst
nix_flake.rst
usbtrace.rst
simulator.rst
rndis.rst
drivers.rst
cpp_cmake.rst
pysimcoder.rst
customboards.rst
customapps.rst
zerolatencyinterrupts.rst
fortify.rst
nestedinterrupts.rst
ofloader.rst
testingtcpip.rst
automounter.rst
stm32nullpointer.rst
stm32ccm.rst
etcromfs.rst
thread_local_storage.rst
devicetree.rst
changing_systemclockconfig.rst
usingkernelthreads.rst
armv7m_runtimestackcheck.rst
include_files_board_h.rst
specialstuff_in_nuttxheaderfiles.rst
kernel_threads_with_custom_stacks.rst
versioning_and_task_names.rst
logging_rambuffer.rst
ipv6.rst
integrate_newlib.rst
fork_vfork_migration.rst
protected_build.rst
platform_directories.rst
port_drivers_to_stm32f7.rst
semihosting.rst
renode.rst
signal_events_interrupt_handlers.rst
signaling_sem_priority_inheritance.rst
smaller_vector_tables.rst
port.rst
updating_release_system_elf.rst
partially_linked_elf.rst
fully_linked_elf.rst
building_nuttx_with_app_out_of_src_tree.rst
building_uclibcpp.rst
custom_app_directories.rst
multiple_nsh_sessions.rst
nsh_network_link_management.rst
ram_rom_disks.rst
reading_can_msgs.rst
remove_device_drivers_nsh.rst
rust.rst
optee.rst
qemu_tips.rst
lwl.rst
stm32_ports.rst