Gets and sets the value of the active user-key-set attribute of a thread attributes object.
Threads library (libpthreads.a)
The ukeyset parameter specifies the active user-key-set for a thread created with this attributes object. By default, newly-created threads can only access (both read and write) memory pages that have been assigned the default user-key UKEY_PUBLIC. User-key-sets are not inherited across the pthread_create subroutine.
The pthread_attr_getukeyset_np subroutine gets the user-key-set attribute, while the pthread_attr_setukeyset_np subroutine sets the user-key-set attribute in the thread attributes object specified by the attr parameter.
Both the pthread_attr_getukeyset_np and the pthread_attr_setukeyset_np subroutines will fail unless the ukey_enable subroutine has been previously successfully run by a thread in the process. Refer to the Storage Protect Keys article for more details.
Item | Description |
---|---|
attr | Specifies the thread attributes object. |
ukeyset | Points to a location where the user-key-set attribute value is stored. |
The pthread_attr_getukeyset_np and pthread_attr_setukeyset_np subroutines return a value of 0 on success. Otherwise, an error code is returned.
The pthread_attr_getukeyset_np and pthread_attr_setukeyset_np subroutines are unsuccessful if the following are true:
Item | Description |
---|---|
EINVAL | The attribute object specified by the attr parameter is invalid or the address pointed to by the ukeyset parameter is not aligned to hold a user-key-set. |
ENOSYS | Process is not a user-key-enabled process. |
In addition, the pthread_attr_setukeyset_np subroutine is unsuccessful if the following is true:
Item | Description |
---|---|
EINVAL | The user-key-set value specified by the ukeyset parameter is not valid. |
These functions will not return an error code of EINTR.