1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 
  24 
  25 
  26 
  27 
  28 
  29 
  30 
  31 #ifndef OPAL_DSS_TYPES_H_
  32 #define OPAL_DSS_TYPES_H_
  33 
  34 #include "opal_config.h"
  35 
  36 #ifdef HAVE_SYS_TIME_H
  37 #include <sys/time.h> 
  38 #endif
  39 
  40 #include "opal/class/opal_object.h"
  41 #include "opal/class/opal_pointer_array.h"
  42 #include "opal/class/opal_list.h"
  43 
  44 typedef uint32_t opal_jobid_t;
  45 typedef uint32_t opal_vpid_t;
  46 typedef struct {
  47     opal_jobid_t jobid;
  48     opal_vpid_t vpid;
  49 } opal_process_name_t;
  50 #define OPAL_SIZEOF_PROCESS_NAME_T 8
  51 
  52 BEGIN_C_DECLS
  53 
  54 typedef uint8_t opal_data_type_t;  
  55 #define OPAL_DATA_TYPE_T    OPAL_UINT8
  56 #define OPAL_DSS_ID_MAX     UINT8_MAX
  57 #define OPAL_DSS_ID_INVALID OPAL_DSS_ID_MAX
  58 
  59 
  60 typedef struct {
  61     int32_t size;
  62     uint8_t *bytes;
  63 } opal_byte_object_t;
  64 
  65 
  66 #define    OPAL_UNDEF               (opal_data_type_t)    0 
  67 #define    OPAL_BYTE                (opal_data_type_t)    1 
  68 #define    OPAL_BOOL                (opal_data_type_t)    2 
  69 #define    OPAL_STRING              (opal_data_type_t)    3 
  70 #define    OPAL_SIZE                (opal_data_type_t)    4 
  71 #define    OPAL_PID                 (opal_data_type_t)    5 
  72     
  73 #define    OPAL_INT                 (opal_data_type_t)    6 
  74 #define    OPAL_INT8                (opal_data_type_t)    7 
  75 #define    OPAL_INT16               (opal_data_type_t)    8 
  76 #define    OPAL_INT32               (opal_data_type_t)    9 
  77 #define    OPAL_INT64               (opal_data_type_t)   10 
  78     
  79 #define    OPAL_UINT                (opal_data_type_t)   11 
  80 #define    OPAL_UINT8               (opal_data_type_t)   12 
  81 #define    OPAL_UINT16              (opal_data_type_t)   13 
  82 #define    OPAL_UINT32              (opal_data_type_t)   14 
  83 #define    OPAL_UINT64              (opal_data_type_t)   15 
  84     
  85 #define    OPAL_FLOAT               (opal_data_type_t)   16
  86 #define    OPAL_DOUBLE              (opal_data_type_t)   17
  87     
  88 #define    OPAL_TIMEVAL             (opal_data_type_t)   18
  89 #define    OPAL_TIME                (opal_data_type_t)   19
  90     
  91 #define    OPAL_BYTE_OBJECT         (opal_data_type_t)   20 
  92 #define    OPAL_DATA_TYPE           (opal_data_type_t)   21 
  93 #define    OPAL_NULL                (opal_data_type_t)   22 
  94 #define    OPAL_PSTAT               (opal_data_type_t)   23 
  95 #define    OPAL_NODE_STAT           (opal_data_type_t)   24 
  96 #define    OPAL_HWLOC_TOPO          (opal_data_type_t)   25 
  97 #define    OPAL_VALUE               (opal_data_type_t)   26 
  98 #define    OPAL_BUFFER              (opal_data_type_t)   27 
  99 #define    OPAL_PTR                 (opal_data_type_t)   28 
 100 #define    OPAL_NAME                (opal_data_type_t)   29
 101 #define    OPAL_JOBID               (opal_data_type_t)   30
 102 #define    OPAL_VPID                (opal_data_type_t)   31
 103 #define    OPAL_STATUS              (opal_data_type_t)   32
 104 #define    OPAL_PERSIST             (opal_data_type_t)   33 
 105 #define    OPAL_SCOPE               (opal_data_type_t)   34 
 106 #define    OPAL_DATA_RANGE          (opal_data_type_t)   35 
 107 #define    OPAL_INFO_DIRECTIVES     (opal_data_type_t)   36 
 108 #define    OPAL_PROC_STATE          (opal_data_type_t)   37 
 109 #define    OPAL_PROC_INFO           (opal_data_type_t)   38 
 110 #define    OPAL_ENVAR               (opal_data_type_t)   39 
 111 
 112     
 113 #define    OPAL_DSS_ID_DYNAMIC      (opal_data_type_t)  100
 114 
 115 
 116 #define OPAL_VALUE1_GREATER  +1
 117 #define OPAL_VALUE2_GREATER  -1
 118 #define OPAL_EQUAL            0
 119 
 120 
 121 
 122 typedef int opal_status_t;
 123 typedef uint32_t opal_proc_state_t;
 124 
 125 
 126 typedef struct {
 127     opal_list_item_t super;
 128     opal_process_name_t name;
 129     char *hostname;
 130     char *executable_name;
 131     pid_t pid;
 132     opal_status_t exit_code;
 133     opal_proc_state_t state;
 134 } opal_proc_info_t;
 135 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_proc_info_t);
 136 
 137 
 138 typedef struct {
 139     opal_list_item_t super;
 140     char *envar;
 141     char *value;
 142     char separator;
 143 } opal_envar_t;
 144 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_envar_t);
 145 
 146 
 147 typedef struct {
 148     opal_list_item_t super;             
 149     char *key;                          
 150     opal_data_type_t type;              
 151     union {
 152         bool flag;
 153         uint8_t byte;
 154         char *string;
 155         size_t size;
 156         pid_t pid;
 157         int integer;
 158         int8_t int8;
 159         int16_t int16;
 160         int32_t int32;
 161         int64_t int64;
 162         unsigned int uint;
 163         uint8_t uint8;
 164         uint16_t uint16;
 165         uint32_t uint32;
 166         uint64_t uint64;
 167         opal_byte_object_t bo;
 168         float fval;
 169         double dval;
 170         struct timeval tv;
 171         time_t time;
 172         opal_status_t status;
 173         opal_process_name_t name;
 174         opal_proc_info_t pinfo;
 175         void *ptr;  
 176         opal_envar_t envar;
 177     } data;
 178 } opal_value_t;
 179 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_value_t);
 180 
 181 
 182 #define OPAL_PSTAT_MAX_STRING_LEN   32
 183 typedef struct {
 184     opal_list_item_t super;                
 185     
 186     char node[OPAL_PSTAT_MAX_STRING_LEN];
 187     int32_t rank;
 188     pid_t pid;
 189     char cmd[OPAL_PSTAT_MAX_STRING_LEN];
 190     
 191     char state[2];
 192     struct timeval time;
 193     float percent_cpu;
 194     int32_t priority;
 195     int16_t num_threads;
 196     float pss;   
 197     float vsize;  
 198     float rss;  
 199     float peak_vsize;  
 200     int16_t processor;
 201     
 202     struct timeval sample_time;
 203 } opal_pstats_t;
 204 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_pstats_t);
 205 typedef struct {
 206     opal_list_item_t super;
 207     char *disk;
 208     unsigned long num_reads_completed;
 209     unsigned long num_reads_merged;
 210     unsigned long num_sectors_read;
 211     unsigned long milliseconds_reading;
 212     unsigned long num_writes_completed;
 213     unsigned long num_writes_merged;
 214     unsigned long num_sectors_written;
 215     unsigned long milliseconds_writing;
 216     unsigned long num_ios_in_progress;
 217     unsigned long milliseconds_io;
 218     unsigned long weighted_milliseconds_io;
 219 } opal_diskstats_t;
 220 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_diskstats_t);
 221 typedef struct {
 222     opal_list_item_t super;
 223     char *net_interface;
 224     unsigned long num_bytes_recvd;
 225     unsigned long num_packets_recvd;
 226     unsigned long num_recv_errs;
 227     unsigned long num_bytes_sent;
 228     unsigned long num_packets_sent;
 229     unsigned long num_send_errs;
 230 } opal_netstats_t;
 231 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_netstats_t);
 232 typedef struct {
 233     opal_object_t super;
 234     
 235     float la;
 236     float la5;
 237     float la15;
 238     
 239     float total_mem;  
 240     float free_mem;  
 241     float buffers;  
 242     float cached;   
 243     float swap_cached;  
 244     float swap_total;   
 245     float swap_free;    
 246     float mapped;       
 247     
 248     struct timeval sample_time;
 249     
 250     opal_list_t diskstats;
 251     
 252     opal_list_t netstats;
 253 
 254 } opal_node_stats_t;
 255 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_node_stats_t);
 256 
 257 
 258 #define OPAL_DSS_STRUCTURED     true
 259 #define OPAL_DSS_UNSTRUCTURED   false
 260 
 261 
 262 
 263 
 264 enum opal_dss_buffer_type_t {
 265     OPAL_DSS_BUFFER_NON_DESC   = 0x00,
 266     OPAL_DSS_BUFFER_FULLY_DESC = 0x01
 267 };
 268 
 269 typedef enum opal_dss_buffer_type_t opal_dss_buffer_type_t;
 270 
 271 #define OPAL_DSS_BUFFER_TYPE_HTON(h);
 272 #define OPAL_DSS_BUFFER_TYPE_NTOH(h);
 273 
 274 
 275 
 276 
 277 
 278 struct opal_buffer_t {
 279     
 280     opal_object_t parent;
 281     
 282     opal_dss_buffer_type_t type;
 283     
 284     char *base_ptr;
 285     
 286 
 287     char *pack_ptr;
 288     
 289 
 290     char *unpack_ptr;
 291 
 292     
 293     size_t bytes_allocated;
 294     
 295 
 296     size_t bytes_used;
 297 };
 298 
 299 
 300 
 301 typedef struct opal_buffer_t opal_buffer_t;
 302 
 303 
 304 OPAL_DECLSPEC OBJ_CLASS_DECLARATION (opal_buffer_t);
 305 
 306 END_C_DECLS
 307 
 308 #endif