[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/tosthreads/system BlockingAMSenderImplP.nc, 1.2, 1.3
Chieh-Jan Mike Liang
liang_mike at users.sourceforge.net
Mon Feb 9 19:36:10 PST 2009
Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/tosthreads/system
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv4935/tos/lib/tosthreads/system
Modified Files:
BlockingAMSenderImplP.nc
Log Message:
Check the AM ID to make sure the sendDone event should be signaled (it could be for the TinyOS services)
Index: BlockingAMSenderImplP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/tosthreads/system/BlockingAMSenderImplP.nc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** BlockingAMSenderImplP.nc 26 Nov 2008 19:25:56 -0000 1.2
--- BlockingAMSenderImplP.nc 10 Feb 2009 03:36:07 -0000 1.3
***************
*** 32,35 ****
--- 32,36 ----
/**
* @author Kevin Klues (klueska at cs.stanford.edu)
+ * @author Chieh-Jan Mike Liang <cliang4 at cs.jhu.edu>
*/
***************
*** 56,60 ****
} params_t;
! syscall_t* send_call;
mutex_t my_mutex;
--- 57,61 ----
} params_t;
! syscall_t* send_call = NULL;
mutex_t my_mutex;
***************
*** 75,85 ****
params_t p;
call Mutex.lock(&my_mutex);
! send_call = &s;
!
! p.addr = addr;
! p.msg = msg;
! p.len = len;
!
! call SystemCall.start(&sendTask, &s, am_id, &p);
atomic {
--- 76,91 ----
params_t p;
call Mutex.lock(&my_mutex);
! if (send_call == NULL) {
! send_call = &s;
!
! p.addr = addr;
! p.msg = msg;
! p.len = len;
!
! call SystemCall.start(&sendTask, &s, am_id, &p);
! send_call = NULL;
! } else {
! p.error = EBUSY;
! }
atomic {
***************
*** 97,104 ****
event void AMSend.sendDone[am_id_t am_id](message_t* m, error_t error) {
! params_t* p;
! p = send_call->params;
! p->error = error;
! call SystemCall.finish(send_call);
}
default command error_t AMSend.send[am_id_t id](am_addr_t addr, message_t* msg, uint8_t len) {
--- 103,114 ----
event void AMSend.sendDone[am_id_t am_id](message_t* m, error_t error) {
! if (send_call != NULL) {
! if (send_call->id == am_id) {
! params_t* p;
! p = send_call->params;
! p->error = error;
! call SystemCall.finish(send_call);
! }
! }
}
default command error_t AMSend.send[am_id_t id](am_addr_t addr, message_t* msg, uint8_t len) {
More information about the Tinyos-2-commits
mailing list