66 #ifndef TIVX_TARGET_H_ 67 #define TIVX_TARGET_H_ 74 #include <TI/tivx_config.h> 85 #define TIVX_TARGET_INST_MASK (0xFFu) 91 #define TIVX_TARGET_INST_SHIFT (0x0u) 100 #define TIVX_CPU_ID_MASK (0xFu) 106 #define TIVX_CPU_ID_SHIFT (0x8) 111 #define TIVX_TARGET_ID_MASK (((uint32_t)TIVX_CPU_ID_MASK << (uint32_t)TIVX_CPU_ID_SHIFT) | \ 112 ((uint32_t)TIVX_TARGET_INST_MASK << (uint32_t)TIVX_TARGET_INST_SHIFT)) 117 #define TIVX_TARGET_ID_SHIFT (TIVX_TARGET_INST_SHIFT) 127 #define TIVX_MAKE_TARGET_ID(cpu, target_inst) (((((uint32_t)(((uint32_t)cpu) & (uint32_t)TIVX_CPU_ID_MASK)) << (uint32_t)TIVX_CPU_ID_SHIFT) |(((uint32_t)(((uint32_t)target_inst)&(uint32_t)TIVX_TARGET_INST_MASK)) << (uint32_t)TIVX_TARGET_INST_SHIFT))) 135 #define TIVX_GET_CPU_ID(target) ((((uint32_t)(target) >> (uint32_t)TIVX_CPU_ID_SHIFT) & (uint32_t)TIVX_CPU_ID_MASK)) 143 #define TIVX_GET_TARGET_INST(target) ((uint16_t)(((uint16_t)(target) >> TIVX_TARGET_INST_SHIFT)) & TIVX_TARGET_INST_MASK) 149 #define TIVX_TARGET_ID_INVALID (0xFFFFFFFFU) 154 #define TIVX_CPU_ID_INVALID (0xFFFFFFFFu) 158 #define TIVX_TARGET_MAX_TASK_NAME (12u) 166 #define TIVX_TARGET_MAX_JOB_QUEUE_DEPTH (96u) 171 typedef enum _tivx_target_cmd_e {
193 typedef struct _tivx_target {
228 typedef struct _tivx_target_create_params
325 uint16_t prm_obj_desc_id[],
vx_bool *is_node_blocked);
333 uint16_t prm_obj_desc_id[]);
Target object internal state.
struct _tivx_target * tivx_target
Target Object.
void(* own_execute_user_kernel_f)(tivx_obj_desc_node_t *node_obj_desc, uint16_t prm_obj_desc_id[])
The pointer to the user kernel wrapper within the tiovx framework. This is only executable on the hos...
void ownTargetSetTimestamp(const tivx_obj_desc_node_t *node_obj_desc, tivx_obj_desc_t *obj_desc[])
Propagates time stamp of input parameters of a kernel to output parameters.
void ownTargetDeInit(void)
De-Init global state of target module.
void ownTargetNodeDescReleaseAllParameters(tivx_obj_desc_node_t *node_obj_desc, uint16_t prm_obj_desc_id[])
Release parameters that were previously acquired.
uint32_t task_stack_size
Task stack size, if 0, OS allocates stack with default size.
vx_enum ownTargetGetCpuId(vx_enum target_id)
Get CPU ID associated with given target ID.
#define TIVX_TARGET_MAX_TASK_NAME
Max size of target name string.
uint32_t task_priority
task priority for task associated with this target TIVX_TASK_PRI_HIGHEST is highest priority...
uint32_t task_core_affinity
If task runs on a SMP CPU then this value tells the affinity of task to a given core, Valid values are 0 .. max cores in the SMP CPU. when TIVX_TASK_AFFINITY_ANY is used OS decides the task affinity.
void(* own_target_cmd_desc_handler_f)(const tivx_obj_desc_cmd_t *cmd_obj_desc)
The pointer to the handler of a subset of cases that the target command handler needs to service on t...
void ownTargetSetDefaultCreateParams(tivx_target_create_params_t *params)
Used to set default target create parameters in parameter structure.
#define TIVX_TARGET_MAX_JOB_QUEUE_DEPTH
Max depth of queue associated with target.
Parameters that can be set during target creation.
Command to call a user callback, on node execution complete.
tivx_target_cmd_e
Command ID for commands that can be send to a target.
tivx_queue job_queue_handle
handle to job queue associated with this target
vx_bool targetExitRequest
Flag to request target to exit main so that it can be deleted.
Command to delete a node on target.
vx_status ownTargetQueueObjDesc(vx_enum target_id, uint16_t obj_desc_id)
Queue object descriptor to a given target.
vx_status ownTargetDelete(vx_enum target_id)
Delete a target object.
tivx_task_create_params_t task_params
Parameters of task associated with this target.
void ownRegisterFunctionsForHost(void)
Register Various functions within target files to be linked for host usage.
Parameters that can be set during task creation.
void ownTargetNodeDescAcquireAllParameters(tivx_obj_desc_node_t *node_obj_desc, uint16_t prm_obj_desc_id[], vx_bool *is_node_blocked)
Acquire parameters for node execution.
void(VX_CALLBACK * tivx_task_main_f)(void *app_var)
Entry point of task.
vx_enum target_id
ID of this target.
Command object descriptor.
void ownTargetNodeDescAcquireAllParametersForPipeup(tivx_obj_desc_node_t *node_obj_desc, uint16_t prm_obj_desc_id[])
Acquire parameters for node execution during pipeup phase.
void ownTargetInit(void)
Init global state of target module.
Command to create a node on target.
Command to inform host that a ref is consumed and is available for user dequeue.
tivx_task task_handle
Handle to underlying task associate with this target.
vx_status ownTargetCreate(vx_enum target_id, const tivx_target_create_params_t *params)
Create a target object and associate with given target ID.
vx_bool targetExitDone
Flag to indicate target exited its processing loop and is about to exit its main function.
void ownTargetTriggerNode(uint16_t node_obj_desc_id)
Trigger execution of a node obj desc.
Command to control a node on target.
tivx_task_main_f target_main
target main
uint8_t * task_stack_ptr
Pointer to task stack, if NULL then task stack is allcoated by OS and not supplied by user...