[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r8161 - in gnuradio/branches/developers/eb/gcell-wip/g
From: |
eb |
Subject: |
[Commit-gnuradio] r8161 - in gnuradio/branches/developers/eb/gcell-wip/gcell/src: apps lib/runtime |
Date: |
Tue, 8 Apr 2008 16:35:43 -0600 (MDT) |
Author: eb
Date: 2008-04-08 16:35:42 -0600 (Tue, 08 Apr 2008)
New Revision: 8161
Modified:
gnuradio/branches/developers/eb/gcell-wip/gcell/src/apps/benchmark_dma.cc
gnuradio/branches/developers/eb/gcell-wip/gcell/src/apps/benchmark_nop.cc
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/gc_job_manager.cc
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/gc_job_manager.h
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/gc_job_manager_impl.cc
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/qa_job_manager.cc
Log:
opts.program_handle is now a boost::shared_ptr
Modified:
gnuradio/branches/developers/eb/gcell-wip/gcell/src/apps/benchmark_dma.cc
===================================================================
--- gnuradio/branches/developers/eb/gcell-wip/gcell/src/apps/benchmark_dma.cc
2008-04-08 21:56:15 UTC (rev 8160)
+++ gnuradio/branches/developers/eb/gcell-wip/gcell/src/apps/benchmark_dma.cc
2008-04-08 22:35:42 UTC (rev 8161)
@@ -121,7 +121,7 @@
}
gc_jm_options opts;
- opts.program_handle = &benchmark_procs;
+ opts.program_handle = gc_program_handle_from_address(&benchmark_procs);
opts.nspes = nspes;
//opts.enable_logging = true;
//opts.log2_nlog_entries = 13;
Modified:
gnuradio/branches/developers/eb/gcell-wip/gcell/src/apps/benchmark_nop.cc
===================================================================
--- gnuradio/branches/developers/eb/gcell-wip/gcell/src/apps/benchmark_nop.cc
2008-04-08 21:56:15 UTC (rev 8160)
+++ gnuradio/branches/developers/eb/gcell-wip/gcell/src/apps/benchmark_nop.cc
2008-04-08 22:35:42 UTC (rev 8161)
@@ -57,7 +57,7 @@
bool done[NJDS];
gc_jm_options opts;
- opts.program_handle = &benchmark_procs;
+ opts.program_handle = gc_program_handle_from_address(&benchmark_procs);
opts.nspes = nspes;
opts.gang_schedule = true;
gc_job_manager_sptr mgr = gc_make_job_manager(&opts);
Modified:
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/gc_job_manager.cc
===================================================================
---
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/gc_job_manager.cc
2008-04-08 21:56:15 UTC (rev 8160)
+++
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/gc_job_manager.cc
2008-04-08 22:35:42 UTC (rev 8161)
@@ -52,3 +52,37 @@
{
return 0;
}
+
+// custom deleter
+class spe_program_handle_deleter {
+public:
+ void operator()(spe_program_handle_t *program) {
+ if (program){
+ int r = spe_image_close(program);
+ if (r != 0){
+ perror("spe_image_close");
+ }
+ }
+ }
+};
+
+// nop custom deleter
+class nop_spe_program_handle_deleter {
+public:
+ void operator()(spe_program_handle_t *program) {
+ }
+};
+
+spe_program_handle_sptr
+gc_program_handle_from_filename(const std::string &filename)
+{
+ return spe_program_handle_sptr(spe_image_open(filename.c_str()),
+ spe_program_handle_deleter());
+}
+
+
+spe_program_handle_sptr
+gc_program_handle_from_address(spe_program_handle_t *handle)
+{
+ return spe_program_handle_sptr(handle, nop_spe_program_handle_deleter());
+}
Modified:
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/gc_job_manager.h
===================================================================
---
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/gc_job_manager.h
2008-04-08 21:56:15 UTC (rev 8160)
+++
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/gc_job_manager.h
2008-04-08 22:35:42 UTC (rev 8161)
@@ -31,12 +31,38 @@
class gc_job_manager;
typedef boost::shared_ptr<gc_job_manager> gc_job_manager_sptr;
+typedef boost::shared_ptr<spe_program_handle_t> spe_program_handle_sptr;
-enum gc_wait_mode {
- GC_WAIT_ANY,
- GC_WAIT_ALL,
-};
+/*!
+ * \brief Return a boost::shared_ptr to an spe_program_handle_t
+ *
+ * \param filename is the name of the SPE ELF executable to open.
+ *
+ * Calls spe_image_open to open the file. If successful returns a
+ * boost::shared_ptr that will call spe_image_close when it's time to
+ * free the object.
+ *
+ * Returns the equivalent of the NULL pointer if the file cannot be
+ * opened, or if it's not an SPE ELF object file.
+ *
+ * \sa gc_program_handle_from_address
+ */
+spe_program_handle_sptr
+gc_program_handle_from_filename(const std::string &filename);
+/*!
+ * \brief Return a boost::shared_ptr to an spe_program_handle_t
+ *
+ * \param handle is a non-zero pointer to an embedded SPE image.
+ *
+ * If successful returns a boost::shared_ptr that does nothing when
+ * it's time to free the object.
+ *
+ * \sa gc_program_handle_from_filename
+ */
+spe_program_handle_sptr
+gc_program_handle_from_address(spe_program_handle_t *handle);
+
/*
* \brief Options that configure the job_manager.
* The default values are reasonable.
@@ -48,19 +74,23 @@
bool gang_schedule; // shall we gang schedule?
bool use_affinity; // shall we try for affinity (FIXME not
implmented)
bool enable_logging; // shall we log SPE events?
- uint32_t log2_nlog_entries; // log2 of number of log entries
(default is 12 == 4k)
- spe_program_handle_t *program_handle; // program to load into SPEs
+ uint32_t log2_nlog_entries; // log2 of number of log entries
(default is 12 == 4k)
+ spe_program_handle_sptr program_handle; // program to load into SPEs
gc_jm_options() :
max_jobs(0), max_client_threads(0), nspes(0),
gang_schedule(true), use_affinity(false),
- enable_logging(false), log2_nlog_entries(12),
- program_handle(0)
+ enable_logging(false), log2_nlog_entries(12)
{
}
};
+enum gc_wait_mode {
+ GC_WAIT_ANY,
+ GC_WAIT_ALL,
+};
+
/*
* \brief Create an instance of the job manager
*/
Modified:
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/gc_job_manager_impl.cc
===================================================================
---
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/gc_job_manager_impl.cc
2008-04-08 21:56:15 UTC (rev 8160)
+++
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/gc_job_manager_impl.cc
2008-04-08 22:35:42 UTC (rev 8161)
@@ -65,20 +65,7 @@
}
};
-// custom deleter
-class spe_program_handle_deleter {
-public:
- void operator()(spe_program_handle_t *program) {
- if (program){
- int r = spe_image_close(program);
- if (r != 0){
- perror("spe_image_close");
- }
- }
- }
-};
-
// custom deleter of anything that can be freed with "free"
class free_deleter {
public:
@@ -150,7 +137,7 @@
if (d_options.max_client_threads == 0)
d_options.max_client_threads = DEFAULT_MAX_CLIENT_THREADS;
- if (d_options.program_handle == 0){
+ if (!d_options.program_handle){
fprintf(stderr, "gc_job_manager: options->program_handle must be
non-zero\n");
throw std::runtime_error("gc_job_manager: options->program_handle must be
non-zero");
}
@@ -236,7 +223,7 @@
// get a handle to the spe program
- spe_program_handle_t *spe_image = d_options.program_handle;
+ spe_program_handle_t *spe_image = d_options.program_handle.get();
// fish proc_def table out of SPE ELF file
Modified:
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/qa_job_manager.cc
===================================================================
---
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/qa_job_manager.cc
2008-04-08 21:56:15 UTC (rev 8160)
+++
gnuradio/branches/developers/eb/gcell-wip/gcell/src/lib/runtime/qa_job_manager.cc
2008-04-08 22:35:42 UTC (rev 8161)
@@ -175,7 +175,7 @@
{
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
mgr = gc_make_job_manager(&opts);
}
@@ -184,7 +184,7 @@
{
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 100;
opts.gang_schedule = false;
mgr = gc_make_job_manager(&opts);
@@ -200,7 +200,7 @@
#if 0
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 100;
opts.gang_schedule = true;
CPPUNIT_ASSERT_THROW(mgr = gc_make_job_manager(&opts), std::out_of_range);
@@ -221,7 +221,7 @@
{
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 1;
mgr = gc_make_job_manager(&opts);
//mgr->set_debug(-1);
@@ -260,7 +260,7 @@
{
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 0; // use them all
mgr = gc_make_job_manager(&opts);
//mgr->set_debug(-1);
@@ -295,7 +295,7 @@
{
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 1;
mgr = gc_make_job_manager(&opts);
gc_proc_id_t gcp_qa_nop = mgr->lookup_proc("qa_nop");
@@ -373,7 +373,7 @@
{
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 1;
mgr = gc_make_job_manager(&opts);
@@ -402,7 +402,7 @@
{
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 1;
mgr = gc_make_job_manager(&opts);
gc_job_desc *jd = mgr->alloc_job_desc();
@@ -435,7 +435,7 @@
static const int M = 201;
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 1;
mgr = gc_make_job_manager(&opts);
gc_job_desc *jd = mgr->alloc_job_desc();
@@ -546,7 +546,7 @@
{
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 1;
mgr = gc_make_job_manager(&opts);
@@ -574,7 +574,7 @@
{
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 1;
mgr = gc_make_job_manager(&opts);
gc_job_desc *jd = mgr->alloc_job_desc();
@@ -609,7 +609,7 @@
static const int M = 201;
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 1;
mgr = gc_make_job_manager(&opts);
gc_job_desc *jd = mgr->alloc_job_desc();
@@ -657,7 +657,7 @@
{
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 1;
mgr = gc_make_job_manager(&opts);
@@ -727,7 +727,7 @@
gc_job_manager_sptr mgr;
gc_jm_options opts;
- opts.program_handle = &gcell_qa;
+ opts.program_handle = gc_program_handle_from_address(&gcell_qa);
opts.nspes = 1;
mgr = gc_make_job_manager(&opts);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r8161 - in gnuradio/branches/developers/eb/gcell-wip/gcell/src: apps lib/runtime,
eb <=