[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/tosthreads/lib/net BlockingCollectionControlC.nc, 1.1, 1.2 BlockingCollectionControlP.nc, 1.1, 1.2

Chieh-Jan Mike Liang liang_mike at users.sourceforge.net
Mon Feb 9 19:42:47 PST 2009


Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/tosthreads/lib/net
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv13822/tos/lib/tosthreads/lib/net

Modified Files:
	BlockingCollectionControlC.nc BlockingCollectionControlP.nc 
Log Message:
Use SystemCallC to pass control to the TinyOS thread


Index: BlockingCollectionControlC.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tosthreads/lib/net/BlockingCollectionControlC.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** BlockingCollectionControlC.nc	16 Jun 2008 18:38:28 -0000	1.1
--- BlockingCollectionControlC.nc	10 Feb 2009 03:42:45 -0000	1.2
***************
*** 33,38 ****
  
  implementation {
!   components BlockingCollectionControlP,
!              CollectionC as Collector;
    
    RoutingControl = BlockingCollectionControlP.BlockingStdControl;
--- 33,40 ----
  
  implementation {
!   components CollectionC as Collector,
!              SystemCallC,
!              MutexC,
!              BlockingCollectionControlP;
    
    RoutingControl = BlockingCollectionControlP.BlockingStdControl;
***************
*** 40,42 ****
--- 42,46 ----
    
    BlockingCollectionControlP.RoutingControl -> Collector.StdControl;
+   BlockingCollectionControlP.SystemCall -> SystemCallC;
+   BlockingCollectionControlP.Mutex -> MutexC;
  }

Index: BlockingCollectionControlP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tosthreads/lib/net/BlockingCollectionControlP.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** BlockingCollectionControlP.nc	16 Jun 2008 18:38:28 -0000	1.1
--- BlockingCollectionControlP.nc	10 Feb 2009 03:42:45 -0000	1.2
***************
*** 27,46 ****
  module BlockingCollectionControlP {
    provides {
!     interface BlockingStdControl; 
    }
    
    uses {
      interface StdControl as RoutingControl;
    }
  }
  
  implementation {
!   command error_t BlockingStdControl.start()
    {
!     return call RoutingControl.start();
    }
    
!   command error_t BlockingStdControl.stop()
    {
      return call RoutingControl.stop();
    }
--- 27,83 ----
  module BlockingCollectionControlP {
    provides {
!     interface BlockingStdControl;
!     interface Init;
    }
    
    uses {
      interface StdControl as RoutingControl;
+     interface SystemCall;
+     interface Mutex;
    }
  }
  
  implementation {
!   typedef struct params {
!     error_t error;
!   } params_t;
! 
!   syscall_t* start_call = NULL;
!   mutex_t my_mutex;
!   
!   command error_t Init.init()
    {
!     call Mutex.init(&my_mutex);
!     return SUCCESS;
    }
    
!   void startTask(syscall_t* s)
    {
+     params_t* p = s->params;
+     p->error = call RoutingControl.start();
+     call SystemCall.finish(s);
+   }
+ 
+   command error_t BlockingStdControl.start()
+   {
+     syscall_t s;
+     params_t p;
+     
+     call Mutex.lock(&my_mutex);
+       if (start_call == NULL) {
+         start_call = &s;
+         call SystemCall.start(&startTask, &s, INVALID_ID, &p);
+         start_call = NULL;
+       } else {
+         p.error = EBUSY;
+       }
+         
+     atomic {
+       call Mutex.unlock(&my_mutex);
+       return p.error;
+     }
+   }
+   
+   command error_t BlockingStdControl.stop() {
      return call RoutingControl.stop();
    }



More information about the Tinyos-2-commits mailing list