예제 #1
0
const c_char*
cmx_snapshotKind(
    const c_char* snapshot)
{
    c_char* copy;
    c_char* temp;
    c_char* saveptr;
    const c_char* result;

    result = NULL;

    if(snapshot != NULL){
        copy = (c_char*)(os_malloc(strlen(snapshot) + 1));
        os_strcpy(copy, snapshot);
        temp = os_strtok_r((c_char*)copy, "</>", &saveptr);    /*<xxxxxxSnapshot>*/

        if(temp != NULL){
            if(strcmp(temp, "readerSnapshot") == 0){
                result = "READERSNAPSHOT";
            } else if(strcmp(temp, "writerSnapshot") == 0){
                result = "WRITERSNAPSHOT";
            }
        }
        os_free(copy);
    }
    return result;
}
예제 #2
0
static c_iter
getCPUAffinities(cf_element root)
{
   c_iter affinities = NULL;
   cf_element domain;
   cf_element cpuAffinity;
   cf_data data;

   assert(root);

   if (root
       && (domain = (cf_element)cf_elementChild(root, "Domain")) )
   {
      cpuAffinity = cf_element(cf_elementChild(domain, CFG_CPUAFFINITY));
      if (cpuAffinity != NULL)
      {
         data = cf_data(cf_elementChild(cpuAffinity, "#text"));
         if (data != NULL)
         {
            char *saveptr;
            char *next;
            char *value;
            value = cf_dataValue(data).is.String;
            next = os_strtok_r(value, ",", &saveptr);
            while ( next != NULL )
            {
               signed int corenum;
               struct cpuAffinity *newCpuAffinity;
               sscanf( next, "%d", &corenum);
               newCpuAffinity = (struct cpuAffinity *)malloc (sizeof(struct cpuAffinity));
               newCpuAffinity->cpuNumber = corenum;
               affinities = c_iterInsert(affinities, newCpuAffinity);
               next = os_strtok_r(NULL, ",", &saveptr);
            }
         }
      }
   }
   return affinities;
}
예제 #3
0
cmx_readerSnapshot
cmx_readerSnapshotLookup(
    const c_char* snapshot)
{
    c_char* saveptr;
    c_char* copy;
    c_char* temp;
    cmx_readerSnapshot s;
    os_mutex m;

    s = NULL;

    if(snapshot != NULL){
        copy = (c_char*)(os_malloc(strlen(snapshot) + 1));
        if (copy != NULL){
            os_strcpy(copy, snapshot);
            temp = os_strtok_r((c_char*)copy, "</>", &saveptr);    /*<readerSnapshot>*/
            temp = os_strtok_r(NULL, "</>", &saveptr);             /*<id>*/
            temp = os_strtok_r(NULL, "</>", &saveptr);             /*... the pointer*/

            if(temp != NULL){
                (void)sscanf(temp, PA_ADDRFMT, (c_address *)(&s));

                m = cmx_getReaderSnapshotMutex();
                os_mutexLock(&m);

                if(c_iterContains(readerSnapshots, s) == FALSE){
                    s = NULL;
                }
                os_mutexUnlock(&m);
            }
            os_free(copy);
        }
    }
    return s;
}