Dear All, I'm reading the ATS code now,
there are 2 variables: "signalled" and "wbe_event", the comment: "signalled means we won't send an event" {code} } else if (signalled && (wbe_event != vc->write_buffer_empty_event)) { // @a signalled means we won't send an event, and the event values differing means we // had a write buffer trap and cleared it, so we need to send it now. if (write_signal_and_update(wbe_event, vc) != EVENT_CONT) return; {code} but the variable "signalled" is set to 1 after send a VC_EVENT_WRITE_READY event: {code} if (towrite != ntodo && buf.writer()->write_avail()) { if (write_signal_and_update(VC_EVENT_WRITE_READY, vc) != EVENT_CONT) { return; } ntodo = s->vio.ntodo(); if (ntodo <= 0) { write_disable(nh, vc); return; } signalled = 1; // Recalculate amount to write towrite = buf.reader()->read_avail(); if (towrite > ntodo) towrite = ntodo; } {code} that is means we have sent an event if signalled == 1, that conflicted with the wbe_event comments. I was wondering whether the comments is wrong or the code “if (signalled && ..." should be "if (!signalled && ...". Thanks! Oknet Xu