Ignore:
Timestamp:
Feb 3, 2014, 4:34:44 PM (11 years ago)
Author:
cfuguet
Message:

Modification on giet_xml parser and driver:

  • Introducing a new field on the mapping_info header which is used to store the number of IRQ per processor. This number must be declared on the header of all XML description files (irq_per_proc).
  • The number of channels of the ICU/XICU must be equal to the number of processors per cluster multiplied by the number of IRQ per processor (this is verified by the xml_parser).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/giet_xml/xml_parser.c

    r281 r287  
    115115unsigned int dma_channels     = 0; // max number of DMA channels (per cluster)
    116116
    117 unsigned int icu_channels     = 0; // total number of IRQ per processor
     117unsigned int icu_channels     = 0; // total number of channels  in ICU/XICU
    118118unsigned int tty_channels     = 0; // total number of terminals in TTY
    119119unsigned int hba_channels     = 0; // total number of channels  in HBA
     
    124124unsigned int use_xcu          = 0; // using XCU (not ICU)
    125125unsigned int use_hba          = 0; // using HBA
    126 
    127126
    128127////////////////////////////////////////////////////////////////
     
    20642063            }
    20652064
     2065            // the number of ICU channels must be NB_PROCS * irq_per_proc
     2066            if (icu_channels != (header->irq_per_proc * proc_loc_index))
     2067            {
     2068                printf("[XML ERROR] illegal ICU number of channels. "
     2069                       "It must be equal to NB_PROCS * IRQ_PER_PROC\n");
     2070                exit(1);
     2071            }
     2072
    20662073#if XML_PARSER_DEBUG
    20672074            printf("  end cluster set\n\n");
     
    22942301    {
    22952302        printf("[XML ERROR] illegal or missing <increment> attribute in mapping\n");
     2303        exit(1);
     2304    }
     2305
     2306    ///////// get increment attribute
     2307    value = getIntValue(reader, "irq_per_proc", &ok);
     2308    if (ok)
     2309    {
     2310#if XML_PARSER_DEBUG
     2311        printf("  irq_per_proc = %d\n", value);
     2312#endif
     2313        header->irq_per_proc = value;
     2314    }
     2315    else
     2316    {
     2317        printf("[XML ERROR] illegal or missing <irq_per_proc> attribute in mapping\n");
    22962318        exit(1);
    22972319    }
     
    25702592    file_write(fdout, "\n");
    25712593
    2572     def_int_write(fdout, "IRQ_PER_PROCESSOR ", icu_channels);
     2594    def_int_write(fdout, "IRQ_PER_PROCESSOR ", header->irq_per_proc);
    25732595
    25742596    file_write(fdout, epil);
Note: See TracChangeset for help on using the changeset viewer.