1c4dd129bSPeter Avalos /*- 2c4dd129bSPeter Avalos * Copyright (c) 2008 Ed Schouten <ed@FreeBSD.org> 3c4dd129bSPeter Avalos * All rights reserved. 4c4dd129bSPeter Avalos * 5c4dd129bSPeter Avalos * Redistribution and use in source and binary forms, with or without 6c4dd129bSPeter Avalos * modification, are permitted provided that the following conditions 7c4dd129bSPeter Avalos * are met: 8c4dd129bSPeter Avalos * 1. Redistributions of source code must retain the above copyright 9c4dd129bSPeter Avalos * notice, this list of conditions and the following disclaimer. 10c4dd129bSPeter Avalos * 2. Redistributions in binary form must reproduce the above copyright 11c4dd129bSPeter Avalos * notice, this list of conditions and the following disclaimer in the 12c4dd129bSPeter Avalos * documentation and/or other materials provided with the distribution. 13c4dd129bSPeter Avalos * 14c4dd129bSPeter Avalos * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15c4dd129bSPeter Avalos * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16c4dd129bSPeter Avalos * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17c4dd129bSPeter Avalos * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18c4dd129bSPeter Avalos * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19c4dd129bSPeter Avalos * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20c4dd129bSPeter Avalos * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21c4dd129bSPeter Avalos * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22c4dd129bSPeter Avalos * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23c4dd129bSPeter Avalos * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24c4dd129bSPeter Avalos * SUCH DAMAGE. 25c4dd129bSPeter Avalos * 26c4dd129bSPeter Avalos * $FreeBSD: src/include/spawn.h,v 1.3 2008/06/19 07:30:32 ed Exp $ 27c4dd129bSPeter Avalos */ 28c4dd129bSPeter Avalos 29c4dd129bSPeter Avalos #ifndef _SPAWN_H_ 30c4dd129bSPeter Avalos #define _SPAWN_H_ 31c4dd129bSPeter Avalos 32c4dd129bSPeter Avalos #include <sys/cdefs.h> 333f7c286bSSascha Wildner #include <sys/_sigset.h> 34*9d4f17d1Szrj #include <machine/stdint.h> 35c4dd129bSPeter Avalos 36c4dd129bSPeter Avalos #ifndef _MODE_T_DECLARED 37b9a2c4b6SSascha Wildner typedef __uint16_t mode_t; 38c4dd129bSPeter Avalos #define _MODE_T_DECLARED 39c4dd129bSPeter Avalos #endif 40c4dd129bSPeter Avalos 41c4dd129bSPeter Avalos #ifndef _PID_T_DECLARED 42c4dd129bSPeter Avalos typedef __pid_t pid_t; 43c4dd129bSPeter Avalos #define _PID_T_DECLARED 44c4dd129bSPeter Avalos #endif 45c4dd129bSPeter Avalos 463f7c286bSSascha Wildner #ifndef _SIGSET_T_DECLARED 473f7c286bSSascha Wildner typedef struct __sigset sigset_t; 483f7c286bSSascha Wildner #define _SIGSET_T_DECLARED 493f7c286bSSascha Wildner #endif 503f7c286bSSascha Wildner 51c4dd129bSPeter Avalos struct sched_param; 52c4dd129bSPeter Avalos 53c4dd129bSPeter Avalos typedef struct __posix_spawnattr *posix_spawnattr_t; 54c4dd129bSPeter Avalos typedef struct __posix_spawn_file_actions *posix_spawn_file_actions_t; 55c4dd129bSPeter Avalos 56c4dd129bSPeter Avalos #define POSIX_SPAWN_RESETIDS 0x01 57c4dd129bSPeter Avalos #define POSIX_SPAWN_SETPGROUP 0x02 58c4dd129bSPeter Avalos #define POSIX_SPAWN_SETSCHEDPARAM 0x04 59c4dd129bSPeter Avalos #define POSIX_SPAWN_SETSCHEDULER 0x08 60c4dd129bSPeter Avalos #define POSIX_SPAWN_SETSIGDEF 0x10 61c4dd129bSPeter Avalos #define POSIX_SPAWN_SETSIGMASK 0x20 62c4dd129bSPeter Avalos 63c4dd129bSPeter Avalos __BEGIN_DECLS 64c4dd129bSPeter Avalos /* 65c4dd129bSPeter Avalos * Spawn routines 66c4dd129bSPeter Avalos */ 67c4dd129bSPeter Avalos int posix_spawn(pid_t * __restrict, const char * __restrict, 68c4dd129bSPeter Avalos const posix_spawn_file_actions_t *, 69d33005aaSSascha Wildner const posix_spawnattr_t * __restrict, 70d33005aaSSascha Wildner char * const [__restrict_arr], char * const [__restrict_arr]); 71c4dd129bSPeter Avalos int posix_spawnp(pid_t * __restrict, const char * __restrict, 72c4dd129bSPeter Avalos const posix_spawn_file_actions_t *, 73d33005aaSSascha Wildner const posix_spawnattr_t * __restrict, 74d33005aaSSascha Wildner char * const [__restrict_arr], char * const [__restrict_arr]); 75c4dd129bSPeter Avalos 76c4dd129bSPeter Avalos /* 77c4dd129bSPeter Avalos * File descriptor actions 78c4dd129bSPeter Avalos */ 79c4dd129bSPeter Avalos int posix_spawn_file_actions_init(posix_spawn_file_actions_t *); 80c4dd129bSPeter Avalos int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *); 81c4dd129bSPeter Avalos 82c4dd129bSPeter Avalos int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t * __restrict, 83c4dd129bSPeter Avalos int, const char * __restrict, int, mode_t); 84c4dd129bSPeter Avalos int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, int); 85c4dd129bSPeter Avalos int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int); 86c4dd129bSPeter Avalos 87c4dd129bSPeter Avalos /* 88c4dd129bSPeter Avalos * Spawn attributes 89c4dd129bSPeter Avalos */ 90c4dd129bSPeter Avalos int posix_spawnattr_init(posix_spawnattr_t *); 91c4dd129bSPeter Avalos int posix_spawnattr_destroy(posix_spawnattr_t *); 92c4dd129bSPeter Avalos 93c4dd129bSPeter Avalos int posix_spawnattr_getflags(const posix_spawnattr_t * __restrict, 94c4dd129bSPeter Avalos short * __restrict); 95c4dd129bSPeter Avalos int posix_spawnattr_getpgroup(const posix_spawnattr_t * __restrict, 96c4dd129bSPeter Avalos pid_t * __restrict); 97c4dd129bSPeter Avalos int posix_spawnattr_getschedparam(const posix_spawnattr_t * __restrict, 98c4dd129bSPeter Avalos struct sched_param * __restrict); 99c4dd129bSPeter Avalos int posix_spawnattr_getschedpolicy(const posix_spawnattr_t * __restrict, 100c4dd129bSPeter Avalos int * __restrict); 101c4dd129bSPeter Avalos int posix_spawnattr_getsigdefault(const posix_spawnattr_t * __restrict, 102c4dd129bSPeter Avalos sigset_t * __restrict); 103c4dd129bSPeter Avalos int posix_spawnattr_getsigmask(const posix_spawnattr_t * __restrict, 104d33005aaSSascha Wildner sigset_t * __restrict); 105c4dd129bSPeter Avalos 106c4dd129bSPeter Avalos int posix_spawnattr_setflags(posix_spawnattr_t *, short); 107c4dd129bSPeter Avalos int posix_spawnattr_setpgroup(posix_spawnattr_t *, pid_t); 108c4dd129bSPeter Avalos int posix_spawnattr_setschedparam(posix_spawnattr_t * __restrict, 109c4dd129bSPeter Avalos const struct sched_param * __restrict); 110c4dd129bSPeter Avalos int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int); 111c4dd129bSPeter Avalos int posix_spawnattr_setsigdefault(posix_spawnattr_t * __restrict, 112c4dd129bSPeter Avalos const sigset_t * __restrict); 113c4dd129bSPeter Avalos int posix_spawnattr_setsigmask(posix_spawnattr_t * __restrict, 114c4dd129bSPeter Avalos const sigset_t * __restrict); 115c4dd129bSPeter Avalos __END_DECLS 116c4dd129bSPeter Avalos 117c4dd129bSPeter Avalos #endif /* !_SPAWN_H_ */ 118