1181053Srwatson/*-
2184825Srwatson * Copyright (c) 2008 Ed Schouten <ed@FreeBSD.org>
3176627Srwatson * All rights reserved.
4156888Srwatson *
5156888Srwatson * Redistribution and use in source and binary forms, with or without
6156888Srwatson * modification, are permitted provided that the following conditions
7156888Srwatson * are met:
8156888Srwatson * 1. Redistributions of source code must retain the above copyright
9156888Srwatson *    notice, this list of conditions and the following disclaimer.
10156888Srwatson * 2. Redistributions in binary form must reproduce the above copyright
11156888Srwatson *    notice, this list of conditions and the following disclaimer in the
12156888Srwatson *    documentation and/or other materials provided with the distribution.
13156888Srwatson *
14180701Srwatson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15156888Srwatson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16156888Srwatson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17156888Srwatson * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18156888Srwatson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19156888Srwatson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20156888Srwatson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21156888Srwatson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22156888Srwatson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23156888Srwatson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24156888Srwatson * SUCH DAMAGE.
25156888Srwatson */
26156888Srwatson
27156888Srwatson#include <sys/cdefs.h>
28156888Srwatson__RCSID("$NetBSD: posix_spawn_sched.c,v 1.1 2012/02/11 23:31:24 martin Exp $");
29156888Srwatson
30156888Srwatson#include "namespace.h"
31178186Srwatson
32178186Srwatson#include <errno.h>
33178186Srwatson#include <fcntl.h>
34156888Srwatson#include <sched.h>
35156888Srwatson#include <signal.h>
36156888Srwatson#include <stdlib.h>
37156888Srwatson#include <string.h>
38156888Srwatson#include <unistd.h>
39156888Srwatson#include <spawn.h>
40156888Srwatson
41156888Srwatson/*
42156888Srwatson * Spawn attributes
43156888Srwatson */
44156888Srwatson
45156888Srwatsonint
46156888Srwatsonposix_spawnattr_init(posix_spawnattr_t *ret)
47156888Srwatson{
48156888Srwatson	if (ret == NULL)
49156888Srwatson		return -1;
50156888Srwatson
51156888Srwatson	memset(ret, 0, sizeof(posix_spawnattr_t));
52176627Srwatson	return 0;
53156888Srwatson}
54156888Srwatson
55156888Srwatsonint
56156888Srwatsonposix_spawnattr_destroy(posix_spawnattr_t *sa)
57156888Srwatson{
58156888Srwatson	if (sa == NULL)
59156888Srwatson		return -1;
60156888Srwatson
61156888Srwatson	return 0;
62156888Srwatson}
63156888Srwatson
64156888Srwatsonint
65156888Srwatsonposix_spawnattr_getflags(const posix_spawnattr_t * __restrict sa,
66156888Srwatson    short * __restrict flags)
67156888Srwatson{
68156888Srwatson	*flags = sa->sa_flags;
69156888Srwatson	return 0;
70156888Srwatson}
71156888Srwatson
72156888Srwatsonint
73156888Srwatsonposix_spawnattr_getpgroup(const posix_spawnattr_t * __restrict sa,
74156888Srwatson    pid_t * __restrict pgroup)
75156888Srwatson{
76156889Srwatson	*pgroup = sa->sa_pgroup;
77156888Srwatson	return 0;
78156888Srwatson}
79156888Srwatson
80176627Srwatsonint
81184825Srwatsonposix_spawnattr_getschedparam(const posix_spawnattr_t * __restrict sa,
82184825Srwatson    struct sched_param * __restrict schedparam)
83184825Srwatson{
84184825Srwatson	*schedparam = sa->sa_schedparam;
85184825Srwatson	return 0;
86184825Srwatson}
87156888Srwatson
88176627Srwatsonint
89176627Srwatsonposix_spawnattr_getschedpolicy(const posix_spawnattr_t * __restrict sa,
90176627Srwatson    int * __restrict schedpolicy)
91243722Spjd{
92184825Srwatson	*schedpolicy = sa->sa_schedpolicy;
93156888Srwatson	return 0;
94184825Srwatson}
95184825Srwatson
96184825Srwatsonint
97184825Srwatsonposix_spawnattr_getsigdefault(const posix_spawnattr_t * __restrict sa,
98184825Srwatson    sigset_t * __restrict sigdefault)
99184825Srwatson{
100184825Srwatson	*sigdefault = sa->sa_sigdefault;
101156888Srwatson	return 0;
102162599Srwatson}
103162599Srwatson
104162599Srwatsonint
105162599Srwatsonposix_spawnattr_getsigmask(const posix_spawnattr_t * __restrict sa,
106162599Srwatson    sigset_t * __restrict sigmask)
107162599Srwatson{
108156888Srwatson	*sigmask = sa->sa_sigmask;
109162599Srwatson	return 0;
110176627Srwatson}
111176627Srwatson
112156888Srwatsonint
113162599Srwatsonposix_spawnattr_setflags(posix_spawnattr_t *sa, short flags)
114162599Srwatson{
115162599Srwatson	sa->sa_flags = flags;
116162599Srwatson	return 0;
117241896Skib}
118162599Srwatson
119156888Srwatsonint
120156888Srwatsonposix_spawnattr_setpgroup(posix_spawnattr_t *sa, pid_t pgroup)
121184825Srwatson{
122176627Srwatson	sa->sa_pgroup = pgroup;
123159264Srwatson	return 0;
124162599Srwatson}
125159264Srwatson
126180709Srwatsonint
127156888Srwatsonposix_spawnattr_setschedparam(posix_spawnattr_t * __restrict sa,
128156888Srwatson    const struct sched_param * __restrict schedparam)
129156889Srwatson{
130162599Srwatson	sa->sa_schedparam = *schedparam;
131162599Srwatson	return 0;
132156888Srwatson}
133191990Sattilio
134162599Srwatsonint
135162599Srwatsonposix_spawnattr_setschedpolicy(posix_spawnattr_t *sa, int schedpolicy)
136156888Srwatson{
137156888Srwatson	sa->sa_schedpolicy = schedpolicy;
138162599Srwatson	return 0;
139162599Srwatson}
140162599Srwatson
141162599Srwatsonint
142162599Srwatsonposix_spawnattr_setsigdefault(posix_spawnattr_t * __restrict sa,
143162599Srwatson    const sigset_t * __restrict sigdefault)
144162599Srwatson{
145162599Srwatson	sa->sa_sigdefault = *sigdefault;
146162599Srwatson	return 0;
147162599Srwatson}
148162599Srwatson
149162599Srwatsonint
150162599Srwatsonposix_spawnattr_setsigmask(posix_spawnattr_t * __restrict sa,
151162599Srwatson    const sigset_t * __restrict sigmask)
152162599Srwatson{
153162599Srwatson	sa->sa_sigmask = *sigmask;
154162599Srwatson	return 0;
155162599Srwatson}
156162599Srwatson