示例#1
0
char *MAcctShow(

    mgcred_t *A, /* I */
    char *Buf,   /* O */
    long *BufSize, long Mode)

{
    static char Line[MAX_MLINE];

    char FlagLine[MAX_MLINE];

    char QALLine[MAX_MLINE];
    char QALChar;

    char ALLine[MAX_MLINE];

    char *ptr;

    const char *FName = "MAcctShow";

    DBG(3, fUI)
    DPrint("%s(%s,Buf,BufSize,%ld)\n", FName, (A != NULL) ? A->Name : "NULL",
           Mode);

    ptr = (Buf != NULL) ? Buf : Line;

    if (A == NULL) {
        /* build header */

        /*            NAME PRI FLAG QDEF QLST * PLST TRG LIMITS */

        sprintf(ptr, "%-12s %8s %12s %12s %12s%s %20s %6s %7s\n\n", "Name",
                "Priority", "Flags", "QDef", "QOSList", "*", "PartitionList",
                "Target", "Limits");
    } else {
        /* build job info line */

        MUBMToString(A->F.JobFlags, MJobFlags, ':', FlagLine, NONE);

        MUStrCpy(QALLine, MQOSBMToString(A->F.QAL), sizeof(QALLine));

        if (A->F.QALType == qalAND)
            QALChar = '&';
        else if (A->F.QALType == qalONLY)
            QALChar = '^';
        else
            QALChar = ' ';

        MUStrCpy(ALLine, MCredShowAttrs(&A->L.AP, A->L.IP, NULL, NULL, NULL,
                                        &A->F, 0, (1 << mcsLimits)),
                 sizeof(ALLine));

        /*            NAME PRIO FLAG QDEF QLST * PLST FSTARG LIMITS */

        sprintf(
            ptr, "%-12s %8ld %12s %12s %12s%c %20s %6.2lf %7s\n", A->Name,
            A->F.Priority, FlagLine,
            ((mqos_t *)A->F.QDef) != NULL ? ((mqos_t *)A->F.QDef)->Name : NONE,
            (QALLine[0] != '\0') ? QALLine : NONE, QALChar,
            (A->F.PAL[0] == 0) ? NONE : MUListAttrs(ePartition, A->F.PAL[0]),
            A->F.FSTarget, (ALLine[0] != '\0') ? ALLine : NONE);
    } /* END else (A == NULL) */

    return (ptr);
} /* END MAcctShow() */
示例#2
0
文件: MGroup.c 项目: hocks/TSCC
char *MGroupShow(

    mgcred_t *G,        /* I */
    char     *SBuffer,  /* O (optional) */
    long     *SBufSize, /* I */
    long      Mode)     /* I */

{
    static char Line[MAX_MLINE];

    char FlagLine[MAX_MLINE];

    char QALLine[MAX_MLINE];
    char QALChar;

    char GLLine[MAX_MLINE];

    char *Head;

    char *BPtr;
    int   BSpace;

    const char *FName = "MGroupShow";

    DBG(3,fUI) DPrint("%s(%s,Buf,BufSize,%ld)\n",
                      FName,
                      (G != NULL) ? G->Name : "NULL",
                      Mode);

    if (SBuffer != NULL)
    {
        BPtr   = SBuffer;
        BSpace = *SBufSize;
    }
    else
    {
        BPtr   = Line;
        BSpace = sizeof(Line);
    }

    BPtr[0] = '\0';

    Head = BPtr;

    if (G == NULL)
    {
        /* build header */

        /*            NAME PRI FLAG QDEF QLST * PLST TRG LIMITS */

        MUSNPrintF(&BPtr,&BSpace,"%-12s %8s %12s %12s %12s%s %20s %6s %7s\n\n",
                   "Name",
                   "Priority",
                   "Flags",
                   "QDef",
                   "QOSList",
                   "*",
                   "PartitionList",
                   "Target",
                   "Limits");
    }
    else
    {
        /* build job info line */

        MUBMToString(G->F.JobFlags,MJobFlags,':',FlagLine,NONE);

        MUStrCpy(QALLine,MQOSBMToString(G->F.QAL),sizeof(QALLine));

        if (G->F.QALType == qalAND)
            QALChar = '&';
        else if (G->F.QALType == qalONLY)
            QALChar = '^';
        else
            QALChar = ' ';

        MUStrCpy(GLLine,
                 MCredShowAttrs(&G->L.AP,G->L.IP,NULL,NULL,NULL,&G->F,0,(1 << mcsLimits)),sizeof(GLLine));

        /*            NAME PRIO FLAG QDEF QLST * PLST FSTARG LIMITS */

        MUSNPrintF(&BPtr,&BSpace,"%-12s %8ld %12s %12s %12s%c %20s %6.2lf %7s\n",
                   G->Name,
                   G->F.Priority,
                   FlagLine,
                   ((mqos_t *)G->F.QDef) != NULL ?
                   ((mqos_t *)G->F.QDef)->Name  :
                   NONE,
                   (QALLine[0] != '\0') ? QALLine : NONE,
                   QALChar,
                   (G->F.PAL[0] == 0) ?
                   NONE :
                   MUListAttrs(ePartition,G->F.PAL[0]),
                   G->F.FSTarget,
                   (GLLine[0] != '\0') ? GLLine : NONE);

        /* add group attributes */

        if (G->L.APC != NULL)
        {
            int cindex;

            for (cindex = 0; cindex < MAX_MCLASS; cindex++)
            {
                if (G->L.APC[cindex].SLimit[mptMaxProc][0] > 0)
                {
                    MUSNPrintF(&BPtr,&BSpace,"  MAXPROC[CLASS:%s]=%d,%d\n",
                               MClass[cindex].Name,
                               G->L.APC[cindex].SLimit[mptMaxProc][0],
                               G->L.APC[cindex].HLimit[mptMaxProc][0]);
                }
            }  /* END for (cindex) */
        }    /* END if (G->L.APC != NULL) */

        if (G->L.APQ != NULL)
        {
            int cindex;

            for (cindex = 0; cindex < MAX_MQOS; cindex++)
            {
                if (G->L.APQ[cindex].SLimit[mptMaxProc][0] > 0)
                {
                    MUSNPrintF(&BPtr,&BSpace,"  MAXPROC[QOS:%s]=%d,%d\n",
                               MQOS[cindex].Name,
                               G->L.APQ[cindex].SLimit[mptMaxProc][0],
                               G->L.APQ[cindex].HLimit[mptMaxProc][0]);
                }
            }  /* END for (cindex) */
        }    /* END if (G->L.APQ != NULL) */

        if (Mode & (1 << mcmVerbose))
        {
            char tmpLine[MAX_MLINE];

            /* display additional attributes */

            MCredConfigLShow(
                (void *)G,
                mxoGroup,
                TRUE,
                -1,
                tmpLine);

            if (tmpLine[0] != '\0')
            {
                MUSNPrintF(&BPtr,&BSpace,"  %s\n",
                           tmpLine);
            }
        }    /* END if (Mode == Verbose) */
    }      /* END else (G == NULL) */

    return(Head);
}  /* END MGroupShow() */
示例#3
0
int MClassShow(

  mclass_t *CP,       /* I */
  char     *SBuffer,  /* O */
  long     *SBufSize, /* O */
  int       DMode)    /* I */
 
  {
  int       cindex;
  int       aindex;

  char      tmpLine[MAX_MLINE];
 
  char      tmpQALString[MAX_MLINE];
  char      tmpLString[MAX_MLINE];
 
  int       findex;
 
  char      QALChar;
 
  mclass_t *C;

  int ClAList[] = {
    mclaOCNode,
    mclaOCDProcFactor,
    mclaDefReqFeature,
    mclaMaxProcPerNode,
    mclaWCOverrun,
    -1 };

  int CAList[] = {
    mcaMaxProcPerUser,
    mcaMaxNodePerUser,
    mcaDefWCLimit,
    mcaMaxWCLimit,
    mcaMaxNodePerJob,
    mcaMaxProcPerJob,
    mcaMaxJobPerUser,
    -1 };

  char     *BPtr;
  int       BSpace;

  const char *FName = "MClassShow";

  DBG(3,fUI) DPrint("%s(%s,SBuffer,SBufSize,%d)\n",
    FName,
    (CP != NULL) ? CP->Name : "NULL",
    DMode);

  if (SBuffer == NULL)
    {
    return(FAILURE);
    }

  BPtr   =  SBuffer;
  BSpace = *SBufSize;

  MUSNPrintF(&BPtr,&BSpace,"Class/Queue Status\n\n");
 
  /*                        NAME PRI  FLAG  QDEF  QLST M PLST  FST  Limits */

  MUSNPrintF(&BPtr,&BSpace,"%-14s %-8s %-12s %-12s %12s%c %-20s %-6s %s\n\n",
    "Name",
    "Priority",
    "Flags",
    "QDef",
    "QOSList",
    '*',
    "PartitionList",
    "Target",
    "Limits");
 
  for (cindex = 0;cindex < MAX_MCLASS;cindex++)
    {
    C = &MClass[cindex];
 
    DBG(8,fUI) DPrint("INFO:     checking MClass[%02d]: %s\n",
      cindex,
      C->Name);
 
    if (C->Name[0] == '\0')
      continue;

    if (!strcmp(C->Name,NONE) || !strcmp(C->Name,ALL))
      continue;

    if ((CP != NULL) && (strcmp(CP->Name,NONE) != 0) && (C != CP))
      continue;
 
    tmpLine[0] = '\0';
 
    for (findex = 0;MJobFlags[findex] != NULL;findex++)
      {
      if (!(C->F.JobFlags & (1 << findex)))
        continue;
 
      if (tmpLine[0] != '\0')
        strcat(tmpLine,":");
 
      strcat(tmpLine,MJobFlags[findex]);
      }  /* END for (findex) */
 
    if (C->F.QALType == qalAND)
      QALChar = '&';
    else if (C->F.QALType == qalONLY)
      QALChar = '^';
    else
      QALChar = ' ';
 
    MUStrCpy(tmpQALString,MQOSBMToString(C->F.QAL),sizeof(tmpQALString));

    MUStrCpy(tmpLString,
      MCredShowAttrs(
        &C->L.AP,
        C->L.IP,
        NULL,
        NULL,
        NULL,
        &C->F,
        0,
        (1 << mcsLimits) | (1 << mcsUsage)),
        sizeof(tmpLString));
 
    /*                         NAME PRIO FLAG  QDEF  QLST M PLST  FSTARG Limits */
 
    MUSNPrintF(&BPtr,&BSpace,"%-14s %8ld %-12s %-12s %12s%c %-20s %5.2lf %7s\n",
      C->Name,
      C->F.Priority,
      (tmpLine[0] != '\0') ? tmpLine : NONE,
      ((mqos_t *)C->F.QDef) != NULL ?
        ((mqos_t *)C->F.QDef)->Name :
        NONE,
      (tmpQALString[0] != '\0') ? tmpQALString : NONE,
      QALChar,
      (C->F.PAL[0] == 0) ?
        NONE :
        MUListAttrs(ePartition,C->F.PAL[0]),
      C->F.FSTarget,
      (tmpLString[0] != '\0') ? tmpLString : NONE);

    /* list extended class attributes */

    tmpLine[0] = '\0';

    for (aindex = 0;ClAList[aindex] != -1;aindex++)
      {
      if ((MClassAToString(C,ClAList[aindex],tmpLString,mdfString,0) == SUCCESS) && 
          (tmpLString[0] != '\0') && 
           strcmp(tmpLString,NONE))
        {
        sprintf(&tmpLine[strlen(tmpLine)],"  %s=%s",
          MClassAttr[ClAList[aindex]],
          tmpLString);
        }
      }    /* END for (aindex) */

    /* list extended cred attributes */

    for (aindex = 0;CAList[aindex] != -1;aindex++)
      {
      if ((MCredAToString((void *)C,mxoClass,CAList[aindex],tmpLString,mdfString) == SUCCESS) &&
          (tmpLString[0] != '\0'))
        {
        sprintf(&tmpLine[strlen(tmpLine)],"  %s=%s",
          MCredAttr[CAList[aindex]],
          tmpLString);
        }
      }    /* END for (aindex) */

    if (tmpLine[0] != '\0')
      {
      MUStrNCat(&BPtr,&BSpace,tmpLine);
      MUStrNCat(&BPtr,&BSpace,"\n");
      }
    }  /* END for (cindex) */

  return(SUCCESS);
  }  /* END MClassShow() */