Static inline wont work on packages like gnulib where it will generate its own spawn.h
Signed-off-by: Khem Raj <[email protected]> --- include/spawn.h | 155 ++++++++++++---------------------------------------- librt/spawn.c | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 195 insertions(+), 122 deletions(-) diff --git a/include/spawn.h b/include/spawn.h index 95fff35..1d96467 100644 --- a/include/spawn.h +++ b/include/spawn.h @@ -64,6 +64,8 @@ typedef struct #define POSIX_SPAWN_SETSCHEDULER 0x20 #ifdef __USE_GNU # define POSIX_SPAWN_USEVFORK 0x40 +#else +# define POSIX_SPAWN_USEVFORK 0x00 #endif @@ -73,7 +75,8 @@ typedef struct | POSIX_SPAWN_SETSIGMASK \ | POSIX_SPAWN_SETSCHEDPARAM \ | POSIX_SPAWN_SETSCHEDULER \ - | POSIX_SPAWN_USEVFORK) + | POSIX_SPAWN_USEVFORK \ + ) __BEGIN_DECLS @@ -101,167 +104,75 @@ extern int posix_spawnp (pid_t *__pid, const char *__file, /* Initialize data structure with attributes for `spawn' to default values. */ -static inline -int posix_spawnattr_init (posix_spawnattr_t *__attr) -{ - memset (__attr, 0, sizeof (*__attr)); - return 0; -} +extern int posix_spawnattr_init (posix_spawnattr_t *__attr); /* Free resources associated with ATTR. */ -static inline -int posix_spawnattr_destroy (posix_spawnattr_t *__attr) -{ - return 0; -} +extern int posix_spawnattr_destroy (posix_spawnattr_t *__attr); /* Store signal mask for signals with default handling from ATTR in SIGDEFAULT. */ -static inline -int posix_spawnattr_getsigdefault (const posix_spawnattr_t * +extern int posix_spawnattr_getsigdefault (const posix_spawnattr_t * __restrict __attr, - sigset_t *__restrict __sigdefault) -{ - memcpy (__sigdefault, &__attr->__sd, sizeof (sigset_t)); - return 0; -} + sigset_t *__restrict __sigdefault); /* Set signal mask for signals with default handling in ATTR to SIGDEFAULT. */ -static inline -int posix_spawnattr_setsigdefault (posix_spawnattr_t *__restrict __attr, +extern int posix_spawnattr_setsigdefault (posix_spawnattr_t *__restrict __attr, const sigset_t *__restrict - __sigdefault) -{ - memcpy (&__attr->__sd, __sigdefault, sizeof (sigset_t)); - return 0; -} + __sigdefault); /* Store signal mask for the new process from ATTR in SIGMASK. */ -static inline -int posix_spawnattr_getsigmask (const posix_spawnattr_t *__restrict +extern int posix_spawnattr_getsigmask (const posix_spawnattr_t *__restrict __attr, - sigset_t *__restrict __sigmask) -{ - memcpy (__sigmask, &__attr->__ss, sizeof (sigset_t)); - return 0; -} + sigset_t *__restrict __sigmask); /* Set signal mask for the new process in ATTR to SIGMASK. */ -static inline -int posix_spawnattr_setsigmask (posix_spawnattr_t *__restrict __attr, - const sigset_t *__restrict __sigmask) -{ - memcpy (&__attr->__ss, __sigmask, sizeof (sigset_t)); - return 0; -} +extern int posix_spawnattr_setsigmask (posix_spawnattr_t *__restrict __attr, + const sigset_t *__restrict __sigmask); /* Get flag word from the attribute structure. */ -static inline -int posix_spawnattr_getflags (const posix_spawnattr_t *__restrict +extern int posix_spawnattr_getflags (const posix_spawnattr_t *__restrict __attr, - short int *__restrict __flags) -{ - *__flags = __attr->__flags; - return 0; -} + short int *__restrict __flags); /* Store flags in the attribute structure. */ -static inline -int posix_spawnattr_setflags (posix_spawnattr_t *_attr, - short int __flags) -{ - /* Check no invalid bits are set. */ - if (__flags & ~__POSIX_SPAWN_MASK) - return EINVAL; - - _attr->__flags = __flags; - return 0; -} +extern int posix_spawnattr_setflags (posix_spawnattr_t *_attr, + short int __flags); /* Get process group ID from the attribute structure. */ -static inline -int posix_spawnattr_getpgroup (const posix_spawnattr_t *__restrict - __attr, pid_t *__restrict __pgroup) -{ - *__pgroup = __attr->__pgrp; - return 0; -} +extern int posix_spawnattr_getpgroup (const posix_spawnattr_t *__restrict + __attr, pid_t *__restrict __pgroup); /* Store process group ID in the attribute structure. */ -static inline -int posix_spawnattr_setpgroup (posix_spawnattr_t *__attr, - pid_t __pgroup) -{ - __attr->__pgrp = __pgroup; - return 0; -} +extern int posix_spawnattr_setpgroup (posix_spawnattr_t *__attr, + pid_t __pgroup); /* Get scheduling policy from the attribute structure. */ -static inline -int posix_spawnattr_getschedpolicy (const posix_spawnattr_t * +extern int posix_spawnattr_getschedpolicy (const posix_spawnattr_t * __restrict __attr, - int *__restrict __schedpolicy) -{ - *__schedpolicy = __attr->__policy; - return 0; -} + int *__restrict __schedpolicy); /* Store scheduling policy in the attribute structure. */ -static inline -int posix_spawnattr_setschedpolicy (posix_spawnattr_t *__attr, - int __schedpolicy) -{ - switch (__schedpolicy) { - case SCHED_OTHER: - case SCHED_FIFO: - case SCHED_RR: - break; - default: - return EINVAL; - } - - __attr->__policy = __schedpolicy; - return 0; -} +extern int posix_spawnattr_setschedpolicy (posix_spawnattr_t *__attr, + int __schedpolicy); /* Get scheduling parameters from the attribute structure. */ -static inline int posix_spawnattr_getschedparam (const posix_spawnattr_t * __restrict __attr, struct sched_param *__restrict - __schedparam) -{ - memcpy (__schedparam, &__attr->__sp, sizeof (__attr->__sp)); - return 0; -} + __schedparam); /* Store scheduling parameters in the attribute structure. */ -static inline -int posix_spawnattr_setschedparam (posix_spawnattr_t *__restrict __attr, +extern int posix_spawnattr_setschedparam (posix_spawnattr_t *__restrict __attr, const struct sched_param * - __restrict __schedparam) -{ - __attr->__sp = *__schedparam; - return 0; -} + __restrict __schedparam); /* Initialize data structure for file attribute for `spawn' call. */ -static inline -int posix_spawn_file_actions_init (posix_spawn_file_actions_t * - __file_actions) -{ - memset (__file_actions, 0, sizeof (*__file_actions)); - return 0; -} +extern int posix_spawn_file_actions_init (posix_spawn_file_actions_t * + __file_actions); /* Free resources associated with FILE-ACTIONS. */ -static inline -int posix_spawn_file_actions_destroy (posix_spawn_file_actions_t * - __file_actions) -{ - free (__file_actions->__actions); - return 0; -} +extern int posix_spawn_file_actions_destroy (posix_spawn_file_actions_t * + __file_actions); /* Add an action to FILE-ACTIONS which tells the implementation to call `open' for the given file during the `spawn' call. */ diff --git a/librt/spawn.c b/librt/spawn.c index 8a2b293..1a63266 100644 --- a/librt/spawn.c +++ b/librt/spawn.c @@ -263,3 +263,165 @@ posix_spawnp(pid_t *pid, const char *file, return __spawni(pid, file, fa, attrp, argv, envp, path); } +/* Initialize data structure with attributes for `spawn' to default values. */ +int +posix_spawnattr_init (posix_spawnattr_t *__attr) +{ + memset (__attr, 0, sizeof (*__attr)); + return 0; +} + +/* Free resources associated with ATTR. */ +int +posix_spawnattr_destroy (posix_spawnattr_t *__attr) +{ + return 0; +} + +/* Store signal mask for signals with default handling from ATTR in + SIGDEFAULT. */ +int +posix_spawnattr_getsigdefault (const posix_spawnattr_t * + __restrict __attr, + sigset_t *__restrict __sigdefault) +{ + memcpy (__sigdefault, &__attr->__sd, sizeof (sigset_t)); + return 0; +} + +/* Set signal mask for signals with default handling in ATTR to SIGDEFAULT. */ +int +posix_spawnattr_setsigdefault (posix_spawnattr_t *__restrict __attr, + const sigset_t *__restrict + __sigdefault) +{ + memcpy (&__attr->__sd, __sigdefault, sizeof (sigset_t)); + return 0; +} + +/* Store signal mask for the new process from ATTR in SIGMASK. */ +int +posix_spawnattr_getsigmask (const posix_spawnattr_t *__restrict + __attr, + sigset_t *__restrict __sigmask) +{ + memcpy (__sigmask, &__attr->__ss, sizeof (sigset_t)); + return 0; +} + +/* Set signal mask for the new process in ATTR to SIGMASK. */ +int +posix_spawnattr_setsigmask (posix_spawnattr_t *__restrict __attr, + const sigset_t *__restrict __sigmask) +{ + memcpy (&__attr->__ss, __sigmask, sizeof (sigset_t)); + return 0; +} + +/* Get flag word from the attribute structure. */ +int +posix_spawnattr_getflags (const posix_spawnattr_t *__restrict + __attr, + short int *__restrict __flags) +{ + *__flags = __attr->__flags; + return 0; +} + +/* Store flags in the attribute structure. */ +int +posix_spawnattr_setflags (posix_spawnattr_t *_attr, + short int __flags) +{ + /* Check no invalid bits are set. */ + if (__flags & ~__POSIX_SPAWN_MASK) + return EINVAL; + + _attr->__flags = __flags; + return 0; +} + +/* Get process group ID from the attribute structure. */ +int +posix_spawnattr_getpgroup (const posix_spawnattr_t *__restrict + __attr, pid_t *__restrict __pgroup) +{ + *__pgroup = __attr->__pgrp; + return 0; +} + +/* Store process group ID in the attribute structure. */ +int +posix_spawnattr_setpgroup (posix_spawnattr_t *__attr, + pid_t __pgroup) +{ + __attr->__pgrp = __pgroup; + return 0; +} + +/* Get scheduling policy from the attribute structure. */ +int +posix_spawnattr_getschedpolicy (const posix_spawnattr_t * + __restrict __attr, + int *__restrict __schedpolicy) +{ + *__schedpolicy = __attr->__policy; + return 0; +} + +/* Store scheduling policy in the attribute structure. */ +int +posix_spawnattr_setschedpolicy (posix_spawnattr_t *__attr, + int __schedpolicy) +{ + switch (__schedpolicy) { + case SCHED_OTHER: + case SCHED_FIFO: + case SCHED_RR: + break; + default: + return EINVAL; + } + + __attr->__policy = __schedpolicy; + return 0; +} + +/* Get scheduling parameters from the attribute structure. */ +int +posix_spawnattr_getschedparam (const posix_spawnattr_t * + __restrict __attr, + struct sched_param *__restrict + __schedparam) +{ + memcpy (__schedparam, &__attr->__sp, sizeof (__attr->__sp)); + return 0; +} + +/* Store scheduling parameters in the attribute structure. */ +int +posix_spawnattr_setschedparam (posix_spawnattr_t *__restrict __attr, + const struct sched_param * + __restrict __schedparam) +{ + __attr->__sp = *__schedparam; + return 0; +} + +/* Initialize data structure for file attribute for `spawn' call. */ +int +posix_spawn_file_actions_init (posix_spawn_file_actions_t * + __file_actions) +{ + memset (__file_actions, 0, sizeof (*__file_actions)); + return 0; +} + +/* Free resources associated with FILE-ACTIONS. */ +int +posix_spawn_file_actions_destroy (posix_spawn_file_actions_t * + __file_actions) +{ + free (__file_actions->__actions); + return 0; +} -- 1.7.9.5 _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
