home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 15 / AACD15.ISO / AACD / System / MorphOS / Developer / include / public / quark / id.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-11-02  |  2.7 KB  |  107 lines

  1. #ifndef    QUARK_ID_H
  2. #define    QUARK_ID_H
  3.  
  4. #include <public/quark/types.h>
  5.  
  6. /* TaskID
  7.  *
  8.  * 31........0
  9.  * Nest(4) | Chief(11) | Site(17)
  10.  * Type(4) | Task(11)  | ver0(10) | Thread(7)
  11.  *                   OR
  12.  * Type(4) | Task(11)  | Port(17)
  13.  */
  14.  
  15. /* Object Clan Location Identification
  16.  */
  17. #define    QID_NESTSHIFT    (28+32)
  18. #define    QID_NESTMASK    (0xfLL << QID_NESTSHIFT)
  19. #define    QID_CHIEFSHIFT    (17+32)
  20. #define    QID_CHIEFMASK    (0x7ffLL << QID_CHIEFSHIFT)
  21. #define    QID_SITESHIFT    (0+32)
  22. #define    QID_SITEMASK    (0x1ffffLL << QID_SITESHIFT)
  23.  
  24. #define    QGET_CLAN(x)    (x & 0xffffffff00000000LL)
  25.  
  26.  
  27. /* Object Type Identification
  28.  */
  29. #define    QID_TYPESHIFT    (28+0)
  30. #define    QID_TYPEMASK    (0xfLL << QID_TYPESHIFT)
  31.  
  32. #define    QIDTYPE_THREAD    1LL
  33. #define    QIDTYPE_MSGPORT    2LL
  34.  
  35. /* Task ID
  36.  */
  37. #define    QID_TASKSHIFT    (17+0)
  38. #define    QID_TASKMASK    (0x7ffLL << QID_TASKSHIFT)
  39.  
  40. /* ver0(10) | Thread(7)
  41.  * marked as subtype
  42.  */
  43. #define    QID_SUBTYPESHIFT    (0)
  44. #define    QID_SUBTYPEMASK    (0x1ffffLL << QID_SUBTYPESHIFT)
  45.  
  46. /* Thread Subtype
  47.  */
  48. #define    QID_VERSIONSHIFT    (10+0)
  49. #define    QID_VERSIONMASK    (0x3ffLL << QID_VERSIONSHIFT)
  50. #define    QID_THREADSHIFT    (0+0)
  51. #define    QID_THREADMASK    (0x7fLL << QID_THREADSHIFT)
  52.  
  53.  
  54. /* MsgPort SubType
  55.  */
  56. #define    QID_PORTSHIFT    (0)
  57. #define    QID_PORTMASK    (0x1ffffLL << QID_PORTSHIFT)
  58.  
  59.  
  60. #define    QID_TASKMAX    2048
  61. #define    QID_THREADMAX    127
  62. #define    QID_PORTMAX    0x1ffff
  63. #define    QID_ILLEGAL    (-1LL)
  64. #define    QID_NULL    (0LL)
  65.  
  66.  
  67. #define    QGETID_NEST(x)        ((x & QID_NESTMASK) >> QID_NESTSHIFT)
  68. #define    QGETID_CHIEF(x)        ((x & QID_CHIEFMASK) >> QID_CHIEFSHIFT)
  69. #define    QGETID_SITE(x)        ((x & QID_SITEMASK) >> QID_SITESHIFT)
  70. #define    QGETID_TYPE(x)        ((x & QID_TYPEMASK) >> QID_TYPESHIFT)
  71. #define    QGETID_TASK(x)        ((x & QID_TASKMASK) >> QID_TASKSHIFT)
  72. #define    QGETID_THREAD(x)    ((x & QID_THREADMASK) >> QID_THREADSHIFT)
  73. #define    QGETID_PORT(x)        ((x & QID_PORTMASK) >> QID_PORTSHIFT)
  74. #define    QGETID_VER(x)        ((x & QID_VERSIONMASK) >> QID_VER0SHIFT)
  75.  
  76. #define    QSETID_NEST(x)        (x << QID_NESTSHIFT)
  77. #define    QSETID_CHIEF(x)        (x << QID_CHIEFSHIFT)
  78. #define    QSETID_SITE(x)        (x << QID_SITESHIFT)
  79. #define    QSETID_TYPE(x)        (x << QID_TYPESHIFT)
  80. #define    QSETID_TASK(x)        (x << QID_TASKSHIFT)
  81. #define    QSETID_THREAD(x)    (x << QID_THREADSHIFT)
  82. #define    QSETID_PORT(x)        (x << QID_PORTSHIFT)
  83. #define    QSETID_VERSION(x)    (x << QID_VERSIONHIFT)
  84.  
  85. #define    QPID_CREATE(x)    (QSETID_TYPE( QIDTYPE_THREAD) | QSETID_TASK(x))
  86.  
  87. #define    QTID_CREATE(x)    QSETID_THREAD(x)
  88.  
  89. #define    QGET_PID(x)    ((q_pid_t) (x & (u_int64_t) ~QID_THREADMASK))
  90.  
  91.  
  92. /* x == PortID
  93.  * y == PID/TID
  94.  */
  95. #define    QMID_CREATE(x,y)    (QSETID_TYPE(QIDTYPE_MSGPORT) | QSETID_PORT(x) | (y & (u_int64_t) ~(QID_PORTMASK | QID_TYPEMASK)) )
  96.  
  97.  
  98.  
  99. #define    QPID_SAME(x,y)    ((x & (u_int64_t) ~QID_SUBTYPEMASK) == (y & (u_int64_t) ~QID_SUBTYPEMASK))
  100.  
  101.  
  102. #define    QGETID_UPPER(x)    (x>>32 & 0xffffffff)
  103. #define    QGETID_LOWER(x)    (x & 0xffffffff)
  104.  
  105.  
  106. #endif
  107.