This source file includes following definitions.
- mca_base_component_compare_priority
- mca_base_component_compare
- mca_base_component_compatible
- mca_base_component_to_string
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 #include "opal_config.h"
  21 
  22 #include <string.h>
  23 
  24 #include "opal/mca/mca.h"
  25 #include "opal/mca/base/base.h"
  26 #include "opal/util/printf.h"
  27 
  28 
  29 
  30 
  31 
  32 
  33 
  34 
  35 
  36 
  37 
  38 
  39 
  40 int
  41 mca_base_component_compare_priority(mca_base_component_priority_list_item_t *a,
  42                                     mca_base_component_priority_list_item_t *b)
  43 {
  44   
  45 
  46   if (a->cpli_priority > b->cpli_priority) {
  47     return -1;
  48   } else if (a->cpli_priority < b->cpli_priority) {
  49     return 1;
  50   } else {
  51     return mca_base_component_compare(a->super.cli_component,
  52                                       b->super.cli_component);
  53   }
  54 }
  55 
  56 
  57 int mca_base_component_compare(const mca_base_component_t* aa,
  58                                const mca_base_component_t* bb)
  59 {
  60     int val;
  61 
  62     val = strncmp(aa->mca_type_name, bb->mca_type_name,
  63                   MCA_BASE_MAX_TYPE_NAME_LEN);
  64     if (val != 0) {
  65       return -val;
  66     }
  67 
  68     val = strncmp(aa->mca_component_name, bb->mca_component_name,
  69                       MCA_BASE_MAX_COMPONENT_NAME_LEN);
  70     if (val != 0) {
  71       return -val;
  72     }
  73 
  74     
  75 
  76     if (aa->mca_component_major_version >
  77         bb->mca_component_major_version) {
  78       return -1;
  79     } else if (aa->mca_component_major_version <
  80                bb->mca_component_major_version) {
  81       return 1;
  82     } else if (aa->mca_component_minor_version >
  83                bb->mca_component_minor_version) {
  84       return -1;
  85     } else if (aa->mca_component_minor_version <
  86                bb->mca_component_minor_version) {
  87       return 1;
  88     } else if (aa->mca_component_release_version >
  89                bb->mca_component_release_version) {
  90       return -1;
  91     } else if (aa->mca_component_release_version <
  92                bb->mca_component_release_version) {
  93       return 1;
  94     }
  95 
  96     return 0;
  97 }
  98 
  99 
 100 
 101 
 102 
 103 
 104 int mca_base_component_compatible(
 105     const mca_base_component_t* aa,
 106     const mca_base_component_t* bb)
 107 {
 108     int val;
 109 
 110     val = strncmp(aa->mca_type_name, bb->mca_type_name,
 111                   MCA_BASE_MAX_TYPE_NAME_LEN);
 112     if (val != 0) {
 113       return -val;
 114     }
 115 
 116     val = strncmp(aa->mca_component_name, bb->mca_component_name,
 117                   MCA_BASE_MAX_COMPONENT_NAME_LEN);
 118     if (val != 0) {
 119       return -val;
 120     }
 121 
 122     
 123 
 124     if (aa->mca_component_major_version >
 125         bb->mca_component_major_version) {
 126       return -1;
 127     } else if (aa->mca_component_major_version <
 128                bb->mca_component_major_version) {
 129       return 1;
 130     } else if (aa->mca_component_minor_version >
 131                bb->mca_component_minor_version) {
 132       return -1;
 133     } else if (aa->mca_component_minor_version <
 134                bb->mca_component_minor_version) {
 135       return 1;
 136     }
 137     return 0;
 138 }
 139 
 140 
 141 
 142 
 143 
 144 char * mca_base_component_to_string(const mca_base_component_t *a) {
 145     char * str = NULL;
 146     if(0 > opal_asprintf(&str, "%s.%s.%d.%d", a->mca_type_name,
 147                     a->mca_component_name, a->mca_component_major_version,
 148                     a->mca_component_minor_version)) {
 149         return NULL;
 150     }
 151     return str;
 152 }
 153