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(); }
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(); }