Télécharger IOODES.INC

Retour à la liste

Numérotation des lignes :

  1. C --------------
  2. C I DESCRIPTEURS I
  3. C --------------
  4. C
  5. C MACROS D'ACCES AUX CHAMPS D'UN DESCRIPTEUR
  6. C
  7. C A CHAQUE SEGMENT INITIALISE PAR GEMAT CORRESPOND UN DESCRIPTEUR
  8. C QUI PERMET UN ADRESSAGE INDIRECT DES DONNEES DU SEGMENT .
  9. C
  10. C LE DESCRIPTEUR N'EST LIBERE QU'A LA SUPRESSION DU SEGMENT
  11. C
  12. C 1- LISTE DES CHAMPS D'UN DESCRIPTEUR
  13. C ---------------------------------
  14. C
  15. C A*** DESCRIPTEUR ATTRIBUE:
  16. C
  17. C MDISG INDICE SEGMENT
  18. C MDTRK ADRESSE EN ZONE DE DBT (MEM OU DISQUE)
  19. C MDTYP TYPE SEGMENT
  20. C MDLEN LONGUEUR SEGMENT, OU SUPER-SEGMENT
  21. C SI PETIT SEGMENT SUR DISQUE
  22. C MDMK INDICE DU MARQUEUR SI SUPER SEGMENT
  23. C
  24. C B*** DESCRIPTEUR LIBRE:
  25. C
  26. C
  27. C LES DESCRIPTEURS LIBRES Y COMPRIS LE
  28. C DESCRIPTEUR D'INDICE IDE1 FORMENT UN CHAINAGE TEL
  29. C QUE POUR CHAQUE DESCRIPTEUR LIBRE D'INDICE IDE ON AIT :
  30. C MDIDS=DESCRIPTEUR SUIVANT DS CHAINE LIBRE
  31. C
  32. C 2- ** C O N S T A N T E S D E S C R I P T E U R ***
  33. C -------------------------------------------
  34. C
  35. C MDLDE LONGUEUR DESCRIPTEUR EN MOTS
  36. C MDNDEX NOMBRE DE DESCRIPTEUR A AJOUTER LORS D'UNE EXTENSION
  37. C
  38. MACRO , MDLDE = 8
  39. MACRO , MDNDEX = 8
  40. C VALEUR DU PREMIER DESCRIPTEUR(IDE1) ATTRIBUE APRES INITIALISATION
  41. C DU SEGMENT DES DESCRIPTEURS
  42. C CETTE VALEUR DOIT ASSURER LA COMPATIBILITE DES SAUVEGARDES :
  43. C ON AJUSTE LA LONGUEUR DE LA ZONE OC4 POUR LA MAINTENIR
  44. C CONSTANTE.
  45. CFT NE COMPRENANT RIEN A LA COMPATIBILITE DES SAUVEGARDES, LA SEULE
  46. CFT CONDITION EST QUE MDIDX0 SOIT DE LA FORME MDLDE*n-1 AVEC n
  47. CFT AU MOINS SUPERIEUR A MDNNCHN+2.
  48. CFT : 249 = 109 (MZIDE1) + (12+2)*MDLDE 12 = nombre de chaines
  49. C MACRO , MDIDX0=249
  50. MACRO , MDIDX0= 1 + (12+2)*MDLDE
  51. C VERSION 0.1.5 VALEUR DE MDIDX0 :
  52. C IBM,IRIS,VAX MDIDX0= 141 (8D EN HEXA)
  53. C CDC,CRAY,FPS MDIDX0= 92 (134 EN OCTAL)
  54. C LA COMPATIBILITE EST ASSUREE LORS DE LA RESTAURATION (OOORES)
  55. C
  56. C
  57. MACRO , MDMAXTYP=96
  58. MACRO , MDMINTYP=0
  59. C
  60. C
  61. C 3- S C H E M A D 'U N D E S C R I P T E U R :
  62. C -------------------------------------------
  63. C
  64. C UN DESCRIPTEUR D'INDICE IDE COMPREND LDE MOTS JDE(OOT+IDE+0,1)
  65. C
  66. C A-SEGMENT ISOLE EN MEMOIRE(ACTIVE OU BUF)
  67. C OU MARQUEUR DE SUPER SEGMENT
  68. C MDTRK SI COPIE DISQUE
  69. C .______________._______________. .______._______________________.
  70. C 1 | MDISG + MSLZ1 |2| MDTYP| MDTRK |
  71. C |______________________________| |______|_______________________|
  72. C 31 24 23 0
  73. C
  74. C B-PETIT SEGMENT EN MEMOIRE ACTIVE
  75. C .______________._______________. .______._______________________.
  76. C 1 | MDISG + MSLZ1 |2| MDTYP| MDMK |
  77. C |______________________________| |______________________________|
  78. C 31 24 23 0
  79. C C-SEGMENT EN ZONE DE DBT
  80. C .______________._______________. .______._______________________.
  81. C 1 | MDLEN |2| MDTYP| MDTRK |
  82. C |______________________________| |______________________________|
  83. C 31 24 23 0
  84. C D-DESCRIPTEUR LIBRE
  85. C .______________._______________. .______________._______________.
  86. C 1 |//////////////////////////////|2| - MDIDS |
  87. C |______________________________| |______________________________|
  88. C
  89. MACRO , MDISG (ID)
  90. ** MDISG = (SIGN(ABS(JDE(OOT+(ID))+OOT),OOT)-MSLZ1)
  91. MDISG = (SIGN(ABS(JDE(OOT+(ID)) ),OOT)-MSLZ1)
  92. PSEUDO , ISG
  93. ** JDE(OOT+(ID)) = (ISG)+MSLZ1-OOT
  94. ** JDE(OOT+(ID)+2) = (ISG)+MSLZ1-OOT
  95. JDE(OOT+(ID)) = (ISG)+MSLZ1
  96. JDE(OOT+(ID)+2) = (ISG)+MSLZ1
  97. ENDMACRO
  98. MACRO , ADRESSE NEGATIVE DANS LE DESCRIPTEUR (ID)
  99. PSEUDO , ISG
  100. ** JDE(OOT+(ID)) = -((ISG)+OOT+MSLZ1)
  101. JDE(OOT+(ID)) = -((ISG)+ MSLZ1)
  102. ENDMACRO
  103. MACRO , METTRE CE SEGMENT EN READ ONLY (ID)
  104. PSEUDO , ISG
  105. c JDE(OOT+(ID)+2) = -(JDE(OOT+(ISG)))
  106. %IF WIN32,UNIX32
  107. JDE(OOT+(ID)+2) = -939524096
  108. %ELSE
  109. JDE(OOT+(ID)+2) = -4611686018427387904
  110. %ENDIF
  111. ENDMACRO
  112.  
  113. C
  114. MACRO , MDTYP(ID)
  115. MDTYP = (JDE(OOT+(ID)+1)/16777216)
  116. PSEUDO , ITYP
  117. JDE(OOT+(ID)+1)=MOD(JDE(OOT+(ID)+1),16777216)+(ITYP)*16777216
  118. ENDMACRO
  119. C
  120. MACRO , MDLEN(ID)=JDE(OOT+(ID))
  121. C
  122. MACRO , MDMK (ID)
  123. MDMK =MOD(JDE(OOT+(ID)+1),16777216)
  124. PSEUDO , IDMK
  125. JDE(OOT+(ID)+1)=(JDE(OOT+(ID)+1)/16777216)*16777216+(IDMK)
  126. ENDMACRO
  127. C
  128. MACRO , MDTRK(ID)
  129. MDTRK =MOD(JDE(OOT+(ID)+1),16777216)
  130. PSEUDO , ITRK
  131. JDE(OOT+(ID)+1) = (JDE(OOT+(ID)+1)/16777216)*16777216+(ITRK)
  132. ENDMACRO
  133. C
  134. MACRO , MDIDS(ID) = JDE(OOT+(ID)+1)
  135. C
  136. MACRO , MDZERO(ID)
  137. PSEUDO , LZERO
  138. JDE(OOT+(ID) )=LZERO
  139. JDE(OOT+(ID)+1)=LZERO
  140. JDE(OOT+(ID)+2)=LZERO
  141. CPV JDE(OOT+(ID)+3)=LZERO
  142. CPV JDE(OOT+(ID)+4)=LZERO
  143. CPV JDE(OOT+(ID)+5)=LZERO
  144. CPV JDE(OOT+(ID)+6)=LZERO
  145. CPV JDE(OOT+(ID)+7)=LZERO
  146. CPV JDE(OOT+(ID)+8)=LZERO
  147. CPV JDE(OOT+(ID)+9)=LZERO
  148. ENDMACRO
  149. C
  150. C
  151. C 4- S C H E M A D U T Y P E S E G M E N T
  152. C -----------------------------------------
  153. C
  154. C .__.__.__.__.__.__.__.__.
  155. C |//|D | C | E |Q |O |
  156. C |__|__|__.__|_____|__|__|
  157. C 7 6 5 4 3 2 1 0
  158. C |-----------------|
  159. C +
  160. C +
  161. C ^
  162. C NUMERO DE CHAINE (MDCHAIN)
  163. C
  164. C
  165. C
  166. C D = LOCALISATION 0 =MEMOIRE
  167. C (MDDISK) 1 =ZONE DE DEBORDEMENT
  168. C
  169. C C = CATEGORIE 00=SEGMENT ISOLE
  170. C (MDCAT) 01=SEGMENT FIXE
  171. C 10=COMPOSANT D'UN SUPER SEGMENT
  172. C 11=MARQUEUR D'UN SUPER SEGMENT
  173. C
  174. C E = ETAT 00=ACTIF
  175. C (MDETAT) 01=INACTIF
  176. C 10=NOMOD
  177. C 11=MOD
  178. C
  179. C Q = CHAINE 0 =QUEUE LRU
  180. C (MDQUEU) 1 =PILE MRU
  181. C
  182. C O = OUTPUT 0 =AUTRE
  183. C (MDBUF) 1 =QUEUE BUFFER
  184. C
  185. C
  186. C
  187. C *** LOCALISATION
  188. C
  189. MACRO , MDMEM = 0 , MDDISQUE = 1
  190. C
  191. MACRO , MDDISK (ITYP)
  192. MDDISK = ((ITYP)/64)
  193. PSEUDO , IDISK
  194. ITYP =MOD(ITYP ,64)+(IDISK)*64
  195. ENDMACRO
  196. C
  197. C *** CATEGORIE
  198. C
  199. MACRO , MDISOLE=0 , MDFIXE=1 , MDBLOCK=2 , MDMARK=3
  200. C
  201. MACRO , MDCAT (ITYP)
  202. MDCAT =(MOD(ITYP ,64)/16)
  203. PSEUDO , ICAT
  204. ITYP = ((ITYP)/64)*64+MOD(ITYP,16)+(ICAT)*16
  205. ENDMACRO
  206. C
  207. C *** ETAT
  208. C
  209. MACRO , MDACT=0 , MDINACT=1 , MDNOMOD=2 , MDMOD=3
  210. C
  211. MACRO , MDETAT (ITYP)
  212. MDETAT =(MOD(ITYP ,16)/4)
  213. PSEUDO , IETAT
  214. ITYP = ((ITYP)/16)*16+MOD(ITYP,4)+(IETAT)*4
  215. ENDMACRO
  216. C
  217. C *** CHAINAGE
  218. C
  219. MACRO , MDLRU=0 , MDMRU=1
  220. C
  221. MACRO , MDQUEU (ITYP)
  222. MDQUEU =(MOD(ITYP ,4)/2)
  223. PSEUDO , IQUEU
  224. ITYP = ((ITYP)/4)*4+MOD(ITYP,2)+(IQUEU)*2
  225. ENDMACRO
  226. C
  227. C *** BUFFER
  228. C
  229. MACRO , MDNBUF=0 , MDBUF=1
  230. C
  231. MACRO , MDIO (ITYP)
  232. MDIO = MOD(ITYP ,2)
  233. PSEUDO , IBUF
  234. ITYP = ((ITYP)/2)*2+(IBUF)
  235. ENDMACRO
  236. C
  237. C *** CHARGEMENT DU TYPE
  238. C
  239. MACRO , MDLTYP(ICAT,IDISK,IETAT,IQUEU,IO)
  240. MDLTYP = ((IDISK)*64+(ICAT)*16+(IETAT)*4+(IQUEU)*2+(IO))
  241. ENDMACRO
  242. C
  243. C
  244. C 5- C H A I N A G E S E G M E N T S
  245. C ---------------------------------
  246. C
  247. C LISTE DES CHAINES DE SEGMENTS
  248. C
  249. MACRO , MDNNCHN=12
  250. MACRO , ( ACTIF , FIXE , LRU , MRU , CACTIF , CLRU , CMRU
  251. * , OLIN , OLNOMOD , OLMOD , OMNOMOD , OMMOD )
  252. C
  253. C MDNDX0 NOMBRE INITIAL DESCRIPTEURS =NOMBRE DE TETES DE CHAINES
  254. C + TETE DE CHAINE DES DESCRIPTEURS LIBRES
  255. C + DESCRIPTEUR DU SEGMENT DES DESCRIPTEURS
  256. C
  257. MACRO , MDNDX0=(MDNNCHN+2)
  258. C
  259. C MDCHAIN ACCES AU NUMERO DE CHAINE (CF MDNCHN)
  260. C MDNCHN NUMERO DE CHAINE
  261. C MDMKSS ETAT DES COMPOSANT D'UN SUPER SEGMENT(CF MSMKISS)
  262. C MDQIO NUMERO DE CHAINE BUFFER CORRESPONDANT A L'ETAT D'UN
  263. C SEGMENT (CF MDNQIO)
  264. C MDNQIO NUMERO DE CHAINE BUFFER
  265. C MDACHN ADRESSE DE TETE DE CHAINE
  266. C MDOPOCHN INDICATEUR DE CHAINE : HORS FONCTION OU EN FONCTION
  267. C
  268. MACRO , MDCHAIN (ITYP) = (MOD(ITYP,64)+1)
  269. MACRO , MDNCHN (ITYP) = MZCHN(MDCHAIN(ITYP))
  270. MACRO , MDMKSS (ITYP) = (MOD(ITYP,16)/2+1)
  271. MACRO , MDQIO (ITYP) = (MOD(ITYP,16)/2+1)
  272. MACRO , MDNQIO (ITYP) = MZCBUF(MDQIO(ITYP))
  273. MACRO , MDACHN (ICHN) = (MZIDE1+(ICHN)*MDLDE)
  274. MACRO , MDOPOCHN = 1 , MDOPFCHN = 0
  275. C
  276. MACRO , MDOPCHN (ICHN) = JZZ(MDISG(MDACHN(ICHN))+MSLZ1+1)
  277. C
  278. C
  279. C 6- C H A N G E M E N T S D E C H A I N E
  280. C ----------------------------------------
  281. C
  282. C PASSER UN SEGMENT D UNE CHAINE A UNE AUTRE
  283. C*
  284. C* ID2 INDICE D'UN DESCRIPTEUR DE SEGMENT DE LA CHAINE RECEPTRICE
  285. C* ID1 INDICE DU DESCRIPTEUR DU SEGMENT A CHANGER DE CHAINE
  286. C*
  287. C*
  288. MACRO , MDCHN ( ID2 , ID1 )
  289. C
  290. C****** RETIRER ID1 DE SA CHAINE
  291. C
  292. IIIS1 = MDISG(ID1)
  293. IIIDP1 = MSIDP(IIIS1)
  294. IIITYP = MDTYP(IIIDP1)
  295. IIIDS1 = MSIDS(IIIS1)
  296. MSIDP(MDISG(IIIDS1))=IIIDP1
  297. MSIDS(MDISG(IIIDP1))=IIIDS1
  298. IIICHN = MDNCHN(IIITYP)
  299. MZQCHN(IIICHN) = MZQCHN(IIICHN)-MSLS1(IIIS1)
  300. C
  301. C****** INTRODUIRE ID1 DANS LA CHAINE DEVANT LE SGM ID2
  302. C
  303. IIIS2 = MDISG(ID2)
  304. IIITYP = MDTYP(ID2)
  305. IIIDP2 = MSIDP(IIIS2)
  306. MSIDS(MDISG(IIIDP2))=ID1
  307. MSIDP(IIIS1) = IIIDP2
  308. MSIDP(IIIS2) = ID1
  309. MSIDS(IIIS1) = ID2
  310. IIICHN = MDNCHN(IIITYP)
  311. MZQCHN(IIICHN)= MZQCHN(IIICHN)+MSLS1(IIIS1)
  312. C
  313. ENDMACRO
  314. C
  315. C RETIRER UN SEGMENT D'INDICE IDE D'UNE CHAINE
  316. C
  317. MACRO , MDCH0 ( IDE )
  318. C
  319. C****** RETIRER IDE DE SA CHAINE
  320. C
  321. IIIS1 = MDISG(IDE)
  322. IIIDP1 = MSIDP(IIIS1)
  323. IIITYP = MDTYP(IIIDP1)
  324. IIIDS1 = MSIDS(IIIS1)
  325. MSIDP(MDISG(IIIDS1))=IIIDP1
  326. MSIDS(MDISG(IIIDP1))=IIIDS1
  327. IIICHN = MDNCHN(IIITYP)
  328. MZQCHN(IIICHN)= MZQCHN(IIICHN)-MSLS1(IIIS1)
  329. C LE BOUCLER SUR LUI MEME
  330. MSIDP(IIIS1)=IDE
  331. MSIDS(IIIS1)=IDE
  332. C
  333. ENDMACRO
  334. C
  335. C INTRODUIRE UN SEGMENT DANS UNE CHAINE
  336. C*
  337. C* ID2 INDICE D'UN DESCRIPTEUR DE SEGMENT DE LA CHAINE RECEPTRICE
  338. C* ID1 INDICE DU DESCRIPTEUR DU SEGMENT A INTRODUIRE
  339. C*
  340. C*
  341. MACRO , MDCHNP(ID2,ID1)
  342. C
  343. C****** INTRODUIRE ID1 DANS LA CHAINE DEVANT LE SGM ID2
  344. C
  345. IIIS1 = MDISG(ID1)
  346. IIIS2 = MDISG(ID2)
  347. IIITYP = MDTYP(ID2)
  348. IIIDP2 = MSIDP(IIIS2)
  349. MSIDS(MDISG(IIIDP2))=ID1
  350. MSIDP(IIIS1) = IIIDP2
  351. MSIDP(IIIS2) = ID1
  352. MSIDS(IIIS1) = ID2
  353. IIICHN = MDNCHN(IIITYP)
  354. MZQCHN(IIICHN) = MZQCHN(IIICHN)+MSLS1(IIIS1)
  355. C
  356. ENDMACRO
  357. C
  358. C
  359. C* ECHANGE DES DESCRIPTEURS DE DEUX SEGMENTS
  360. C
  361. C HYPOTHESE :
  362. C LES SEGMENTS SONT TOUS LES DEUX DANS LA MEME CHAINE
  363. C
  364. MACRO , MSECH(ID1,ID2)
  365. C
  366. C****** SAUVEGARDE DES INFORMATIONS DE CONTROLE
  367. C
  368. IIIS1 =MDISG(ID1)
  369. IIITRK=MDTRK(ID1)
  370. IIIS2 =MDISG(ID2)
  371. IIIDP2=MSIDP(IIIS2)
  372. IIIDS2=MSIDS(IIIS2)
  373. C
  374. C****** ID1 POINTE SUR LE NOUVEAU SEGMENT
  375. C
  376. MSIDE(IIIS2)=ID1
  377. MDISG(ID1) =IIIS2
  378. MDTRK(ID1) =MDTRK(ID2)
  379. MSIDP(IIIS2)=MSIDP(IIIS1)
  380. MSIDS(IIIS2)=MSIDS(IIIS1)
  381. C
  382. C****** ID2 POINTE SUR L'ANCIEN SEGMENT
  383. C
  384. MSIDE(IIIS1)=ID2
  385. MSIDP(IIIS1)=IIIDP2
  386. MSIDS(IIIS1)=IIIDS2
  387. MDTRK(ID2) =IIITRK
  388. MDISG(ID2) =IIIS1
  389. C
  390. ENDMACRO
  391. C
  392. C
  393. C 7- A C C E S A U X C H A M P S 4 A 8
  394. C -----------------------------------------
  395. C
  396. C CES CHAMPS SONT UTILISES POUR ESOPE MULTITHREADE
  397. C*
  398. C* MOT NUMERO 4 : NUMERO DU THREAD AYANT ACTIVE EN READWRITE
  399. C*
  400. MACRO , MDRW(ID)
  401. MDRW=JDE(OOT+(ID)+3)
  402. PSEUDO , PRRW
  403. JDE(OOT+(ID)+3) = PRRW
  404. ENDMACRO
  405. C*
  406. C* MOT NUMERO 5 : MASQUE 1 DES THREADS AYANT ACTIVES EN READONLY
  407. C*
  408. MACRO , MDRO1(ID)
  409. MDRO1=JDE(OOT+(ID)+4)
  410. PSEUDO , PRRO1
  411. JDE(OOT+(ID)+4) = PRRO1
  412. ENDMACRO
  413. C*
  414. C* MOT NUMERO 6 : MASQUE 2 DES THREADS AYANT ACTIVES EN READONLY
  415. C*
  416. MACRO , MDRO2(ID)
  417. MDRO2=JDE(OOT+(ID)+5)
  418. PSEUDO , PRRO2
  419. JDE(OOT+(ID)+5) = PRRO2
  420. ENDMACRO
  421. C*
  422. C* MOT NUMERO 7 : POINTEUR SUR LA CONDITION (ET MUTEX) POUR L'ATTENTE
  423. C* D'EVENEMENT SUR CE SEGMENT
  424. C*
  425. MACRO , MDCO(ID)
  426. MDCO=JDE(OOT+(ID)+6)
  427. PSEUDO , PRCO
  428. JDE(OOT+(ID)+6) = PRCO
  429. ENDMACRO
  430. C*
  431. C* MOT NUMERO 8 : HORODATAGE DU SEGMENT
  432. C*
  433. MACRO , MDHOR(ID)
  434. MDHOR=JDE(OOT+(ID)+7)
  435. PSEUDO , PRHOR
  436. JDE(OOT+(ID)+7) = PRHOR
  437. ENDMACRO
  438.  
  439. C
  440. C
  441. C ON UTILISE EGALEMENT LE MOTS 2 POUR LE CHAINAGE ARRIERE DES
  442. C DESCRIPTEURS LIBRES
  443. C
  444. MACRO , MDIDP(ID)
  445. MDIDP = (JDE(OOT+(ID)+2))
  446. PSEUDO , LDIDP
  447. JDE(OOT+(ID)+2)=(LDIDP)
  448. ENDMACRO
  449. C
  450. C--------------------------------------------------------------------
  451. C
  452.  

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