1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:58:11 +00:00

LibC: Add POSIX spec comments for posix_spawn APIs

This commit is contained in:
Brian Gianforcaro 2021-12-21 15:59:15 -08:00 committed by Brian Gianforcaro
parent 6fe71970f5
commit 890fba95f7

View file

@ -99,6 +99,7 @@ extern "C" {
_exit(127); _exit(127);
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn.html
int posix_spawn(pid_t* out_pid, const char* path, const posix_spawn_file_actions_t* file_actions, const posix_spawnattr_t* attr, char* const argv[], char* const envp[]) int posix_spawn(pid_t* out_pid, const char* path, const posix_spawn_file_actions_t* file_actions, const posix_spawnattr_t* attr, char* const argv[], char* const envp[])
{ {
pid_t child_pid = fork(); pid_t child_pid = fork();
@ -113,6 +114,7 @@ int posix_spawn(pid_t* out_pid, const char* path, const posix_spawn_file_actions
posix_spawn_child(path, file_actions, attr, argv, envp, execve); posix_spawn_child(path, file_actions, attr, argv, envp, execve);
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnp.html
int posix_spawnp(pid_t* out_pid, const char* path, const posix_spawn_file_actions_t* file_actions, const posix_spawnattr_t* attr, char* const argv[], char* const envp[]) int posix_spawnp(pid_t* out_pid, const char* path, const posix_spawn_file_actions_t* file_actions, const posix_spawnattr_t* attr, char* const argv[], char* const envp[])
{ {
pid_t child_pid = fork(); pid_t child_pid = fork();
@ -127,6 +129,7 @@ int posix_spawnp(pid_t* out_pid, const char* path, const posix_spawn_file_action
posix_spawn_child(path, file_actions, attr, argv, envp, execvpe); posix_spawn_child(path, file_actions, attr, argv, envp, execvpe);
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn_file_actions_addchdir.html
int posix_spawn_file_actions_addchdir(posix_spawn_file_actions_t* actions, const char* path) int posix_spawn_file_actions_addchdir(posix_spawn_file_actions_t* actions, const char* path)
{ {
actions->state->actions.append([path]() { return chdir(path); }); actions->state->actions.append([path]() { return chdir(path); });
@ -139,18 +142,21 @@ int posix_spawn_file_actions_addfchdir(posix_spawn_file_actions_t* actions, int
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn_file_actions_addclose.html
int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t* actions, int fd) int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t* actions, int fd)
{ {
actions->state->actions.append([fd]() { return close(fd); }); actions->state->actions.append([fd]() { return close(fd); });
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn_file_actions_adddup2.html
int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t* actions, int old_fd, int new_fd) int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t* actions, int old_fd, int new_fd)
{ {
actions->state->actions.append([old_fd, new_fd]() { return dup2(old_fd, new_fd); }); actions->state->actions.append([old_fd, new_fd]() { return dup2(old_fd, new_fd); });
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn_file_actions_addopen.html
int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t* actions, int want_fd, const char* path, int flags, mode_t mode) int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t* actions, int want_fd, const char* path, int flags, mode_t mode)
{ {
actions->state->actions.append([want_fd, path, flags, mode]() { actions->state->actions.append([want_fd, path, flags, mode]() {
@ -164,59 +170,69 @@ int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t* actions, int wa
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn_file_actions_destroy.html
int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t* actions) int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t* actions)
{ {
delete actions->state; delete actions->state;
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawn_file_actions_init.html
int posix_spawn_file_actions_init(posix_spawn_file_actions_t* actions) int posix_spawn_file_actions_init(posix_spawn_file_actions_t* actions)
{ {
actions->state = new posix_spawn_file_actions_state; actions->state = new posix_spawn_file_actions_state;
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_destroy.html
int posix_spawnattr_destroy(posix_spawnattr_t*) int posix_spawnattr_destroy(posix_spawnattr_t*)
{ {
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_getflags.html
int posix_spawnattr_getflags(const posix_spawnattr_t* attr, short* out_flags) int posix_spawnattr_getflags(const posix_spawnattr_t* attr, short* out_flags)
{ {
*out_flags = attr->flags; *out_flags = attr->flags;
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_getpgroup.html
int posix_spawnattr_getpgroup(const posix_spawnattr_t* attr, pid_t* out_pgroup) int posix_spawnattr_getpgroup(const posix_spawnattr_t* attr, pid_t* out_pgroup)
{ {
*out_pgroup = attr->pgroup; *out_pgroup = attr->pgroup;
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_getschedparam.html
int posix_spawnattr_getschedparam(const posix_spawnattr_t* attr, struct sched_param* out_schedparam) int posix_spawnattr_getschedparam(const posix_spawnattr_t* attr, struct sched_param* out_schedparam)
{ {
*out_schedparam = attr->schedparam; *out_schedparam = attr->schedparam;
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_getschedpolicy.html
int posix_spawnattr_getschedpolicy(const posix_spawnattr_t* attr, int* out_schedpolicty) int posix_spawnattr_getschedpolicy(const posix_spawnattr_t* attr, int* out_schedpolicty)
{ {
*out_schedpolicty = attr->schedpolicy; *out_schedpolicty = attr->schedpolicy;
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_getsigdefault.html
int posix_spawnattr_getsigdefault(const posix_spawnattr_t* attr, sigset_t* out_sigdefault) int posix_spawnattr_getsigdefault(const posix_spawnattr_t* attr, sigset_t* out_sigdefault)
{ {
*out_sigdefault = attr->sigdefault; *out_sigdefault = attr->sigdefault;
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_getsigmask.html
int posix_spawnattr_getsigmask(const posix_spawnattr_t* attr, sigset_t* out_sigmask) int posix_spawnattr_getsigmask(const posix_spawnattr_t* attr, sigset_t* out_sigmask)
{ {
*out_sigmask = attr->sigmask; *out_sigmask = attr->sigmask;
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_init.html
int posix_spawnattr_init(posix_spawnattr_t* attr) int posix_spawnattr_init(posix_spawnattr_t* attr)
{ {
attr->flags = 0; attr->flags = 0;
@ -228,6 +244,7 @@ int posix_spawnattr_init(posix_spawnattr_t* attr)
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_setflags.html
int posix_spawnattr_setflags(posix_spawnattr_t* attr, short flags) int posix_spawnattr_setflags(posix_spawnattr_t* attr, short flags)
{ {
if (flags & ~(POSIX_SPAWN_RESETIDS | POSIX_SPAWN_SETPGROUP | POSIX_SPAWN_SETSCHEDPARAM | POSIX_SPAWN_SETSCHEDULER | POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK | POSIX_SPAWN_SETSID)) if (flags & ~(POSIX_SPAWN_RESETIDS | POSIX_SPAWN_SETPGROUP | POSIX_SPAWN_SETSCHEDPARAM | POSIX_SPAWN_SETSCHEDULER | POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK | POSIX_SPAWN_SETSID))
@ -237,30 +254,35 @@ int posix_spawnattr_setflags(posix_spawnattr_t* attr, short flags)
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_setpgroup.html
int posix_spawnattr_setpgroup(posix_spawnattr_t* attr, pid_t pgroup) int posix_spawnattr_setpgroup(posix_spawnattr_t* attr, pid_t pgroup)
{ {
attr->pgroup = pgroup; attr->pgroup = pgroup;
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_setschedparam.html
int posix_spawnattr_setschedparam(posix_spawnattr_t* attr, const struct sched_param* schedparam) int posix_spawnattr_setschedparam(posix_spawnattr_t* attr, const struct sched_param* schedparam)
{ {
attr->schedparam = *schedparam; attr->schedparam = *schedparam;
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_setschedpolicy.html
int posix_spawnattr_setschedpolicy(posix_spawnattr_t* attr, int schedpolicy) int posix_spawnattr_setschedpolicy(posix_spawnattr_t* attr, int schedpolicy)
{ {
attr->schedpolicy = schedpolicy; attr->schedpolicy = schedpolicy;
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_setsigdefault.html
int posix_spawnattr_setsigdefault(posix_spawnattr_t* attr, const sigset_t* sigdefault) int posix_spawnattr_setsigdefault(posix_spawnattr_t* attr, const sigset_t* sigdefault)
{ {
attr->sigdefault = *sigdefault; attr->sigdefault = *sigdefault;
return 0; return 0;
} }
// https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_spawnattr_setsigmask.html
int posix_spawnattr_setsigmask(posix_spawnattr_t* attr, const sigset_t* sigmask) int posix_spawnattr_setsigmask(posix_spawnattr_t* attr, const sigset_t* sigmask)
{ {
attr->sigmask = *sigmask; attr->sigmask = *sigmask;