GNU Radio 3.3.0 C++ API
|
Go to the source code of this file.
Classes | |
union | gc_arg_union |
union for passing "direct" argument More... | |
struct | gc_job_direct_args |
"direct" input or output arguments More... | |
struct | gc_job_ea_arg |
Description of args passed in EA memory. These are DMA'd between EA and LS as specified. More... | |
struct | gc_job_ea_args |
struct | gc_job_desc |
"job description" that is DMA'd to/from the SPE. More... | |
Defines | |
#define | GCP_UNKNOWN_PROC ((gc_proc_id_t) -1) |
#define | MAX_ARGS_DIRECT 8 |
#define | MAX_ARGS_EA 8 |
#define | GCJD_DMA_GET 0x01 |
#define | GCJD_DMA_PUT 0x02 |
Typedefs | |
typedef union gc_arg_union | gc_arg_union_t |
union for passing "direct" argument | |
typedef struct gc_job_direct_args | gc_job_direct_args_t |
"direct" input or output arguments | |
typedef struct gc_job_ea_arg | gc_job_ea_arg_t |
Description of args passed in EA memory. These are DMA'd between EA and LS as specified. | |
typedef struct gc_job_ea_args | gc_job_ea_args_t |
typedef struct gc_job_desc | gc_job_desc_t |
"job description" that is DMA'd to/from the SPE. | |
typedef void(* | gc_spu_proc_t )(const gc_job_direct_args_t *input, gc_job_direct_args_t *output, const gc_job_ea_args_t *eaa) |
Enumerations | |
enum | gc_job_status_t { JS_OK, JS_SHUTTING_DOWN, JS_TOO_MANY_CLIENTS, JS_UNKNOWN_PROC, JS_BAD_DIRECTION, JS_BAD_EAH, JS_BAD_N_DIRECT, JS_BAD_N_EA, JS_ARGS_TOO_LONG, JS_BAD_JUJU, JS_BAD_JOB_DESC } |
final job status More... | |
enum | gc_tag_t { GCT_S32, GCT_U32, GCT_S64, GCT_U64, GCT_FLOAT, GCT_DOUBLE, GCT_FLT_CMPLX, GCT_DBL_CMPLX, GCT_EADDR } |
Tag type of "direct" argument. More... | |
Functions | |
static gc_job_desc_t * | ea_to_jdp (gc_eaddr_t ea) |
static gc_eaddr_t | jdp_to_ea (gc_job_desc_t *item) |
Variables | |
__GC_BEGIN_DECLS typedef uint32_t | gc_proc_id_t |
opaque ID that specifies which code to invoke on the SPE |
#define GCJD_DMA_GET 0x01 |
#define GCJD_DMA_PUT 0x02 |
#define GCP_UNKNOWN_PROC ((gc_proc_id_t) -1) |
#define MAX_ARGS_DIRECT 8 |
#define MAX_ARGS_EA 8 |
typedef union gc_arg_union gc_arg_union_t |
union for passing "direct" argument
typedef struct gc_job_direct_args gc_job_direct_args_t |
"direct" input or output arguments
typedef struct gc_job_ea_arg gc_job_ea_arg_t |
Description of args passed in EA memory. These are DMA'd between EA and LS as specified.
typedef struct gc_job_ea_args gc_job_ea_args_t |
typedef void(* gc_spu_proc_t)(const gc_job_direct_args_t *input, gc_job_direct_args_t *output, const gc_job_ea_args_t *eaa) |
type of procedure invoked on spu
enum gc_job_status_t |
enum gc_tag_t |
static gc_job_desc_t* ea_to_jdp | ( | gc_eaddr_t | ea | ) | [inline, static] |
References ea_to_ptr().
static gc_eaddr_t jdp_to_ea | ( | gc_job_desc_t * | item | ) | [inline, static] |
References ptr_to_ea().
__GC_BEGIN_DECLS typedef uint32_t gc_proc_id_t |
opaque ID that specifies which code to invoke on the SPE
This file contains the structures that are used to describe how to call "jobs" that execute on the SPEs. A "job" is a task, or piece of work that you want to run on an SPE.
There is code running in the SPE that knows how to interpret these job descriptions. Thus, in most cases, the overhead of invoking these is very low.
The whole "job idea" is SPE centric. At first pass, the PPE will be constructing jobs and enqueing them. However, there is nothing in the implementation that prohibits SPEs from creating their own jobs in the future. Also, there is nothing prohibiting SPE-to-SPE DMA's.
SPE's dequeue and "pull" jobs to themselves, do the work, then notify the entity that submitted the job.