mirror of
git://git.musl-libc.org/musl
synced 2024-12-24 15:43:06 +00:00
1e21e78bf7
linux's sched_* syscalls actually implement the TPS (thread scheduling) functionality, not the PS (process scheduling) functionality which the sched_* functions are supposed to have. omitting support for the PS option (and having the sched_* interfaces fail with ENOSYS rather than omitting them, since some broken software assumes they exist) seems to be the only conforming way to do this on linux.
75 lines
2.5 KiB
C
75 lines
2.5 KiB
C
#ifndef _SPAWN_H
|
|
#define _SPAWN_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <features.h>
|
|
|
|
#define __NEED_mode_t
|
|
#define __NEED_pid_t
|
|
#define __NEED_sigset_t
|
|
|
|
#include <bits/alltypes.h>
|
|
|
|
struct sched_param;
|
|
|
|
#define POSIX_SPAWN_RESETIDS 1
|
|
#define POSIX_SPAWN_SETPGROUP 2
|
|
#define POSIX_SPAWN_SETSIGDEF 4
|
|
#define POSIX_SPAWN_SETSIGMASK 8
|
|
#define POSIX_SPAWN_SETSCHEDPARAM 16
|
|
#define POSIX_SPAWN_SETSCHEDULER 32
|
|
|
|
typedef struct {
|
|
int __flags;
|
|
pid_t __pgrp;
|
|
sigset_t __def, __mask;
|
|
int __prio, __pol, __pad[16];
|
|
} posix_spawnattr_t;
|
|
|
|
typedef struct {
|
|
int __pad0[2];
|
|
void *__actions;
|
|
int __pad[16];
|
|
} posix_spawn_file_actions_t;
|
|
|
|
int posix_spawn(pid_t *__restrict, const char *__restrict, const posix_spawn_file_actions_t *,
|
|
const posix_spawnattr_t *__restrict, char *const *__restrict, char *const *__restrict);
|
|
int posix_spawnp(pid_t *__restrict, const char *__restrict, const posix_spawn_file_actions_t *,
|
|
const posix_spawnattr_t *__restrict, char *const *__restrict, char *const *__restrict);
|
|
|
|
int posix_spawnattr_init(posix_spawnattr_t *);
|
|
int posix_spawnattr_destroy(posix_spawnattr_t *);
|
|
|
|
int posix_spawnattr_setflags(posix_spawnattr_t *, short);
|
|
int posix_spawnattr_getflags(const posix_spawnattr_t *__restrict, short *__restrict);
|
|
|
|
int posix_spawnattr_setpgroup(posix_spawnattr_t *, pid_t);
|
|
int posix_spawnattr_getpgroup(const posix_spawnattr_t *__restrict, pid_t *__restrict);
|
|
|
|
int posix_spawnattr_setsigmask(posix_spawnattr_t *__restrict, const sigset_t *__restrict);
|
|
int posix_spawnattr_getsigmask(const posix_spawnattr_t *__restrict, sigset_t *__restrict);
|
|
|
|
int posix_spawnattr_setsigdefault(posix_spawnattr_t *__restrict, const sigset_t *__restrict);
|
|
int posix_spawnattr_getsigdefault(const posix_spawnattr_t *__restrict, sigset_t *__restrict);
|
|
|
|
int posix_spawnattr_setschedparam(posix_spawnattr_t *__restrict, const struct sched_param *__restrict);
|
|
int posix_spawnattr_getschedparam(const posix_spawnattr_t *__restrict, struct sched_param *__restrict);
|
|
int posix_spawnattr_setschedpolicy(posix_spawnattr_t *__restrict, int);
|
|
int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *__restrict, int *);
|
|
|
|
int posix_spawn_file_actions_init(posix_spawn_file_actions_t *);
|
|
int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *);
|
|
|
|
int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *__restrict, int, const char *__restrict, int, mode_t);
|
|
int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int);
|
|
int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int, int);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|