object_get_property - Ask for various properties of various kernel objects.
object_set_property - Set various properties of various kernel objects.
#include <zircon/syscalls.h>
#include <zircon/syscalls/object.h>
zx_status_t zx_object_get_property(zx_handle_t handle, uint32_t property,
void* value, size_t value_size);
zx_status_t zx_object_set_property(zx_handle_t handle, uint32_t property,
const void* value, size_t value_size);
zx_object_get_property() requests the value of a kernel object's property. Getting a property requires ZX_RIGHT_GET_PROPERTY rights on the handle.
zx_object_set_property() modifies the value of a kernel object's property. Setting a property requires ZX_RIGHT_SET_PROPERTY rights on the handle.
The handle parameter indicates the target kernel object. Different properties only work on certain types of kernel objects, as described below.
The property parameter indicates which property to get/set. Property values have the prefix ZX_PROP_, and are described below.
The value parameter holds the property value, and must be a pointer to a buffer of size bytes. Different properties expect different value types/sizes as described below.
Property values have the prefix ZX_PROP_, and are defined in
#include <zircon/syscalls/object.h>
handle type: (Most types)
value type: char[ZX_MAX_NAME_LEN]
Allowed operations: get, set
The name of the object, as a NUL-terminated string.
handle type: Thread
value type: uintptr_t
Allowed operations: set
The value of the x86 FS or GS segment register. value
must be a
canonical address, and must be a userspace address.
Only defined for x86-64.
handle type: Process
value type: uintptr_t
Allowed operations: get, set
The value of ld.so's _dl_debug_addr
. This can be used by debuggers to
interrogate the state of the dynamic loader.
If this value is set to ZX_PROCESS_DEBUG_ADDR_BREAK_ON_SET
on process
creation, the loader will manually issue a debug breakpoint when the property
has been set to its correct value. This gives an opportunity to read or modify
the initial state of the program.
handle type: Process
value type: uintptr_t
Allowed operations: get
The base address of the vDSO mapping, or zero.
handle type: Job
value type: zx_job_importance_t
Allowed operations: get, set
A hint about how important a job is; used to rank jobs for the out-of-memory (OOM) killer.
Additional errors:
- ZX_ERR_OUT_OF_RANGE: If the importance value is not valid
handle type: Socket
value type: size_t
Allowed operations: get
The maximum size of the receive buffer of a socket, in bytes. The receive buffer may become full at a capacity less than the maximum due to overheads.
handle type: Socket
value type: size_t
Allowed operations: get
The size of the receive buffer of a socket, in bytes.
handle type: Socket
value type: size_t
Allowed operations: get
The maximum size of the transmit buffer of a socket, in bytes. The transmit buffer may become full at a capacity less than the maximum due to overheads.
handle type: Socket
value type: size_t
Allowed operations: get
The size of the transmit buffer of a socket, in bytes.
handle type: Channel
value type: size_t
Allowed operations: get
The maximum number of packets a channel endpoint can have pending in its outgoing direction.
TODO(ZX-2399)
zx_object_get_property() returns ZX_OK on success. In the event of failure, a negative error value is returned.
ZX_ERR_BAD_HANDLE: handle is not a valid handle
ZX_ERR_WRONG_TYPE: handle is not an appropriate type for property
ZX_ERR_ACCESS_DENIED: handle does not have the necessary rights for the operation
ZX_ERR_INVALID_ARGS: value is an invalid pointer
ZX_ERR_NO_MEMORY Failure due to lack of memory. There is no good way for userspace to handle this (unlikely) error. In a future build this error will no longer occur.
ZX_ERR_BUFFER_TOO_SMALL: value_size is too small for property
ZX_ERR_NOT_SUPPORTED: property does not exist