commit-gnuradio
[Top][All Lists]
Advanced

[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);
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]