How does one determine the number of rings available to the system, or how many have been allocated; also, is there a way to determine which are in use? I would suspect, considering this is mostly just the Simple Count App that only 0-3 should be in use. Najati
On Sat, 26 Jul 2003, Najati Imam wrote:
How does one determine the number of rings available to the system, or how many have been allocated; also, is there a way to determine which are in use? I would suspect, considering this is mostly just the Simple Count App that only 0-3 should be in use.
Najati
Najati, This part is probably not documented, so the best way is to go look at the source code. The RM creates 32 rings (compile-time constant), out of which 4 are used for output rings (one for each port on the bridalveil), and for slowport configuration, 2 are used to communicate between the ingress ME and Core, and 1 is used to communicate between the egress ME and the Core. Ring numbers starting from 0 are used for the ports, while ME<->Core rings are allocated in the reverse direction from 31 downwards. Hence 0,1,2,3 would be the port rings and 29,30,31 would be the Me<->core rings. The rest are unused, however they would be allocated if there were more ports in the system or more MicroAces which would need some Me<->core rings. If you create your own Microaces which need a ring to communicate between the core part and the microblock, then you can modify RM to allocate some rings from the 32 rings above for your microace. For example, if you run your own microAce apart from ingress and egress on a different microengine, you could allocate ring numbers 27 and 28 for core<->me communication. (Note how core<->me rings are allocated from 31 down, while ports rings are allocated from 0 upwards) If you want to create ME<->ME rings, you could create these rings in the core component of your MicroAce,(independent of the RM rings) and then patch the ring's meta information base and data base in the microcode which enqueues/dequeues packets from the ring. As reference code for how to create your own rings, you could see how the RM does it in ring.c file. -- abhijeet
Good deal, the one bit of information I was missing was where the core-me rings were. Right now I'm not actually playing the ACE game, I've just been abusing the Simple Count Application. The only thing I needed from the system is ingress and egress and a way to get packets to my own microengines. I use the ingress ACE's ix_init to load my microcode images and patch their variables manually and use rings 8-23 to get packets to them. I was just hoping I wasn't mucking with anything, but now I'm pretty confident in my hack. Anyways, thanks for the info. Najati
participants (2)
-
Abhijeet Joglekar
-
Najati Imam