.. _OPAL_SENSOR_READ: OPAL_SENSOR_READ ================ .. code-block:: c #define OPAL_SENSOR_READ 88 int64_t opal_sensor_read(uint32_t sensor_hndl, int token, uint32_t *sensor_data); The OPAL sensor call reads a sensor data using a unique handler to identity the targeted sensor. The `sensor_handle` is provided via the device tree and is opaque to the OS (although we currently do use an encoding scheme). This call can be asynchronous, when a message needs to be sent to a service processor for example. In this case, the call will return OPAL_ASYNC_COMPLETION and the token parameter will be used to wait for the completion of the request. The OPAL API doesn't enforce alimit on the number of sensor calls that can be in flight. Internally, :ref:`OPAL_SENSOR_READ` is implemented as a wrapper around :ref:`OPAL_SENSOR_READ_U64`. Any code targeting processor generations prior to POWER9 will need to use :ref:`OPAL_CHECK_TOKEN` to ensure :ref:`OPAL_SENSOR_READ_U64` is present and gracefully fall back to :ref:`OPAL_SENSOR_READ` if it is not. Parameters ---------- :: uint32_t sensor_handle int token uint32_t *sensor_data Return values ------------- :ref:`OPAL_SUCCESS` Success! :ref:`OPAL_PARAMETER` invalid sensor handle :ref:`OPAL_UNSUPPORTED` platform does not support reading sensors. :ref:`OPAL_ASYNC_COMPLETION` a request was sent and an async completion will be triggered with the @token argument :ref:`OPAL_PARTIAL` the request completed but the data returned is invalid :ref:`OPAL_BUSY_EVENT` a previous request is still pending :ref:`OPAL_NO_MEM` allocation failed :ref:`OPAL_INTERNAL_ERROR` communication failure with the FSP :ref:`OPAL_HARDWARE` FSP is not available .. _OPAL_SENSOR_READ_U64: OPAL_SENSOR_READ_U64 ==================== .. code-block:: c #define OPAL_SENSOR_READ_U64 162 s64 opal_sensor_read_u64(u32 sensor_hndl, int token, u64 *sensor_data); The OPAL sensor call to read sensor data of type u64. Unlike opal_sensor_read which reads upto u32 this call can be used to read values of sensors upto 64bits. The calling conventions and return values are same as :ref:`OPAL_SENSOR_READ`. All sensors can be read through the :ref:`OPAL_SENSOR_READ_U64` call that can be read using the :ref:`OPAL_SENSOR_READ` call. Internally, :ref:`OPAL_SENSOR_READ` is a wrapper around :ref:`OPAL_SENSOR_READ_U64`. Any code targeting processor generations prior to POWER9 will need to use :ref:`OPAL_CHECK_TOKEN` to ensure :ref:`OPAL_SENSOR_READ_U64` is present and gracefully fall back to :ref:`OPAL_SENSOR_READ` if it is not.