aboutsummaryrefslogtreecommitdiffstats
path: root/ports/common/pseudo_wrappers.c
diff options
context:
space:
mode:
Diffstat (limited to 'ports/common/pseudo_wrappers.c')
-rw-r--r--ports/common/pseudo_wrappers.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/ports/common/pseudo_wrappers.c b/ports/common/pseudo_wrappers.c
index 3652ad4..81be635 100644
--- a/ports/common/pseudo_wrappers.c
+++ b/ports/common/pseudo_wrappers.c
@@ -67,9 +67,12 @@ execl(const char *file, const char *arg, ...) {
int rc = -1;
+ PROFILE_START;
+
if (!pseudo_check_wrappers()) {
/* rc was initialized to the "failure" value */
pseudo_enosys("execl");
+ PROFILE_DONE;
return rc;
}
@@ -78,6 +81,7 @@ execl(const char *file, const char *arg, ...) {
va_end(ap);
if (!argv) {
errno = ENOMEM;
+ PROFILE_DONE;
return -1;
}
@@ -86,6 +90,7 @@ execl(const char *file, const char *arg, ...) {
if (pseudo_getlock()) {
errno = EBUSY;
sigprocmask(SIG_SETMASK, &saved, NULL);
+ PROFILE_DONE;
return -1;
}
@@ -101,6 +106,7 @@ execl(const char *file, const char *arg, ...) {
pseudo_debug(PDBGF_WRAPPER, "completed: execl\n");
errno = save_errno;
free(argv);
+ PROFILE_DONE;
return rc;
}
@@ -111,10 +117,12 @@ execlp(const char *file, const char *arg, ...) {
char **argv;
int rc = -1;
+ PROFILE_START;
if (!pseudo_check_wrappers()) {
/* rc was initialized to the "failure" value */
pseudo_enosys("execlp");
+ PROFILE_DONE;
return rc;
}
@@ -123,6 +131,7 @@ execlp(const char *file, const char *arg, ...) {
va_end(ap);
if (!argv) {
errno = ENOMEM;
+ PROFILE_DONE;
return -1;
}
@@ -131,6 +140,7 @@ execlp(const char *file, const char *arg, ...) {
if (pseudo_getlock()) {
errno = EBUSY;
sigprocmask(SIG_SETMASK, &saved, NULL);
+ PROFILE_DONE;
return -1;
}
@@ -146,6 +156,7 @@ execlp(const char *file, const char *arg, ...) {
pseudo_debug(PDBGF_WRAPPER, "completed: execlp\n");
errno = save_errno;
free(argv);
+ PROFILE_DONE;
return rc;
}
@@ -157,10 +168,12 @@ execle(const char *file, const char *arg, ...) {
char **envp;
int rc = -1;
+ PROFILE_START;
if (!pseudo_check_wrappers()) {
/* rc was initialized to the "failure" value */
pseudo_enosys("execle");
+ PROFILE_DONE;
return rc;
}
@@ -169,6 +182,7 @@ execle(const char *file, const char *arg, ...) {
va_end(ap);
if (!argv) {
errno = ENOMEM;
+ PROFILE_DONE;
return -1;
}
@@ -177,6 +191,7 @@ execle(const char *file, const char *arg, ...) {
if (pseudo_getlock()) {
errno = EBUSY;
sigprocmask(SIG_SETMASK, &saved, NULL);
+ PROFILE_DONE;
return -1;
}
@@ -192,6 +207,7 @@ execle(const char *file, const char *arg, ...) {
pseudo_debug(PDBGF_WRAPPER, "completed: execle\n");
errno = save_errno;
free(argv);
+ PROFILE_DONE;
return rc;
}
@@ -201,9 +217,12 @@ execv(const char *file, char *const *argv) {
int rc = -1;
+ PROFILE_START;
+
if (!pseudo_check_wrappers() || !real_execv) {
/* rc was initialized to the "failure" value */
pseudo_enosys("execv");
+ PROFILE_DONE;
return rc;
}
@@ -212,6 +231,7 @@ execv(const char *file, char *const *argv) {
if (pseudo_getlock()) {
errno = EBUSY;
sigprocmask(SIG_SETMASK, &saved, NULL);
+ PROFILE_DONE;
return -1;
}
@@ -226,6 +246,7 @@ execv(const char *file, char *const *argv) {
sigprocmask(SIG_SETMASK, &saved, NULL);
pseudo_debug(PDBGF_WRAPPER, "completed: execv\n");
errno = save_errno;
+ PROFILE_DONE;
return rc;
}
@@ -234,10 +255,12 @@ execve(const char *file, char *const *argv, char *const *envp) {
sigset_t saved;
int rc = -1;
+ PROFILE_START;
if (!pseudo_check_wrappers() || !real_execve) {
/* rc was initialized to the "failure" value */
pseudo_enosys("execve");
+ PROFILE_DONE;
return rc;
}
@@ -246,6 +269,7 @@ execve(const char *file, char *const *argv, char *const *envp) {
if (pseudo_getlock()) {
errno = EBUSY;
sigprocmask(SIG_SETMASK, &saved, NULL);
+ PROFILE_DONE;
return -1;
}
@@ -260,6 +284,7 @@ execve(const char *file, char *const *argv, char *const *envp) {
sigprocmask(SIG_SETMASK, &saved, NULL);
pseudo_debug(PDBGF_WRAPPER, "completed: execve\n");
errno = save_errno;
+ PROFILE_DONE;
return rc;
}
@@ -268,10 +293,12 @@ execvp(const char *file, char *const *argv) {
sigset_t saved;
int rc = -1;
+ PROFILE_START;
if (!pseudo_check_wrappers() || !real_execvp) {
/* rc was initialized to the "failure" value */
pseudo_enosys("execvp");
+ PROFILE_DONE;
return rc;
}
@@ -280,6 +307,7 @@ execvp(const char *file, char *const *argv) {
if (pseudo_getlock()) {
errno = EBUSY;
sigprocmask(SIG_SETMASK, &saved, NULL);
+ PROFILE_DONE;
return -1;
}
@@ -294,9 +322,13 @@ execvp(const char *file, char *const *argv) {
sigprocmask(SIG_SETMASK, &saved, NULL);
pseudo_debug(PDBGF_WRAPPER, "completed: execvp\n");
errno = save_errno;
+ PROFILE_DONE;
return rc;
}
+/* no profiling in fork because it wouldn't work anyway
+ * half the time
+ */
int
fork(void) {
sigset_t saved;