[Tinyos-beta-commits] CVS: tinyos-1.x/beta/platform/pxa27x
PXA27XInterruptM.nc, 1.1, 1.2
Josh
jsherbach at users.sourceforge.net
Wed Aug 24 14:17:32 PDT 2005
Update of /cvsroot/tinyos/tinyos-1.x/beta/platform/pxa27x
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7857
Modified Files:
PXA27XInterruptM.nc
Log Message:
resolved issues with using the TOSH_IRP_TABLE
Index: PXA27XInterruptM.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/beta/platform/pxa27x/PXA27XInterruptM.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** PXA27XInterruptM.nc 13 Nov 2004 01:12:40 -0000 1.1
--- PXA27XInterruptM.nc 24 Aug 2005 21:17:27 -0000 1.2
***************
*** 91,94 ****
--- 91,95 ----
}
+ static uint8_t usedPriorities = 0;
/* Helper functions */
***************
*** 100,113 ****
result_t result = FAIL;
! atomic {
! if ((id < 34) && (priority < 32)) {
! if (!(IPR(priority) & IPR_VALID)) {
IPR(priority) = (IPR_VALID | (id));
tmp = IPR(priority);
- if (level) {
- _ICLR(id) |= _PPID_Bit(id);
- tmp = _ICLR(id);
- }
}
result = SUCCESS;
}
--- 101,161 ----
result_t result = FAIL;
! atomic{
! uint8_t i;
! if(usedPriorities == 0){//assumed that the table will have some entries
! uint8_t PriorityTable[40], DuplicateTable[40];
! for(i = 0; i < 40; i++){
! DuplicateTable[i] = PriorityTable[i] = 0xFF;
! }
!
! for(i = 0; i < 40; i++)
! if(TOSH_IRP_TABLE[i] != 0xff){
! if(PriorityTable[TOSH_IRP_TABLE[i]] != 0xFF)/*duplicate priorities
! in the table, mark
! for later fixing*/
! DuplicateTable[i] = PriorityTable[TOSH_IRP_TABLE[i]];
! else
! PriorityTable[TOSH_IRP_TABLE[i]] = i;
! }
!
! //compress table
! for(i = 0; i < 40; i++){
! if(PriorityTable[i] != 0xff){
! PriorityTable[usedPriorities] = PriorityTable[i];
! if(i != usedPriorities)
! PriorityTable[i] = 0xFF;
! usedPriorities++;
! }
! }
!
! for(i = 0; i < 40; i++)
! if(DuplicateTable[i] != 0xFF){
! uint8_t j, ExtraTable[40];
! for(j = 0; DuplicateTable[i] != PriorityTable[j]; j++);
! memcpy(ExtraTable + j + 1, PriorityTable + j, usedPriorities - j);
! memcpy(PriorityTable + j + 1, ExtraTable + j + 1,
! usedPriorities - j);
! PriorityTable[j] = i;
! usedPriorities++;
! }
!
! for(i = 0; i < usedPriorities; i++){
! IPR(i) = (IPR_VALID | PriorityTable[i]);
! tmp = IPR(i);
! }
! }
!
! if (id < 34){
! if(priority == 0xff){
! priority = usedPriorities;
! usedPriorities++;
IPR(priority) = (IPR_VALID | (id));
tmp = IPR(priority);
}
+ if (level) {
+ _ICLR(id) |= _PPID_Bit(id);
+ tmp = _ICLR(id);
+ }
+
result = SUCCESS;
}
***************
*** 115,119 ****
return result;
}
!
void enable(uint8_t id)
{
--- 163,167 ----
return result;
}
!
void enable(uint8_t id)
{
More information about the Tinyos-beta-commits
mailing list