POSIX_SPAWNATTR_SETARCHPREF_NP(3) | Library Functions Manual | POSIX_SPAWNATTR_SETARCHPREF_NP(3) |
posix_spawnattr_setarchpref_np
posix_spawnattr_getarchpref_np
—
set or get the
cpu/subcpu
preference attribute on a
posix_spawnattr_t
#include
<spawn.h>
int
posix_spawnattr_setarchpref_np
(posix_spawnattr_t
*restrict attr, size_t count,
cpu_type_t *pref, cpu_subtype_t
*subpref, size_t *restrict ocount);
int
posix_spawnattr_getarchpref_np
(const
posix_spawnattr_t *restrict attr, size_t count,
cpu_type_t *pref, cpu_subtype_t
*subpref, size_t * restrict ocount);
These functions represent an Apple extension to posix_spawn(2) and posix_spawnp(2), and as such should not be used by programs intending their code to be portable to other platforms.
The
posix_spawnattr_setarchpref_np
()
function sets the precise universal binary preferences for the spawn
attribute value referenced by attr from the memory
containing the cpu_type_t referenced by
pref and the cpu_subtype_t
referenced by subpref with a size of
count elements; the actual number of elements that are
set in the attribute is returned in ocount.
When spawn(2) or
spawnp(2) is subsequently invoked on a Universal binary
with the posix_spawnattr_t, the elements which were set
will be used, in the order they were set, to select the first element in the
list which matches any cpu_type_t and
cpu_subtype_t of those available in the Universal binary.
If there is no match, then the attempt to create the child process will fail
with the error EBADARCH. If the cpu_type_t
CPU_TYPE_ANY
and cpu_subtype_t CPU_SUBTYPE_ANY are
the last pair in the list, then rather than returning EBADARCH on no match,
the system will instead fall back to the standard Universal binary grading
preference order. Using CPU_SUBTYPE_ANY as a
cpu_subtype_t for any cpu_type_t value
will select the best slice for that specific cpu_type_t,
similar to using
posix_spawnattr_setbinpref_np
().
If called multiple times on the same
attr, the
previous preferences will be overwritten.
The
posix_spawnattr_getarchpref_np
()
function gets the precise universal binary preferences for the spawn
attribute value referenced by attr (set by a prior
call to posix_spawnattr_setbinpref_np
() or
posix_spawnattr_setarchpref_np
()) into the memory
containing the cpu_type_t referenced by
pref and the cpu_subtype_t
referenced by subpref with a prereserved size of
count elements; the actual number of elements that are
copied from the attribute is returned in ocount.
On success, these functions return 0; on failure they return an
error number from <errno.h>
and modify the value of ocount. Additionally, if
successful, posix_spawnattr_getarchpref_np
() will
modify the contents of the pref array with the current
attribute values.
These functions may fail if:
posix_spawn(2), posix_spawnp(2), posix_spawnattr_init(3), posix_spawnattr_destroy(3), posix_spawnattr_setbinpref_np(3), posix_spawnattr_setflags(3)
Nonstandard
The posix_spawnattr_setarchpref_np
() and
posix_spawnattr_getarchpref_np
() function calls
appeared in macOS 10.16
May 8, 2020 | Mac OS X |