plucky (2) PR_SVE_SET_VL.2const.gz

Provided by: manpages-dev_6.9.1-1_all bug

NAME

       PR_SVE_SET_VL - set the thread's SVE vector length

LIBRARY

       Standard C library (libc, -lc)

SYNOPSIS

       #include <linux/prctl.h>  /* Definition of PR_* constants */
       #include <sys/prctl.h>

       int prctl(PR_SVE_SET_VL, unsigned long val);

DESCRIPTION

       Configure the thread's SVE vector length, as specified by val.

       The  bits  of  val corresponding to PR_SVE_VL_LEN_MASK must be set to the desired vector length in bytes.
       This is interpreted as an upper bound: the kernel will select the greatest available vector  length  that
       does   not   exceed   the   value   specified.    In   particular,   specifying  SVE_VL_MAX  (defined  in
       <asm/sigcontext.h>) for the PR_SVE_VL_LEN_MASK bits requests the maximum supported vector length.

       In addition, the other bits of val must be set to one of the following combinations of flags:

       0L     Perform the change immediately.  At the next execve(2) in the thread, the vector  length  will  be
              reset to the value configured in /proc/sys/abi/sve_default_vector_length.

       PR_SVE_VL_INHERIT
              Perform the change immediately.  Subsequent execve(2) calls will preserve the new vector length.

       PR_SVE_SET_VL_ONEXEC
              Defer  the change, so that it is performed at the next execve(2) in the thread.  Further execve(2)
              calls   will   reset   the   vector   length   to   the   value   configured   in   /proc/sys/abi/
              sve_default_vector_length.

       PR_SVE_SET_VL_ONEXEC | PR_SVE_VL_INHERIT
              Defer  the change, so that it is performed at the next execve(2) in the thread.  Further execve(2)
              calls will preserve the new vector length.

       In all cases, any previously pending deferred change is canceled.

       On  success,  a  nonnegative  value  is  returned  that  describes  the   selected   configuration.    If
       PR_SVE_SET_VL_ONEXEC  was included in val, then the configuration described by the return value will take
       effect at the next execve(2).  Otherwise, the configuration is already in effect when  the  PR_SVE_SET_VL
       call returns.  In either case, the value is encoded in the same way as the return value of PR_SVE_GET_VL.
       Note that there is no explicit flag in the return value corresponding to PR_SVE_SET_VL_ONEXEC.

       The configuration (including any pending deferred change) is inherited across fork(2) and clone(2).

RETURN VALUE

       On success, PR_SVE_SET_VL returns the nonnegative value described above.  On error, -1 is  returned,  and
       errno is set to indicate the error.

ERRORS

       EINVAL SVE is not available on this platform.

       EINVAL The value in the bits of val corresponding to PR_SVE_VL_LEN_MASK is outside the range [SVE_VL_MIN,
              SVE_VL_MAX] or is not a multiple of 16.

       EINVAL The other bits of val are invalid or unsupported.

FILES

       /proc/sys/abi/sve_default_vector_length

STANDARDS

       Linux.  arm64 only.

HISTORY

       Linux 4.15 (arm64).

CAVEATS

       Because  the  compiler  or  run-time  environment  may  be  using  SVE,  using  this  call  without   the
       PR_SVE_SET_VL_ONEXEC  flag may crash the calling process.  The conditions for using it safely are complex
       and system-dependent.  Don't use it unless you really know what you are doing.

SEE ALSO

       prctl(2), PR_SVE_GET_VL(2const)

       For   more   information,    see    the    kernel    source    file    Documentation/arm64/sve.rst    (or
       Documentation/arm64/sve.txt before Linux 5.3).