aboutsummaryrefslogtreecommitdiffstats
path: root/templates
diff options
context:
space:
mode:
Diffstat (limited to 'templates')
-rw-r--r--templates/guts3
-rw-r--r--templates/port_wrappers5
-rw-r--r--templates/pseudo_ports6
-rw-r--r--templates/wrapfuncs.c9
-rw-r--r--templates/wrapfuncs.h19
-rw-r--r--templates/wrapper_table28
6 files changed, 21 insertions, 49 deletions
diff --git a/templates/guts b/templates/guts
index 3e32fb2..e2c9880 100644
--- a/templates/guts
+++ b/templates/guts
@@ -1,4 +1,5 @@
-@name guts/${name}.c
+@name ports/${port}/guts/${name}.c
+@header
@body
/*
* Copyright (c) ${date} Wind River Systems; see
diff --git a/templates/port_wrappers b/templates/port_wrappers
new file mode 100644
index 0000000..7ff7ff8
--- /dev/null
+++ b/templates/port_wrappers
@@ -0,0 +1,5 @@
+@name port_wrappers.c
+@header
+/* additional hand-written wrappers for ports which provide them */
+@port
+${include}
diff --git a/templates/pseudo_ports b/templates/pseudo_ports
new file mode 100644
index 0000000..113a2b6
--- /dev/null
+++ b/templates/pseudo_ports
@@ -0,0 +1,6 @@
+@name pseudo_ports.h
+@header
+/* #defines for port-specific hackery */
+@port
+${define}
+${portdefs}
diff --git a/templates/wrapfuncs.c b/templates/wrapfuncs.c
index 0a90efd..61b52ff 100644
--- a/templates/wrapfuncs.c
+++ b/templates/wrapfuncs.c
@@ -13,7 +13,9 @@
* script if you want to modify this. */
@body
-static ${type} (*real_${name})(${decl_args}) = NULL;
+static ${type} (*real_${name})(${decl_args}) = ${real_init};
+
+${maybe_skip}
${type}
${name}(${decl_args}) {
@@ -58,7 +60,7 @@ ${name}(${decl_args}) {
save_errno = errno;
pseudo_droplock();
sigprocmask(SIG_SETMASK, &saved, NULL);
- pseudo_debug(4, "completed: $name\n");
+ pseudo_debug(4, "completed: $name (maybe: %s)\n", strerror(save_errno));
errno = save_errno;
${rc_return}
}
@@ -69,8 +71,9 @@ wrap_${name}(${wrap_args}) {
${maybe_variadic_decl}
${maybe_variadic_start}
-#include "guts/${name}.c"
+#include "ports/${port}/guts/${name}.c"
${rc_return}
}
+${end_maybe_skip}
diff --git a/templates/wrapfuncs.h b/templates/wrapfuncs.h
index 403d261..1ce4fcc 100644
--- a/templates/wrapfuncs.h
+++ b/templates/wrapfuncs.h
@@ -8,22 +8,5 @@
/* ${comment} */
static ${type} wrap_${name}(${wrap_args});
static ${type} (*real_${name})(${decl_args});
+${real_predecl}
@footer
-/* special cases: functions with manually-written wrappers */
-
-/* int fork(void) */
-static int wrap_fork(void);
-static int (*real_fork)(void);
-/* int clone(int (*fn)(void *), void *child_stack, int flags, void *arg, ...) */
-static int wrap_clone(int (*fn)(void *), void *child_stack, int flags, void *arg, ...);
-static int (*real_clone)(int (*fn)(void *), void *child_stack, int flags, void *arg, ...);
-/* int execv(const char *file, char *const *argv) */
-static int wrap_execv(const char *file, char *const *argv);
-static int (*real_execv)(const char *file, char *const *argv);
-/* int execve(const char *file, char *const *argv, char *const *envp) */
-static int wrap_execve(const char *file, char *const *argv, char *const *envp);
-static int (*real_execve)(const char *file, char *const *argv, char *const *envp);
-/* int execvp(const char *file, char *const *argv) */
-static int wrap_execvp(const char *file, char *const *argv);
-static int (*real_execvp)(const char *file, char *const *argv);
-
diff --git a/templates/wrapper_table b/templates/wrapper_table
index dd9c249..2e79fcd 100644
--- a/templates/wrapper_table
+++ b/templates/wrapper_table
@@ -11,36 +11,10 @@ static struct {
} pseudo_functions[] = {
@body
{ /* ${comment}; */
- "${name}",
+ "${name}${maybe_inode64}",
(int (**)(void)) &real_${name},
(int (*)(void)) wrap_${name}
},
@footer
- /* special cases: Functions which need manually-coded wrappers */
- { /* int fork(void); */
- "fork",
- (int (**)(void)) &real_fork,
- (int (*)(void)) wrap_fork
- },
- { /* int clone(int (*fn)(void *), void *, int, void, ...); */
- "clone",
- (int (**)(void)) &real_clone,
- (int (*)(void)) wrap_clone
- },
- { /* int execv(const char *file, char *const *argv); */
- "execv",
- (int (**)(void)) &real_execv,
- (int (*)(void)) wrap_execv
- },
- { /* int execve(const char *file, char *const *argv, char *const *envp); */
- "execve",
- (int (**)(void)) &real_execve,
- (int (*)(void)) wrap_execve
- },
- { /* int execvp(const char *file, char *const *argv); */
- "execvp",
- (int (**)(void)) &real_execvp,
- (int (*)(void)) wrap_execvp
- },
{ NULL, NULL, NULL },
};