GNU Radio 3.4.0 C++ API
gc_job_desc.h File Reference
Include dependency graph for gc_job_desc.h:
This graph shows which files directly or indirectly include this file:

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_tea_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 Documentation

#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 Documentation

union for passing "direct" argument

"direct" input or output arguments

Description of args passed in EA memory. These are DMA'd between EA and LS as specified.

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


Enumeration Type Documentation

final job status

Enumerator:
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 
enum gc_tag_t

Tag type of "direct" argument.

Enumerator:
GCT_S32 
GCT_U32 
GCT_S64 
GCT_U64 
GCT_FLOAT 
GCT_DOUBLE 
GCT_FLT_CMPLX 
GCT_DBL_CMPLX 
GCT_EADDR 

Function Documentation

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().


Variable Documentation

__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.