aboutsummaryrefslogtreecommitdiffstats
path: root/doc/program_flow
diff options
context:
space:
mode:
Diffstat (limited to 'doc/program_flow')
-rw-r--r--doc/program_flow29
1 files changed, 19 insertions, 10 deletions
diff --git a/doc/program_flow b/doc/program_flow
index 8991681..3a399a7 100644
--- a/doc/program_flow
+++ b/doc/program_flow
@@ -14,7 +14,7 @@ libpseudo execution flow:
setup pseudo_functions
setup pseudo_logfile
pseudo_client.c: pseudo_init_client()
- setup PSEUDO_DISBLED
+ setup PSEUDO_DISABLED
setup pseudo_prefix_dir_fd
setup pseudo_localstate_dir_fd
setup PSEUDO_NOSYMLINKEXP
@@ -28,26 +28,35 @@ libpseudo execution flow:
pseudo_check_wrappers():
pseudo_reinit_libpseudo if necessary
call wrap_exec*()
- if !PSEUDO_RELOADED
- pseudo_setupenv()
- else
- pseudo_setupenv()
+ pseudo_setupenv()
+ if PSEUDO_UNLOAD
pseudo_dropenv()
real_exec*()
fork()
- clone()
pseudo_check_wrappers():
pseudo_reinit_libpseudo if necessary
- call wrap_exec*()
- if !PSEUDO_RELOADED
+ call wrap_fork()
+ real_fork()
+ if (child)
pseudo_setupenv()
+ if !PSEUDO_UNLOAD
+ pseudo_reinit_libpseudo()
+ _libpseudo_init()
+ else
+ pseudo_dropenv()
+
+ clone()
+ pseudo_check_wrappers():
+ pseudo_reinit_libpseudo if necessary
+ call wrap_clone()
+ pseudo_setupenv()
+ if !PSEUDO_UNLOAD
pseudo_reinit_libpseudo()
_libpseudo_init()
else
- pseudo_setupenv()
pseudo_dropenv()
- real_*()
+ real_clone()
... normal function wrappers ... (templates/wrapfuncs.c):
pseudo_check_wrappers() || !real_*