This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

IPC: Notify_registerEvent() Parameters

Expert 2430 points

The documentation is extraordinarily generic on this.

When registering an event, one has to specify a line ID and an event ID.  First, for a C6474, line ID will always be 0, right?  The documentation is not specific about which interrupt line it is using (it's certainly not zero as it is being set since that is the reset vector, so it must be something else).

Also, how can I found out which event IDs are reserved?  It's not documented, so the only way I can tell now is try something and see if it generates an exception at runtime.  Is this event ID literally a interrupt event ID of the processor?  If the answer to that is yes, then I take back my claim about it not being documented. :-)

 

Edit:  And while on the subject, how do I configure the interrupt vector it uses?  (It defaults to INT5.)

  • Alex,

    Line ID is always 0 for C6474.  The idea is that you're supposed to be able to use IPC without having to know what interrupt to plug.  If you want to know what GEM interrupt event is associated with IPC you can checkout the datasheet specs for that particular device.  The interrupt vector is something that you can modify.  The default is vector 5.

    When you say "event IDs are reserved"?  I assume you are talking about Notify Event ID's?  NameServer uses eventId 4 and MessageQ uses eventId 2 by default.  These are configurable.  If these are documented well, I'll try to see if I can get that to change.  Thanks!

    Notify Event ID are not interrupt event ID.

    Judah

     

  • It's good event IDs are generic tokens rather than linked to specific H/W events.  That's what I originally assumed, but then I ran into that exception about the ID being reserved.  (It was set to zero.)  So I went to look for what values were reserved so I would be using different IDs, but I couldn't find a list anywhere.

    So 0, 2, and 4 are reserved... know of any others?  Scratch that.  As I have 16-bits to play with, can I at least assume that BIOS/IPC/AnythingTI won't using anything with the upper bit set, i.e., >= 0x8000?

  • Alex,

    I would just pick something between 5-10.  I wouldn't pick very large ID numbers since that can have an effect on the size.

    If you look at the IPC user's guide, I believe there's a section on mimizing IPC size and having a small number of notify events reduces data footprint.

    Judah

  • Unfortunately, I have many, many more events than that I will have to signal throughout the process, maybe on the order of 30-40 depending on my load balancing.  The other alternative is messaging, but that's way overkill since there really isn't much data involved in these notifications.  (I'm already handling the major data exchange in other subsystem:  SRIO, EDMA, and semaphores for synchronization.)

    Anyway, thanks.