> Basically, we have ev_push() and ev_pop(), that is all. I don't mean it's hard to understand what the code does. It's clear enough that it's a simple ring buffer scheme.
But just having that extra data structure is extra complexity and storage even so. It's quite overly general for what is really needed. > We need to record the values for task->exit_code and task->ptrace_message > at least. _Perhaps_, we also need to record the bit from context->options, > I am not sure. Do you really need to store more than one ptrace_message word? I don't think so. Let's think about the cases. Where is there a "stacked" event that has a message word? I think that's only PTRACE_EVENT_VFORK_DONE. Its message word is the child's PID, which is the same word set previously by the PTRACE_EVENT_VFORK report. (If there is no PTRACE_EVENT_VFORK stop requested, then you can just store that word anyway so it's there in case of PTRACE_EVENT_VFORK_DONE later.) Why do you think you might need to record any option bits? The past state of option bits should not matter. > Yes, this is mostly simple. But probably sometimes we need some fixups > when chane the state. Again, I am not sure, dind't sleep today. I got your message last night but decided to sleep before replying. :-) Thanks, Roland