FreeRTOS port on GAP8/RISC-V
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
gap8/pmsis/cluster/drivers/cluster_synchronisation/fc_to_cl_delegate.c File Reference

Macros

#define NB_CLUSTER
 
#define CL_MASTER_CORE_STACK_SIZE
 
#define CL_SLAVE_CORE_STACK_SIZE
 
#define PRINTF(...)
 

Functions

static void __cluster_start (struct pi_device *device)
 
static void __cluster_start_async (struct pi_device *device, pi_task_t *async_task)
 
static int __cluster_stop (struct pi_device *device)
 
static int __cluster_stop_async (struct pi_device *device, pi_task_t *async_task)
 
static int __cluster_has_task (struct cluster_driver_data *data)
 
static void __cluster_free_device_event_func (void *arg)
 
static void pi_push_cluster_task (struct cluster_driver_data *data, struct pi_cluster_task *task)
 
static void cl_pop_cluster_task (struct cluster_driver_data *data)
 
void cl_task_finish (void)
 
void cl_cluster_exec_loop (void)
 
static void cl_set_core_stack (void *arg)
 All cores set stack. More...
 
void cl_stack_init (struct pi_cluster_task *task)
 All cores do task init. Master core 0 do stacks initilization. More...
 
int pi_cluster_open (struct pi_device *device)
 open the cluster described by device with given conf More...
 
int pi_cluster_open_async (struct pi_device *device, pi_task_t *async_task)
 
int pi_cluster_close (struct pi_device *device)
 
int pi_cluster_close_async (struct pi_device *device, pi_task_t *async_task)
 
int pi_cluster_ioctl (struct pi_device *device, uint32_t func_id, void *arg)
 
int pi_cluster_ioctl_async (struct pi_device *device, uint32_t func_id, void *arg, pi_task_t *async_task)
 
static int __pi_send_task_to_cl (struct pi_device *device, struct pi_cluster_task *task)
 
int pi_cluster_send_task_to_cl (struct pi_device *device, struct pi_cluster_task *task)
 
int pi_cluster_send_task_to_cl_async (struct pi_device *device, struct pi_cluster_task *task, pi_task_t *fc_task)
 
void pi_cluster_wait_free (struct pi_device *device)
 
void pi_cluster_wait_free_async (struct pi_device *device, pi_task_t *async_task)
 
uint8_t pi_cluster_is_on (void)
 
void pi_cluster_conf_init (struct pi_cluster_conf *conf)
 

Variables

spinlock_t cluster_printf_spinlock
 
char __l1_preload_start
 
char __l1_preload_start_inL2
 
char __l1_preload_size
 
char __l1FcShared_start
 
char __l1FcShared_size
 
char __heapsram_start
 
char __heapsram_size
 
PI_L1 pi_cl_dma_cmd_t * fifo_first
 
PI_L1 pi_cl_dma_cmd_t * fifo_last
 
struct cluster_driver_data__per_cluster_data [NB_CLUSTER]
 
static struct cluster_driver_api __spec_cluster_api
 
static struct pi_device_api __cluster_api
 
static struct pi_cluster_conf __cluster_default_conf
 

Macro Definition Documentation

#define CL_MASTER_CORE_STACK_SIZE

Stack size for Cluster Master core, 2kB.

Referenced by __pi_send_task_to_cl().

#define CL_SLAVE_CORE_STACK_SIZE

Stack size for Cluster Slave cores, 1kB.

Referenced by __pi_send_task_to_cl().

#define NB_CLUSTER

Referenced by pi_cluster_is_on().

Function Documentation

static void __cluster_free_device_event_func ( void *  arg)
inlinestatic

Referenced by pi_cluster_close_async().

static int __cluster_has_task ( struct cluster_driver_data data)
inlinestatic
static void __cluster_start_async ( struct pi_device *  device,
pi_task_t async_task 
)
inlinestatic

Referenced by pi_cluster_open_async().

static int __cluster_stop ( struct pi_device *  device)
inlinestatic
static int __cluster_stop_async ( struct pi_device *  device,
pi_task_t async_task 
)
inlinestatic

Referenced by pi_cluster_close_async().

static void cl_pop_cluster_task ( struct cluster_driver_data data)
inlinestatic
static void cl_set_core_stack ( void *  arg)
static
Parameters
stacksPtrOverall stack pointer for all cores.
coreStackSizeEach core's stack size.
Note
.

References __native_core_id().

Referenced by cl_stack_init().

void cl_stack_init ( struct pi_cluster_task *  task)
Parameters
Note
.

References cl_set_core_stack(), hal_eu_mutex_init(), pi_cl_team_fork(), and PRINTF.

int pi_cluster_close ( struct pi_device *  device)
int pi_cluster_close_async ( struct pi_device *  device,
pi_task_t async_task 
)
void pi_cluster_conf_init ( struct pi_cluster_conf *  conf)
int pi_cluster_ioctl ( struct pi_device *  device,
uint32_t  func_id,
void *  arg 
)
int pi_cluster_ioctl_async ( struct pi_device *  device,
uint32_t  func_id,
void *  arg,
pi_task_t async_task 
)
uint8_t pi_cluster_is_on ( void  )

References cluster_is_on, and NB_CLUSTER.

Referenced by __attribute__().

int pi_cluster_open_async ( struct pi_device *  device,
pi_task_t async_task 
)
int pi_cluster_send_task_to_cl ( struct pi_device *  device,
struct pi_cluster_task *  task 
)
int pi_cluster_send_task_to_cl_async ( struct pi_device *  device,
struct pi_cluster_task *  task,
pi_task_t fc_task 
)
void pi_cluster_wait_free ( struct pi_device *  device)

References __cluster_has_task().

void pi_cluster_wait_free_async ( struct pi_device *  device,
pi_task_t async_task 
)
static void pi_push_cluster_task ( struct cluster_driver_data data,
struct pi_cluster_task *  task 
)
inlinestatic

Variable Documentation

struct pi_device_api __cluster_api
static
struct pi_cluster_conf __cluster_default_conf
static
char __heapsram_size

Referenced by pi_cluster_open().

char __heapsram_start

Referenced by pi_cluster_open().

char __l1_preload_size

Referenced by __cluster_start().

char __l1_preload_start

Referenced by __cluster_start().

char __l1_preload_start_inL2

Referenced by __cluster_start().

char __l1FcShared_size

Referenced by __cluster_start().

char __l1FcShared_start

Referenced by __cluster_start().

struct cluster_driver_data* __per_cluster_data[NB_CLUSTER]
struct cluster_driver_api __spec_cluster_api
static
spinlock_t cluster_printf_spinlock

Referenced by __cluster_start().

PI_L1 pi_cl_dma_cmd_t* fifo_first
PI_L1 pi_cl_dma_cmd_t* fifo_last