Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 6e7a2755bd78c9deedab199b86e675f3 > files > 3445

gnuradio-doc-3.2.2-9.fc14.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>GNU Radio 3.2.2 C++ API: gc_job_desc.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">GNU Radio 3.2.2 C++ API</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('gc__job__desc_8h.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<h1>gc_job_desc.h</h1>  </div>
</div>
<div class="contents">
<a href="gc__job__desc_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* -*- c -*- */</span>
<a name="l00002"></a>00002 <span class="comment">/*</span>
<a name="l00003"></a>00003 <span class="comment"> * Copyright 2007,2008 Free Software Foundation, Inc.</span>
<a name="l00004"></a>00004 <span class="comment"> * </span>
<a name="l00005"></a>00005 <span class="comment"> * This file is part of GNU Radio</span>
<a name="l00006"></a>00006 <span class="comment"> * </span>
<a name="l00007"></a>00007 <span class="comment"> * GNU Radio is free software; you can redistribute it and/or modify</span>
<a name="l00008"></a>00008 <span class="comment"> * it under the terms of the GNU General Public License as published by</span>
<a name="l00009"></a>00009 <span class="comment"> * the Free Software Foundation; either version 3, or (at your option)</span>
<a name="l00010"></a>00010 <span class="comment"> * any later version.</span>
<a name="l00011"></a>00011 <span class="comment"> * </span>
<a name="l00012"></a>00012 <span class="comment"> * GNU Radio is distributed in the hope that it will be useful,</span>
<a name="l00013"></a>00013 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00014"></a>00014 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<a name="l00015"></a>00015 <span class="comment"> * GNU General Public License for more details.</span>
<a name="l00016"></a>00016 <span class="comment"> * </span>
<a name="l00017"></a>00017 <span class="comment"> * You should have received a copy of the GNU General Public License along</span>
<a name="l00018"></a>00018 <span class="comment"> * with this program; if not, write to the Free Software Foundation, Inc.,</span>
<a name="l00019"></a>00019 <span class="comment"> * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</span>
<a name="l00020"></a>00020 <span class="comment"> */</span>
<a name="l00021"></a>00021 
<a name="l00022"></a>00022 <span class="preprocessor">#ifndef INCLUDED_GCELL_GC_JOB_DESC_H</span>
<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#define INCLUDED_GCELL_GC_JOB_DESC_H</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00025"></a>00025 <span class="comment">/*!</span>
<a name="l00026"></a>00026 <span class="comment"> * This file contains the structures that are used to describe how to</span>
<a name="l00027"></a>00027 <span class="comment"> * call &quot;jobs&quot; that execute on the SPEs.  A &quot;job&quot; is a task, or piece of</span>
<a name="l00028"></a>00028 <span class="comment"> * work that you want to run on an SPE.</span>
<a name="l00029"></a>00029 <span class="comment"> *</span>
<a name="l00030"></a>00030 <span class="comment"> * There is code running in the SPE that knows how to interpret</span>
<a name="l00031"></a>00031 <span class="comment"> * these job descriptions. Thus, in most cases, the overhead</span>
<a name="l00032"></a>00032 <span class="comment"> * of invoking these is very low.</span>
<a name="l00033"></a>00033 <span class="comment"> *</span>
<a name="l00034"></a>00034 <span class="comment"> * The whole &quot;job idea&quot; is SPE centric.  At first pass,</span>
<a name="l00035"></a>00035 <span class="comment"> * the PPE will be constructing jobs and enqueing them.</span>
<a name="l00036"></a>00036 <span class="comment"> * However, there is nothing in the implementation that</span>
<a name="l00037"></a>00037 <span class="comment"> * prohibits SPEs from creating their own jobs in the</span>
<a name="l00038"></a>00038 <span class="comment"> * future.  Also, there is nothing prohibiting SPE-to-SPE</span>
<a name="l00039"></a>00039 <span class="comment"> * DMA&#39;s.</span>
<a name="l00040"></a>00040 <span class="comment"> *</span>
<a name="l00041"></a>00041 <span class="comment"> * SPE&#39;s dequeue and &quot;pull&quot; jobs to themselves, do the work, then</span>
<a name="l00042"></a>00042 <span class="comment"> * notify the entity that submitted the job.</span>
<a name="l00043"></a>00043 <span class="comment"> */</span>
<a name="l00044"></a>00044 
<a name="l00045"></a>00045 <span class="preprocessor">#include &lt;gcell/gc_types.h&gt;</span>
<a name="l00046"></a>00046 <span class="preprocessor">#include &lt;gcell/gc_job_desc_private.h&gt;</span>
<a name="l00047"></a>00047 
<a name="l00048"></a>00048 <span class="comment">/*</span>
<a name="l00049"></a>00049 <span class="comment"> * This is C, not C++ code...</span>
<a name="l00050"></a>00050 <span class="comment"> *</span>
<a name="l00051"></a>00051 <span class="comment"> * ...and is used by both PPE and SPE code</span>
<a name="l00052"></a>00052 <span class="comment"> */</span>
<a name="l00053"></a>00053 <a class="code" href="gc__cdefs_8h.html#a04178ef457e19e868dc8ee7e9c368244">__GC_BEGIN_DECLS</a>
<a name="l00054"></a>00054 
<a name="l00055"></a>00055 <span class="comment"></span>
<a name="l00056"></a>00056 <span class="comment">//! opaque ID that specifies which code to invoke on the SPE</span>
<a name="l00057"></a><a class="code" href="gc__job__desc_8h.html#a26e60e5aaade61f7c333ee636940a658">00057</a> <span class="comment"></span><span class="keyword">typedef</span> uint32_t <a class="code" href="gc__job__desc_8h.html#a26e60e5aaade61f7c333ee636940a658" title="opaque ID that specifies which code to invoke on the SPE">gc_proc_id_t</a>;
<a name="l00058"></a><a class="code" href="gc__job__desc_8h.html#ac9691d35d75ad6252e743b2a98227528">00058</a> <span class="preprocessor">#define GCP_UNKNOWN_PROC ((gc_proc_id_t) -1)</span>
<a name="l00059"></a>00059 <span class="preprocessor"></span>
<a name="l00060"></a>00060 <span class="comment"></span>
<a name="l00061"></a>00061 <span class="comment">//! final job status</span>
<a name="l00062"></a><a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dd">00062</a> <span class="comment"></span><span class="keyword">typedef</span> <span class="keyword">enum</span> {
<a name="l00063"></a><a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dda46e9e4fcbd8fde2e6272212f534510d3">00063</a>   <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dda46e9e4fcbd8fde2e6272212f534510d3">JS_OK</a>,
<a name="l00064"></a><a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dda5758f9d18da6edb63fb22ff805948243">00064</a>   <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dda5758f9d18da6edb63fb22ff805948243">JS_SHUTTING_DOWN</a>,         <span class="comment">// job mananger is shutting down</span>
<a name="l00065"></a><a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0ddaa3360875947267cda5198fe81be27611">00065</a>   <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0ddaa3360875947267cda5198fe81be27611">JS_TOO_MANY_CLIENTS</a>,      <span class="comment">// too many client threads</span>
<a name="l00066"></a><a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0ddad46c5da7d80a020d07e6bdfc244664ec">00066</a>   <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0ddad46c5da7d80a020d07e6bdfc244664ec">JS_UNKNOWN_PROC</a>,          <span class="comment">// didn&#39;t recognize the procedure ID</span>
<a name="l00067"></a><a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dda0d6c7edda1caf7f52dacfc8982f79e31">00067</a>   <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dda0d6c7edda1caf7f52dacfc8982f79e31">JS_BAD_DIRECTION</a>,         <span class="comment">// EA arg has invalid direction</span>
<a name="l00068"></a><a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dda5ee9554e091a1b9c27cd0340c16a425d">00068</a>   <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dda5ee9554e091a1b9c27cd0340c16a425d">JS_BAD_EAH</a>,               <span class="comment">// not all EA args have the same high 32 address bits</span>
<a name="l00069"></a><a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0ddadccc98a7d6a0d85ce35406dd0cd183d7">00069</a>   <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0ddadccc98a7d6a0d85ce35406dd0cd183d7">JS_BAD_N_DIRECT</a>,          <span class="comment">// too many direct args</span>
<a name="l00070"></a><a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dda919040104b50ea5ba656f0c87fad4c25">00070</a>   <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dda919040104b50ea5ba656f0c87fad4c25">JS_BAD_N_EA</a>,              <span class="comment">// too many EA args</span>
<a name="l00071"></a><a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0ddac93c2b021512129739b937fe8de44e6b">00071</a>   <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0ddac93c2b021512129739b937fe8de44e6b">JS_ARGS_TOO_LONG</a>,         <span class="comment">// total length of EA args exceeds limit</span>
<a name="l00072"></a><a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0ddaf8d86aa1f1134fa3dc5a37d54022b391">00072</a>   <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0ddaf8d86aa1f1134fa3dc5a37d54022b391">JS_BAD_JUJU</a>,              <span class="comment">// misc problem: you&#39;re having a bad day</span>
<a name="l00073"></a><a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dda8351a496808096c317e3123822441e9e">00073</a>   <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dda8351a496808096c317e3123822441e9e">JS_BAD_JOB_DESC</a>,          <span class="comment">// gc_job_desc was not allocated using mgr-&gt;alloc_job_desc()</span>
<a name="l00074"></a>00074 
<a name="l00075"></a>00075 } <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dd" title="final job status">gc_job_status_t</a>;
<a name="l00076"></a>00076 
<a name="l00077"></a><a class="code" href="gc__job__desc_8h.html#a57449c575a843bba1bad1cd579a7b47f">00077</a> <span class="preprocessor">#define MAX_ARGS_DIRECT  8  // maximum number of args passed using &quot;direct&quot; method</span>
<a name="l00078"></a><a class="code" href="gc__job__desc_8h.html#ae881c2b9d3fc24f7733641da2bdd9d5b">00078</a> <span class="preprocessor"></span><span class="preprocessor">#define MAX_ARGS_EA      8  // maximum number of args passed via EA memory (dma)</span>
<a name="l00079"></a>00079 <span class="preprocessor"></span>
<a name="l00080"></a>00080 <span class="comment">/*</span>
<a name="l00081"></a>00081 <span class="comment"> * We support two classes of arguments,</span>
<a name="l00082"></a>00082 <span class="comment"> *   &quot;direct&quot;, which are contained in the gc_job_desc_args and</span>
<a name="l00083"></a>00083 <span class="comment"> *   &quot;EA&quot;, which are copied in/out according to info in gc_job_desc_args</span>
<a name="l00084"></a>00084 <span class="comment"> */</span>
<a name="l00085"></a>00085 <span class="comment"></span>
<a name="l00086"></a>00086 <span class="comment">/*!</span>
<a name="l00087"></a>00087 <span class="comment"> * \brief Tag type of &quot;direct&quot; argument</span>
<a name="l00088"></a>00088 <span class="comment"> */</span>
<a name="l00089"></a><a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33">00089</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> {
<a name="l00090"></a><a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a55577f0c3ce2b2c6edfedf2a091ca552">00090</a>   <a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a55577f0c3ce2b2c6edfedf2a091ca552">GCT_S32</a>,
<a name="l00091"></a><a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a0ae612722d4392f72f4d81d47623d48f">00091</a>   <a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a0ae612722d4392f72f4d81d47623d48f">GCT_U32</a>,
<a name="l00092"></a><a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33ab1ff5e53f20880004b0977e31dc3c4a8">00092</a>   <a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33ab1ff5e53f20880004b0977e31dc3c4a8">GCT_S64</a>,
<a name="l00093"></a><a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33adab91f391117f398d92adf15ff13e9f7">00093</a>   <a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33adab91f391117f398d92adf15ff13e9f7">GCT_U64</a>,
<a name="l00094"></a><a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a85530d44eb1b9c880b19ddf3ca66a852">00094</a>   <a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a85530d44eb1b9c880b19ddf3ca66a852">GCT_FLOAT</a>,
<a name="l00095"></a><a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a4a50a0a0156bffdcc328abcedf809a6f">00095</a>   <a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a4a50a0a0156bffdcc328abcedf809a6f">GCT_DOUBLE</a>,
<a name="l00096"></a><a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a613689bdf1213f5be4e7fd6af1882a91">00096</a>   <a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a613689bdf1213f5be4e7fd6af1882a91">GCT_FLT_CMPLX</a>,
<a name="l00097"></a><a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a7f352afe1992b3dc247a45ab9175a0b0">00097</a>   <a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a7f352afe1992b3dc247a45ab9175a0b0">GCT_DBL_CMPLX</a>,
<a name="l00098"></a><a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a0c4da6520981fba79811046a721e52f4">00098</a>   <a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33a0c4da6520981fba79811046a721e52f4">GCT_EADDR</a>,
<a name="l00099"></a>00099 
<a name="l00100"></a>00100 } <a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33" title="Tag type of &amp;quot;direct&amp;quot; argument.">gc_tag_t</a>;
<a name="l00101"></a>00101 
<a name="l00102"></a>00102 <span class="comment"></span>
<a name="l00103"></a>00103 <span class="comment">/*!</span>
<a name="l00104"></a>00104 <span class="comment"> * \brief union for passing &quot;direct&quot; argument</span>
<a name="l00105"></a>00105 <span class="comment"> */</span>
<a name="l00106"></a><a class="code" href="uniongc__arg__union.html">00106</a> <span class="keyword">typedef</span> <span class="keyword">union </span><a class="code" href="uniongc__arg__union.html" title="union for passing &amp;quot;direct&amp;quot; argument">gc_arg_union</a>
<a name="l00107"></a>00107 {
<a name="l00108"></a><a class="code" href="uniongc__arg__union.html#a6e552e4185402ed56a9df36407a1efe2">00108</a>   int32_t        <a class="code" href="uniongc__arg__union.html#a6e552e4185402ed56a9df36407a1efe2">s32</a>;
<a name="l00109"></a><a class="code" href="uniongc__arg__union.html#a98cd9b4387b4bc3fc6928546f0ec98c3">00109</a>   uint32_t       <a class="code" href="uniongc__arg__union.html#a98cd9b4387b4bc3fc6928546f0ec98c3">u32</a>;
<a name="l00110"></a><a class="code" href="uniongc__arg__union.html#a470acb9b1f2f81058672c5f023f696b2">00110</a>   int64_t        <a class="code" href="uniongc__arg__union.html#a470acb9b1f2f81058672c5f023f696b2">s64</a>;
<a name="l00111"></a><a class="code" href="uniongc__arg__union.html#ac23cf5b0a4f56f3d06501f0404a576e9">00111</a>   uint64_t       <a class="code" href="uniongc__arg__union.html#ac23cf5b0a4f56f3d06501f0404a576e9">u64</a>;
<a name="l00112"></a><a class="code" href="uniongc__arg__union.html#aa18b3111dbc7a15ef3c63791b61567d4">00112</a>   <span class="keywordtype">float</span>          <a class="code" href="uniongc__arg__union.html#aa18b3111dbc7a15ef3c63791b61567d4">f</a>;
<a name="l00113"></a><a class="code" href="uniongc__arg__union.html#a1e4f92787f3c456bf0468bed5c8311fd">00113</a>   <span class="keywordtype">double</span>         <a class="code" href="uniongc__arg__union.html#a1e4f92787f3c456bf0468bed5c8311fd">d</a>;
<a name="l00114"></a>00114   <span class="comment">//float complex  cf;  //  64-bits (C99)</span>
<a name="l00115"></a>00115   <span class="comment">//double complex cd;  // 128-bits (C99)</span>
<a name="l00116"></a><a class="code" href="uniongc__arg__union.html#aebb45f606bfa521c9279bd1fa46ffbbf">00116</a>   <a class="code" href="gc__types_8h.html#affc43a8e5ab8551e7361f8ce8521c34d" title="64-bit integer type representing an effective address (EA)">gc_eaddr_t</a>     <a class="code" href="uniongc__arg__union.html#aebb45f606bfa521c9279bd1fa46ffbbf">ea</a>;    <span class="comment">//  64-bits</span>
<a name="l00117"></a>00117 } <a class="code" href="compiler_8h.html#a94cab5e72a2fe7556ae05ea0f18f7147" title="Compiler specific hackery. These are for GCC.">_AL8</a> <a class="code" href="gc__job__desc_8h.html#a04e8c44079ddd5ef3dae69fa142a86e8" title="union for passing &amp;quot;direct&amp;quot; argument">gc_arg_union_t</a>;
<a name="l00118"></a>00118 
<a name="l00119"></a>00119 <span class="comment"></span>
<a name="l00120"></a>00120 <span class="comment">/*!</span>
<a name="l00121"></a>00121 <span class="comment"> * \brief &quot;direct&quot; input or output arguments</span>
<a name="l00122"></a>00122 <span class="comment"> */</span>
<a name="l00123"></a><a class="code" href="structgc__job__direct__args.html">00123</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structgc__job__direct__args.html" title="&amp;quot;direct&amp;quot; input or output arguments">gc_job_direct_args</a>
<a name="l00124"></a>00124 {
<a name="l00125"></a><a class="code" href="structgc__job__direct__args.html#a544a3562a4c05cae2ff9c267b1a8a0d2">00125</a>   uint32_t        <a class="code" href="structgc__job__direct__args.html#a544a3562a4c05cae2ff9c267b1a8a0d2">nargs</a>;                        <span class="comment">// # of &quot;direct&quot; args</span>
<a name="l00126"></a><a class="code" href="structgc__job__direct__args.html#ab136d4195d97c70e51d9f92609c27729">00126</a>   <a class="code" href="gc__job__desc_8h.html#ad58eccafa48c058796dc4035f2c81c33" title="Tag type of &amp;quot;direct&amp;quot; argument.">gc_tag_t</a>        tag[<a class="code" href="gc__job__desc_8h.html#a57449c575a843bba1bad1cd579a7b47f">MAX_ARGS_DIRECT</a>] <a class="code" href="structgc__job__direct__args.html#ab136d4195d97c70e51d9f92609c27729">_AL16</a>;   <span class="comment">// type of direct arg[i]</span>
<a name="l00127"></a><a class="code" href="structgc__job__direct__args.html#a6be28c380bd049491f23cda01be3dab7">00127</a>   <a class="code" href="uniongc__arg__union.html" title="union for passing &amp;quot;direct&amp;quot; argument">gc_arg_union_t</a>  arg[<a class="code" href="gc__job__desc_8h.html#a57449c575a843bba1bad1cd579a7b47f">MAX_ARGS_DIRECT</a>] <a class="code" href="structgc__job__direct__args.html#a6be28c380bd049491f23cda01be3dab7">_AL16</a>;   <span class="comment">// direct argument values</span>
<a name="l00128"></a>00128 
<a name="l00129"></a>00129 } <a class="code" href="compiler_8h.html#aa4ac35ef37caf2e4ed93e8ae31384c70">_AL16</a> <a class="code" href="gc__job__desc_8h.html#ac4519377e30e62722a93728f41e967ca" title="&amp;quot;direct&amp;quot; input or output arguments">gc_job_direct_args_t</a>;
<a name="l00130"></a>00130 
<a name="l00131"></a>00131 
<a name="l00132"></a>00132 <span class="comment">// specifies direction for args passed in EA memory</span>
<a name="l00133"></a>00133 
<a name="l00134"></a><a class="code" href="gc__job__desc_8h.html#ab6fdccbe3e8f3bc73ef8c1ee1f9b8d93">00134</a> <span class="preprocessor">#define GCJD_DMA_GET            0x01            // in to SPE</span>
<a name="l00135"></a><a class="code" href="gc__job__desc_8h.html#aa6e1dbacdaa190dc4c67e16e13008b18">00135</a> <span class="preprocessor"></span><span class="preprocessor">#define GCJD_DMA_PUT            0x02            // out from SPE</span>
<a name="l00136"></a>00136 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00137"></a>00137 <span class="comment">/*!</span>
<a name="l00138"></a>00138 <span class="comment"> * \brief Description of args passed in EA memory.</span>
<a name="l00139"></a>00139 <span class="comment"> * These are DMA&#39;d between EA and LS as specified.</span>
<a name="l00140"></a>00140 <span class="comment"> */</span>
<a name="l00141"></a><a class="code" href="structgc__job__ea__arg.html">00141</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structgc__job__ea__arg.html" title="Description of args passed in EA memory. These are DMA&amp;#39;d between EA and LS as specified...">gc_job_ea_arg</a> {<span class="comment"></span>
<a name="l00142"></a>00142 <span class="comment">  //! EA address of buffer</span>
<a name="l00143"></a><a class="code" href="structgc__job__ea__arg.html#a2958336c594be252769b0293e2c34f28">00143</a> <span class="comment"></span>  <a class="code" href="gc__types_8h.html#affc43a8e5ab8551e7361f8ce8521c34d" title="64-bit integer type representing an effective address (EA)">gc_eaddr_t</a>     <a class="code" href="structgc__job__ea__arg.html#a2958336c594be252769b0293e2c34f28" title="EA address of buffer.">ea_addr</a>;       
<a name="l00144"></a>00144 <span class="comment"></span>
<a name="l00145"></a>00145 <span class="comment">  //! GC_JD_DMA_* get arg or put arg</span>
<a name="l00146"></a><a class="code" href="structgc__job__ea__arg.html#a03b1de9649638f97cb0a95cc4d50c6d5">00146</a> <span class="comment"></span>  uint32_t       <a class="code" href="structgc__job__ea__arg.html#a03b1de9649638f97cb0a95cc4d50c6d5" title="GC_JD_DMA_* get arg or put arg.">direction</a>;
<a name="l00147"></a>00147 <span class="comment"></span>
<a name="l00148"></a>00148 <span class="comment">  //! number of bytes to get</span>
<a name="l00149"></a><a class="code" href="structgc__job__ea__arg.html#ad01c1d6e6ac154da2c7771841e12bffb">00149</a> <span class="comment"></span>  uint32_t       <a class="code" href="structgc__job__ea__arg.html#ad01c1d6e6ac154da2c7771841e12bffb" title="number of bytes to get">get_size</a>;         
<a name="l00150"></a>00150 <span class="comment"></span>
<a name="l00151"></a>00151 <span class="comment">  //! number of bytes to put</span>
<a name="l00152"></a><a class="code" href="structgc__job__ea__arg.html#a086b9e8a2b7e88be593cfcf2841b1b7e">00152</a> <span class="comment"></span>  uint32_t       <a class="code" href="structgc__job__ea__arg.html#a086b9e8a2b7e88be593cfcf2841b1b7e" title="number of bytes to put">put_size</a>;
<a name="l00153"></a>00153 
<a name="l00154"></a>00154 <span class="preprocessor">#if defined(__SPU__)</span>
<a name="l00155"></a>00155 <span class="preprocessor"></span><span class="comment">  //! local store address (filled in by SPU runtime)</span>
<a name="l00156"></a>00156 <span class="comment"></span>  <span class="keywordtype">void</span>          *ls_addr;
<a name="l00157"></a>00157   uint32_t       <a class="code" href="structgc__job__ea__arg.html#acd54126935307eae7956748978fca133">_pad</a>[2];
<a name="l00158"></a>00158 <span class="preprocessor">#else</span>
<a name="l00159"></a><a class="code" href="structgc__job__ea__arg.html#acd54126935307eae7956748978fca133">00159</a> <span class="preprocessor"></span>  uint32_t       <a class="code" href="structgc__job__ea__arg.html#acd54126935307eae7956748978fca133">_pad</a>[3];
<a name="l00160"></a>00160 <span class="preprocessor">#endif</span>
<a name="l00161"></a>00161 <span class="preprocessor"></span>
<a name="l00162"></a>00162 } <a class="code" href="compiler_8h.html#aa4ac35ef37caf2e4ed93e8ae31384c70">_AL16</a> <a class="code" href="gc__job__desc_8h.html#a3f24f7b228c882bda1fca164f2820006" title="Description of args passed in EA memory. These are DMA&amp;#39;d between EA and LS as specified...">gc_job_ea_arg_t</a>;
<a name="l00163"></a>00163 
<a name="l00164"></a>00164 
<a name="l00165"></a><a class="code" href="structgc__job__ea__args.html">00165</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structgc__job__ea__args.html">gc_job_ea_args</a> {
<a name="l00166"></a><a class="code" href="structgc__job__ea__args.html#a79ee1de5d9a9c0db5095b604c74c14c0">00166</a>   uint32_t              <a class="code" href="structgc__job__ea__args.html#a79ee1de5d9a9c0db5095b604c74c14c0">nargs</a>;
<a name="l00167"></a><a class="code" href="structgc__job__ea__args.html#a45dc174c66c66ae275deebc48500bbd1">00167</a>   <a class="code" href="structgc__job__ea__arg.html" title="Description of args passed in EA memory. These are DMA&amp;#39;d between EA and LS as specified...">gc_job_ea_arg_t</a>       <a class="code" href="structgc__job__ea__args.html#a45dc174c66c66ae275deebc48500bbd1">arg</a>[<a class="code" href="gc__job__desc_8h.html#ae881c2b9d3fc24f7733641da2bdd9d5b">MAX_ARGS_EA</a>];
<a name="l00168"></a>00168 
<a name="l00169"></a>00169 } <a class="code" href="compiler_8h.html#aa4ac35ef37caf2e4ed93e8ae31384c70">_AL16</a> <a class="code" href="gc__job__desc_8h.html#aaf241ad9e3f4fabafcbecbbea760298a">gc_job_ea_args_t</a>;
<a name="l00170"></a>00170 
<a name="l00171"></a>00171 <span class="comment"></span>
<a name="l00172"></a>00172 <span class="comment">/*!</span>
<a name="l00173"></a>00173 <span class="comment"> * \brief &quot;job description&quot; that is DMA&#39;d to/from the SPE.</span>
<a name="l00174"></a>00174 <span class="comment"> * \ingroup gcell</span>
<a name="l00175"></a>00175 <span class="comment"> */</span>
<a name="l00176"></a><a class="code" href="structgc__job__desc.html">00176</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structgc__job__desc.html" title="&amp;quot;job description&amp;quot; that is DMA&amp;#39;d to/from the SPE.">gc_job_desc</a>
<a name="l00177"></a>00177 {
<a name="l00178"></a><a class="code" href="structgc__job__desc.html#a925467219251296fd59116da9300eb84">00178</a>   <a class="code" href="structgc__job__desc__private.html" title="Implementation details we&amp;#39;d like to hide from the user.">gc_job_desc_private_t</a> <a class="code" href="structgc__job__desc.html#a925467219251296fd59116da9300eb84">sys</a>;      <span class="comment">// internals</span>
<a name="l00179"></a><a class="code" href="structgc__job__desc.html#a7039a8743552d912aaa0a8e74abe3ee4">00179</a>   <a class="code" href="gc__job__desc_8h.html#a8e110a97291b439c37ed61b0931bb0dd" title="final job status">gc_job_status_t</a>       <a class="code" href="structgc__job__desc.html#a7039a8743552d912aaa0a8e74abe3ee4">status</a>;   <span class="comment">// what happened (output)</span>
<a name="l00180"></a><a class="code" href="structgc__job__desc.html#ab2e278f4644096258968a75826bc0f83">00180</a>   <a class="code" href="gc__job__desc_8h.html#a26e60e5aaade61f7c333ee636940a658" title="opaque ID that specifies which code to invoke on the SPE">gc_proc_id_t</a>          <a class="code" href="structgc__job__desc.html#ab2e278f4644096258968a75826bc0f83">proc_id</a>;  <span class="comment">// specifies which procedure to run</span>
<a name="l00181"></a><a class="code" href="structgc__job__desc.html#a0f1f36bc7ecfe770984dcfb79eb5cb05">00181</a>   <a class="code" href="structgc__job__direct__args.html" title="&amp;quot;direct&amp;quot; input or output arguments">gc_job_direct_args_t</a>  <a class="code" href="structgc__job__desc.html#a0f1f36bc7ecfe770984dcfb79eb5cb05">input</a>;    <span class="comment">// direct args to SPE</span>
<a name="l00182"></a><a class="code" href="structgc__job__desc.html#a6fab02c245449e0bda6a2e0f0ec7897a">00182</a>   <a class="code" href="structgc__job__direct__args.html" title="&amp;quot;direct&amp;quot; input or output arguments">gc_job_direct_args_t</a>  <a class="code" href="structgc__job__desc.html#a6fab02c245449e0bda6a2e0f0ec7897a">output</a>;   <span class="comment">// direct args from SPE</span>
<a name="l00183"></a><a class="code" href="structgc__job__desc.html#a7ddae10aa17b89280ce7367e8b30bd14">00183</a>   <a class="code" href="structgc__job__ea__args.html">gc_job_ea_args_t</a>      <a class="code" href="structgc__job__desc.html#a7ddae10aa17b89280ce7367e8b30bd14">eaa</a>;      <span class="comment">// args passed via EA memory</span>
<a name="l00184"></a>00184 
<a name="l00185"></a>00185 } <a class="code" href="compiler_8h.html#af01a07803c08d8acefc05442a16416cb">_AL128</a> <a class="code" href="group__gcell.html#ga1437283a479e08d5d674007709805657" title="&amp;quot;job description&amp;quot; that is DMA&amp;#39;d to/from the SPE.">gc_job_desc_t</a>;
<a name="l00186"></a>00186 
<a name="l00187"></a>00187 <span class="comment"></span>
<a name="l00188"></a>00188 <span class="comment">/*!</span>
<a name="l00189"></a>00189 <span class="comment"> * type of procedure invoked on spu</span>
<a name="l00190"></a>00190 <span class="comment"> */</span>
<a name="l00191"></a><a class="code" href="gc__job__desc_8h.html#a9bae59106d2eac79cd279a1c5ac3f189">00191</a> <span class="keyword">typedef</span> void (*<a class="code" href="gc__job__desc_8h.html#a9bae59106d2eac79cd279a1c5ac3f189">gc_spu_proc_t</a>)(<span class="keyword">const</span> <a class="code" href="structgc__job__direct__args.html" title="&amp;quot;direct&amp;quot; input or output arguments">gc_job_direct_args_t</a> *input,
<a name="l00192"></a>00192                               <a class="code" href="structgc__job__direct__args.html" title="&amp;quot;direct&amp;quot; input or output arguments">gc_job_direct_args_t</a> *output,
<a name="l00193"></a>00193                               <span class="keyword">const</span> <a class="code" href="structgc__job__ea__args.html">gc_job_ea_args_t</a> *eaa);
<a name="l00194"></a>00194 
<a name="l00195"></a>00195 <span class="preprocessor">#if !defined(__SPU__)</span>
<a name="l00196"></a>00196 <span class="preprocessor"></span>
<a name="l00197"></a>00197 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="structgc__job__desc.html" title="&amp;quot;job description&amp;quot; that is DMA&amp;#39;d to/from the SPE.">gc_job_desc_t</a> *
<a name="l00198"></a><a class="code" href="gc__job__desc_8h.html#a11df2c8a4aa3d44873b1a02536df8890">00198</a> <a class="code" href="gc__job__desc_8h.html#a11df2c8a4aa3d44873b1a02536df8890">ea_to_jdp</a>(<a class="code" href="gc__types_8h.html#affc43a8e5ab8551e7361f8ce8521c34d" title="64-bit integer type representing an effective address (EA)">gc_eaddr_t</a> ea)
<a name="l00199"></a>00199 {
<a name="l00200"></a>00200   <span class="keywordflow">return</span> (<a class="code" href="structgc__job__desc.html" title="&amp;quot;job description&amp;quot; that is DMA&amp;#39;d to/from the SPE.">gc_job_desc_t</a> *) <a class="code" href="gc__types_8h.html#ae47a2086c488bf070bc37074386c6690">ea_to_ptr</a>(ea);
<a name="l00201"></a>00201 }
<a name="l00202"></a>00202 
<a name="l00203"></a>00203 <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="gc__types_8h.html#affc43a8e5ab8551e7361f8ce8521c34d" title="64-bit integer type representing an effective address (EA)">gc_eaddr_t</a>
<a name="l00204"></a><a class="code" href="gc__job__desc_8h.html#a19ce22e388fa08f86b57db98ef854ac6">00204</a> <a class="code" href="gc__job__desc_8h.html#a19ce22e388fa08f86b57db98ef854ac6">jdp_to_ea</a>(<a class="code" href="structgc__job__desc.html" title="&amp;quot;job description&amp;quot; that is DMA&amp;#39;d to/from the SPE.">gc_job_desc_t</a> *item)
<a name="l00205"></a>00205 {
<a name="l00206"></a>00206   <span class="keywordflow">return</span> <a class="code" href="gc__types_8h.html#aa8742b54a07724a64b3a4f84163ec7a0">ptr_to_ea</a>(item);
<a name="l00207"></a>00207 }
<a name="l00208"></a>00208 
<a name="l00209"></a>00209 <span class="preprocessor">#endif</span>
<a name="l00210"></a>00210 <span class="preprocessor"></span>
<a name="l00211"></a>00211 
<a name="l00212"></a>00212 <a class="code" href="gc__cdefs_8h.html#a9bf3afc2f6e1c1d8ebe9b237b7ab7b05">__GC_END_DECLS</a>
<a name="l00213"></a>00213 
<a name="l00214"></a>00214 <span class="preprocessor">#endif </span><span class="comment">/* INCLUDED_GCELL_GC_JOB_DESC_H */</span>
</pre></div></div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="gc__job__desc_8h.html">gc_job_desc.h</a>      </li>
      <li class="footer">Generated on Thu Feb 17 2011 for GNU Radio 3.2.2 C++ API by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </li>
    </ul>
  </div>

</body>
</html>