Exemple #1
0
        public GIC(int numberOfCPUs = 1, int itLinesNumber = 10)
        {
            this.numberOfCPUs = numberOfCPUs;
            this.itLinesNumber = itLinesNumber;
            var innerConnections = new Dictionary<int, IGPIO>();
            for(var i = 0; i < numberOfCPUs; i++)
            {
                innerConnections[i] = new GPIO();
            }
            Connections = new ReadOnlyDictionary<int, IGPIO>(innerConnections);

            privateInterrupts = new IRQState[numberOfCPUs][];
            for(var i = 0; i < privateInterrupts.Length; i++)
            {
                privateInterrupts[i] = new IRQState[32];
            }
            publicInterrupts = new IRQState[991];
            privatePriorities = new byte[numberOfCPUs][];
            for(var i = 0; i < privatePriorities.Length; i++)
            {
                privatePriorities[i] = new byte[32];
            }
            publicPriorities = new byte[991];
            runningPriorities = new byte[numberOfCPUs];
            priorityMasks = new byte[numberOfCPUs];
            enabled = new bool[numberOfCPUs];
            localReceivers = new LocalGPIOReceiver[numberOfCPUs];
            for(var i = 0; i < localReceivers.Length; i++)
            {
                localReceivers[i] = new LocalGPIOReceiver(i, this);
            }
            Reset();
        }
Exemple #2
0
        public GIC(int numberOfCPUs = 1, int itLinesNumber = 10)
        {
            this.numberOfCPUs  = numberOfCPUs;
            this.itLinesNumber = itLinesNumber;
            var innerConnections = new Dictionary <int, IGPIO>();

            for (var i = 0; i < numberOfCPUs; i++)
            {
                innerConnections[i] = new GPIO();
            }
            Connections = new ReadOnlyDictionary <int, IGPIO>(innerConnections);

            privateInterrupts = new IRQState[numberOfCPUs][];
            for (var i = 0; i < privateInterrupts.Length; i++)
            {
                privateInterrupts[i] = new IRQState[32];
            }
            publicInterrupts  = new IRQState[991];
            privatePriorities = new byte[numberOfCPUs][];
            for (var i = 0; i < privatePriorities.Length; i++)
            {
                privatePriorities[i] = new byte[32];
            }
            publicPriorities  = new byte[991];
            runningPriorities = new byte[numberOfCPUs];
            priorityMasks     = new byte[numberOfCPUs];
            enabled           = new bool[numberOfCPUs];
            localReceivers    = new LocalGPIOReceiver[numberOfCPUs];
            for (var i = 0; i < localReceivers.Length; i++)
            {
                localReceivers[i] = new LocalGPIOReceiver(i, this);
            }
            Reset();
        }