|
Packit |
534379 |
// Copyright(c) 2019-2020, Intel Corporation
|
|
Packit |
534379 |
//
|
|
Packit |
534379 |
// Redistribution and use in source and binary forms, with or without
|
|
Packit |
534379 |
// modification, are permitted provided that the following conditions are met:
|
|
Packit |
534379 |
//
|
|
Packit |
534379 |
// * Redistributions of source code must retain the above copyright notice,
|
|
Packit |
534379 |
// this list of conditions and the following disclaimer.
|
|
Packit |
534379 |
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
Packit |
534379 |
// this list of conditions and the following disclaimer in the documentation
|
|
Packit |
534379 |
// and/or other materials provided with the distribution.
|
|
Packit |
534379 |
// * Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit |
534379 |
// may be used to endorse or promote products derived from this software
|
|
Packit |
534379 |
// without specific prior written permission.
|
|
Packit |
534379 |
//
|
|
Packit |
534379 |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit |
534379 |
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit |
534379 |
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
Packit |
534379 |
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
Packit |
534379 |
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
Packit |
534379 |
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
Packit |
534379 |
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
Packit |
534379 |
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
Packit |
534379 |
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
Packit |
534379 |
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
Packit |
534379 |
// POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @file metadatav1.h
|
|
Packit |
534379 |
* @brief GBS metadata version 1
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
* Defines the data types, parse function, and release function
|
|
Packit |
534379 |
* for version 1 of the GBS metadata.
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
|
|
Packit |
534379 |
#ifndef __OPAE_METADATAV1_H__
|
|
Packit |
534379 |
#define __OPAE_METADATAV1_H__
|
|
Packit |
534379 |
|
|
Packit |
534379 |
#include <json-c/json.h>
|
|
Packit |
534379 |
#include <opae/types.h>
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* Defines an AFU by its name and GUID.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
typedef struct _opae_metadata_accelerator_cluster_v1 {
|
|
Packit |
534379 |
int total_contexts;
|
|
Packit |
534379 |
char *name;
|
|
Packit |
534379 |
char *accelerator_type_uuid;
|
|
Packit |
534379 |
} opae_metadata_accelerator_cluster_v1;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* Details of required clock frequencies, power threshold,
|
|
Packit |
534379 |
* and Partial Reconfiguration interface.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
typedef struct _opae_metadata_afu_image_v1 {
|
|
Packit |
534379 |
double clock_frequency_high;
|
|
Packit |
534379 |
double clock_frequency_low;
|
|
Packit |
534379 |
double power;
|
|
Packit |
534379 |
char *interface_uuid;
|
|
Packit |
534379 |
int magic_no;
|
|
Packit |
534379 |
int num_clusters;
|
|
Packit |
534379 |
opae_metadata_accelerator_cluster_v1 *accelerator_clusters;
|
|
Packit |
534379 |
} opae_metadata_afu_image_v1;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* Metadata version (1), image details, and platform name.
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
typedef struct _opae_bitstream_metadata_v1 {
|
|
Packit |
534379 |
int version;
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 afu_image;
|
|
Packit |
534379 |
char *platform_name;
|
|
Packit |
534379 |
} opae_bitstream_metadata_v1;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
#ifdef __cplusplus
|
|
Packit |
534379 |
extern "C" {
|
|
Packit |
534379 |
#endif /* __cplusplus */
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* Parse a version 1 GBS metadata from its JSON object.
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
* @param[in] root The root of the JSON object as produced by
|
|
Packit |
534379 |
* libjson.
|
|
Packit |
534379 |
* @param[out] pr_interface_id The GUID for the Partial
|
|
Packit |
534379 |
* Reconfiguration interface required by the GBS.
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
* @returns An allocated and populated version 1 metadata
|
|
Packit |
534379 |
* object. NULL on failed memory allocation or invalid
|
|
Packit |
534379 |
* metadata format.
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
* @note Allocates memory that must be tracked and
|
|
Packit |
534379 |
* subsequently released by calling
|
|
Packit |
534379 |
* `opae_bitstream_release_metadata_v1`.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
opae_bitstream_metadata_v1 *
|
|
Packit |
534379 |
opae_bitstream_parse_metadata_v1(json_object *root,
|
|
Packit |
534379 |
fpga_guid pr_interface_id);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* Release a parsed metadata version 1 object.
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
* @param[in] md The metadata object to be released.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
void opae_bitstream_release_metadata_v1(opae_bitstream_metadata_v1 *md);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
#ifdef __cplusplus
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
#endif /* __cplusplus */
|
|
Packit |
534379 |
|
|
Packit |
534379 |
#endif /* __OPAE_METADATAV1_H__ */
|