Please give the attached patch a look. Since you two didn't like the idea of a callback, I created an API to wait for an event and a second API to cancel the wait. Basically the application will be responsible for creating a thread which invokes the API. The API will block the application's thread until an event occurs. The application will be responsible for issuing a GET MESSAGE FLAGS command once the thread unblocks.
I had to use a semaphore to block the thread, so I made some small changes to ipmi-semaphores.c as well.
Note: this compiles, but I didn't try to run it
yet. My customer has not yet sent me the hardware with the KCS interface, so I don't have hardware to exercise the code.
Thanks again for your consideration,
-Matt