Hi, I have the following scenario: Producer consumer model. The traced tasks are producers, and there is one consumer. Produces produce data in a buffer. If the buffer is full, the producer registers itself into a list (lock protected) and returns UTRACE_STOP. The consumer always checks the list and utrace_control(REPORT)s the producers (all of them). The monitoring callback is called again, and the producer produces what it should have in the first place.
This works well most of the time. Some times it would seem that utrace_control doesn't do it's job, and doesn't return an error either. I can observe this when there is a high pressure on the buffer, and it's almost full so the STOP / RESUME cycle happens often. What i would like to know, is how to go about clarifying this. First of all is my assumption correct that UTRACE_REPORT will always cause annother call to the monitoring callback? What other precautions should i take? If i am using utrace correctly how could i find the problem within it ? This problem leads to a deadlock in my model since the consumer goes to sleep relying on the producer to wake it up, that i turn never wakes up itself. Alpar Torok