summaryrefslogtreecommitdiff
path: root/gcell/include
diff options
context:
space:
mode:
authoreb2009-01-15 10:23:50 +0000
committereb2009-01-15 10:23:50 +0000
commit4b5cfa809a01a494c4f5e6b052414ed9b3d066cb (patch)
tree1524eb995c21cccb3d76f62ec0cc8bf9a319a54f /gcell/include
parentddd347cc96e38c3758dea53cb0d93391ea566a35 (diff)
downloadgnuradio-4b5cfa809a01a494c4f5e6b052414ed9b3d066cb.tar.gz
gnuradio-4b5cfa809a01a494c4f5e6b052414ed9b3d066cb.tar.bz2
gnuradio-4b5cfa809a01a494c4f5e6b052414ed9b3d066cb.zip
Merged eb/gcell-wip -r10213:10230 into the trunk. This reduces the
overhead of off-loading jobs, such that it is now feasible to off-load 50us jobs on the QS21 and 10us jobs on the PS3. See wiki:Gcell for performance graphs. There is still plenty of room for improvement. I'll be revisiting this in a week or so. git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10231 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'gcell/include')
-rw-r--r--gcell/include/gcell/gc_mbox.h7
-rw-r--r--gcell/include/gcell/spu/gc_jd_queue.h12
2 files changed, 13 insertions, 6 deletions
diff --git a/gcell/include/gcell/gc_mbox.h b/gcell/include/gcell/gc_mbox.h
index 1d577ff8f..9793401f1 100644
--- a/gcell/include/gcell/gc_mbox.h
+++ b/gcell/include/gcell/gc_mbox.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2007,2008 Free Software Foundation, Inc.
+ * Copyright 2007,2008,2009 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -41,12 +41,13 @@
#define OP_EXIT 0x0 // exit now
#define OP_GET_SPU_BUFSIZE 0x1
+#define OP_CHECK_QUEUE 0x2
// SPE to PPE (sent via SPE Write Outbound Interrupt Mailbox)
-#define OP_JOBS_DONE 0x2 // arg is 0 or 1, indicating which
+#define OP_JOBS_DONE 0x3 // arg is 0 or 1, indicating which
// gc_completion_info_t contains the info
-#define OP_SPU_BUFSIZE 0x3 // arg is max number of bytes
+#define OP_SPU_BUFSIZE 0x4 // arg is max number of bytes
#endif /* INCLUDED_GCELL_GC_MBOX_H */
diff --git a/gcell/include/gcell/spu/gc_jd_queue.h b/gcell/include/gcell/spu/gc_jd_queue.h
index ce1977c94..c2300478c 100644
--- a/gcell/include/gcell/spu/gc_jd_queue.h
+++ b/gcell/include/gcell/spu/gc_jd_queue.h
@@ -1,6 +1,6 @@
/* -*- c++ -*- */
/*
- * Copyright 2007 Free Software Foundation, Inc.
+ * Copyright 2007,2009 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
@@ -30,6 +30,12 @@
__GC_BEGIN_DECLS
+typedef enum {
+ GCQ_OK, // Got an item
+ GCQ_EMPTY, // Q is empty
+ GCQ_LOCKED, // Somebody else has the queue locked
+} gc_dequeue_status_t;
+
/*!
* \brief Remove and return item at head of queue.
*
@@ -40,10 +46,10 @@ __GC_BEGIN_DECLS
* \returns false if the queue is empty, otherwise returns true
* and sets \p item_ea and DMA's job descriptor into \p item
*
- * If return is false, we're holding a lock-line reservation that
+ * If return is not GCQ_OK, we're holding a lock-line reservation that
* covers the queue.
*/
-bool
+gc_dequeue_status_t
gc_jd_queue_dequeue(gc_eaddr_t q, gc_eaddr_t *item_ea,
int jd_tag, gc_job_desc_t *item);