home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / oper_sys / emerald / emrldsys.lha / Kernel / h / consts.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-08-17  |  2.4 KB  |  81 lines

  1.  
  2. /* copyright 1986 Eric Jul */
  3. /* Generates offsets for data structures defined in C. */
  4. /* The offsets are generated by a complicated script, see makefile */
  5.  
  6. #include "sys/time.h"
  7. #include "emTypes.h"
  8. #include "emeraldTypes.h"
  9.  
  10. #define findOffset(base,field) \
  11.         asm("#X#base#Y#field ZZZZ"); \
  12.     ZYXZ  = (int) (    ( (char *) ( &( ( (base *) 0 )->field ) ) ) \
  13.                          - ( (char *) (  ( ( (base *) 0 )        ) ) ) \
  14.                       )
  15.  
  16. #define findBitOffset(base,field) \
  17.         asm("#X#base#Y#field ZZZZ"); \
  18.     ZYXZ  = ( (base *) 0 )-> field
  19.  
  20. #define findSizeOf(someType) \
  21.         asm("#X#sizeof#Y#someType ZZZZ"); \
  22.     ZYXZ  = sizeof(someType)
  23.     
  24.  
  25. int ZYXZ;
  26. main()
  27. {
  28.     findBitOffset(ODTag,frozen);
  29.     findBitOffset(ODTag,global);
  30.     findBitOffset(ODTag,replicated);
  31.     findBitOffset(ODTag,isResident);
  32.     findBitOffset(ODTag,setUpDone);
  33.     findBitOffset(ODTag,isFixed);
  34.     findBitOffset(ODTag,inTransit);
  35.     findBitOffset(ODTag,allInstancesAreLocal);
  36.     findBitOffset(ODTag,hasNoPointer);
  37.     findBitOffset(ODTag,broken);
  38.     findBitOffset(ODTag,gcDoNotCollect);
  39.     findBitOffset(ODTag,gcMark1);
  40.     findBitOffset(ODTag,gcMark2);
  41.     findBitOffset(ODTag,gcFrozen);
  42.     findBitOffset(ODTag,localgcMark1);
  43.     findBitOffset(ODTag,localgcMark2);
  44.     findBitOffset(ODTag,xref);
  45.     findBitOffset(ODTag,dormant);
  46.     findBitOffset(ODTag,stopped);
  47.     findBitOffset(ODTag,seenHere);
  48.  
  49.     findSizeOf(AbConOpVectorEntry);
  50.     findSizeOf(OpVectorEntry);
  51.     findOffset(AbCon,opVector[0]);
  52.     findOffset(AbCon,ATOID);
  53.     findOffset(OpVector,entry[0]);
  54.     findOffset(GOD,dataPtr);
  55.     findOffset(GOD,ARListHead);
  56.     findOffset(GOData,inlineData[0]);
  57.     findOffset(GOData,myCodePtr);
  58.     findOffset(LOData,tag);
  59.     findOffset(LOData,inlineData[0]);
  60.     findOffset(LOData,myCodePtr);
  61.     findOffset(ROData,tag);
  62.     findOffset(ROData,myCodePtr);
  63.     findOffset(ROData,ownOID);
  64.     findOffset(ROData,inlineData[0]);
  65.     findOffset(CondOD,theLock);
  66.     findOffset(CondOD,waiting);
  67.     findOffset(MonitorLock,waiting);
  68.     findOffset(SS,regs);
  69.     findOffset(SS,resultBrand);
  70.     findOffset(SS,ssDQ);
  71.     findOffset(AVariable,myAbConPtr);
  72.     findOffset(String,sizeInBytes);
  73.     findOffset(String,data[0]);
  74.     findOffset(Vector,sizeInBytes);
  75.     findOffset(Vector,data[0]);
  76.     findOffset(IMVector,sizeInBytes);
  77.     findOffset(IMVector,data[0]);
  78.     findOffset(EmNodeList,data[0]);
  79.     findOffset(DotoFile,theRest[0]);
  80. }
  81.