aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@windriver.com>2010-12-14 18:53:59 -0600
committerPeter Seebach <peter.seebach@windriver.com>2010-12-16 16:35:01 -0600
commit0eec00c99f7c7e25313caa97937a77383df8b0e8 (patch)
treeba0949af819971ddadba24dbcff39307842ce297 /doc
parenteba97c46608e776088a86d9d8db25d07e8de09ac (diff)
downloadpseudo-0eec00c99f7c7e25313caa97937a77383df8b0e8.tar.gz
pseudo-0eec00c99f7c7e25313caa97937a77383df8b0e8.tar.bz2
pseudo-0eec00c99f7c7e25313caa97937a77383df8b0e8.zip
Restructure wrapfuncs.c
Restructure wrapfuncs.c in an attempt to improve PSEUDO_DISABLED=1 performance. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Diffstat (limited to 'doc')
-rw-r--r--doc/program_flow16
1 files changed, 14 insertions, 2 deletions
diff --git a/doc/program_flow b/doc/program_flow
index b0680a0..8991681 100644
--- a/doc/program_flow
+++ b/doc/program_flow
@@ -37,7 +37,7 @@ libpseudo execution flow:
fork()
clone()
- pseudo_populate_wrappers():
+ pseudo_check_wrappers():
pseudo_reinit_libpseudo if necessary
call wrap_exec*()
if !PSEUDO_RELOADED
@@ -49,7 +49,19 @@ libpseudo execution flow:
pseudo_dropenv()
real_*()
- ... normal function wrappers ...
+ ... normal function wrappers ... (templates/wrapfuncs.c):
+ pseudo_check_wrappers() || !real_*
+ return enosys
+ variadic setup (if necessary)
+ if pseudo_disabled return real_*()
+ pseudo_sigblock
+ pseudo_getlock
+ if antimagic rc = real_*()
+ else rc = wrap_*()
+ variadic end (if necessary)
+ pseudo_droplock
+ unmask signals
+ return rc
pseudo execution flow:
pseudo.c: main()