blob: 21ad7043f39559c724e09f4a7dcedc3251e1ff96 [file] [log] [blame]
/*
* Copyright (C) 2020 Intel Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __IA_CSS_PSYS_PROGRAM_GROUP_MANIFEST_SIM_H
#define __IA_CSS_PSYS_PROGRAM_GROUP_MANIFEST_SIM_H
/*! \file */
/** @file ia_css_psys_program_group_manifest.sim.h
*
* Define the methods on the program group manifest object: Simulation only
*/
#include <ia_css_psys_manifest_types.h>
#include <type_support.h> /* uint8_t */
#include "ia_css_terminal_defs.h"
/*! Create a program group manifest object from specification
@param specification[in] specification (index)
@return NULL on error
*/
extern ia_css_program_group_manifest_t *ia_css_program_group_manifest_create(
const unsigned int specification);
/*! Destroy the program group manifest object
@param manifest[in] program group manifest
@return NULL
*/
extern ia_css_program_group_manifest_t *ia_css_program_group_manifest_destroy(
ia_css_program_group_manifest_t *manifest);
/*! Compute the size of storage required for allocating
* the program group (PG) manifest object
@param program_count[in] Number of programs in the PG
@param terminal_count[in] Number of terminals on the PG
@param program_needs_extension[in] Array[program count]
@param program_dependency_count[in] Array[program_count] with the PG
@param terminal_dependency_count[in] Array[program_count] with the
terminal dependencies
@param terminal_type[in] Array[terminal_count] with the
terminal type
@param cached_in_param_section_count[in] Number of parameter
in terminal sections
@param cached_out_param_section_count[in] Number of parameter
out terminal sections
@param sliced_param_section_count[in] Array[sliced_terminal_count]
with sections per
sliced in terminal
@param sliced_out_param_section_count[in] Array[sliced_terminal_count]
with sections per
sliced out terminal
@param spatial_param_section_count[in] Array[spatial_terminal_count]
with sections per
spatial terminal
@param fragment_param_section_count[in] Number of fragment parameter
sections of the
program init terminal,
@param kernel_fragment_seq_count[in] Number of
kernel_fragment_seq_count.
@param progctrlinit_load_section_counts[in] Number of progctrinit load
sections (size of array is program_count)
@param progctrlinit_connect_section_counts[in] Number of progctrinit connect
sections (size of array is program_count)
@return 0 on error
*/
size_t ia_css_sizeof_program_group_manifest(
const uint8_t program_count,
const uint8_t terminal_count,
const uint8_t *program_needs_extension,
const uint8_t *program_dependency_count,
const uint8_t *terminal_dependency_count,
const ia_css_terminal_type_t *terminal_type,
const uint16_t *cached_in_param_section_count,
const uint16_t *cached_out_param_section_count,
const uint16_t *spatial_param_section_count,
const uint16_t *fragment_param_section_count,
const uint16_t *sliced_param_section_count,
const uint16_t *sliced_out_param_section_count,
const uint16_t *kernel_fragment_seq_count,
const uint16_t *progctrlinit_load_section_counts,
const uint16_t *progctrlinit_connect_section_counts);
/*! Create (the storage for) the program group manifest object
@param program_count[in] Number of programs in the program group
@param terminal_count[in] Number of terminals on the program group
@param program_dependency_count[in] Array[program_count] with the
program dependencies
@param terminal_dependency_count[in] Array[program_count] with the
terminal dependencies
@param terminal_type[in] Array[terminal_count] with the
terminal type
@return NULL on error
*/
extern ia_css_program_group_manifest_t *ia_css_program_group_manifest_alloc(
const uint8_t program_count,
const uint8_t terminal_count,
const uint8_t *program_dependency_count,
const uint8_t *terminal_dependency_count,
const ia_css_terminal_type_t *terminal_type);
/*! Free (the storage of) the program group manifest object
@param manifest[in] program group manifest
@return NULL
*/
extern ia_css_program_group_manifest_t *ia_css_program_group_manifest_free(
ia_css_program_group_manifest_t *manifest);
#endif /* __IA_CSS_PSYS_PROGRAM_GROUP_MANIFEST_SIM_H */