Télécharger oooeta.eso

Retour à la liste

Numérotation des lignes :

oooeta
  1. C OOOETA SOURCE PV090527 26/04/24 08:23:07 12524
  2. SUBROUTINE OOOETA (PSEG,IETA,IMOD)
  3. C----------------------------------------------------------------------
  4. C
  5. C ETAT D'UN SEGMENT
  6. C
  7. C PSEG POINTEUR DU SEGMENT
  8. C
  9. C ->IETA 1 SEGMENT ACTIF
  10. C 2 SEGMENT INACTIF , EN MEMOIRE
  11. C 3 SEGMENT INACTIF , SUR DISQUE
  12. C
  13. C ->IMOD 0 SEGMENT ACTIF EN LECTURE (*NOMOD)
  14. C ->IMOD 1 SEGMENT ACTIF EN ECRITURE (*MOD )
  15. C
  16. C PROGRAMMEUR : MOUGIN
  17. C MODIF : 10/04/89 ERREUR : OUBLI DE DECLARER PSEG
  18. C
  19. C-----------------------------------------------------------------------
  20. C
  21. %INC IOOADR
  22. %INC IOOADZ
  23. %INC IOODES
  24. %INC IOOSGM
  25. %INC IOOWCOM
  26. POINTEUR PSEG.PSEG
  27.  
  28. C CONTROLES DE VRAISSEMBLANCE DU POINTEUR
  29. CALL OOOVPN(PSEG)
  30.  
  31. C Le segment est-il dans la queue de suppression
  32. nth=oothrd
  33. do i=1,isupq(nth)
  34. if (supq(nth,i).eq.pseg) then
  35. CALL OOOERR(PSEG,-1,'LE POINTEUR DESIGNE UN SEGMENT SUPPRIME')
  36. STOP 16
  37. endif
  38. enddo
  39.  
  40. ITYP = MDTYP(PSEG)
  41. IMOD = 0
  42. IETA =-1
  43.  
  44. IF (MDDISK(ITYP).EQ.MDDISQUE) THEN
  45. IETA = 3
  46.  
  47. ELSEIF (MDETAT(ITYP).EQ.MDACT ) THEN
  48. C Le segment est-il dans la queue de desactivation
  49. do i=1,idesq(nth)
  50. if (desq(nth,i).eq.pseg) then
  51. ieta=2
  52. return
  53. endif
  54. enddo
  55.  
  56. C Le segment est-il actuellement actif pour le thread ith
  57. if((nth.lt.64.and.ibits(mdro1(pseg),nth,1).eq.0).or.
  58. > (nth.ge.64.and.ibits(mdro2(pseg),nth-64,1).eq.0)) then
  59. ieta=2
  60. return
  61. endif
  62.  
  63. C Le segment est-il ACTIF en *MOD
  64. if (mdrw(pseg) .eq. nth+1) imod=1
  65. IETA = 1
  66.  
  67. ELSE
  68. IETA = 2
  69. ENDIF
  70. END
  71.  
  72.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales