| Index |   | Chan-0 | Chan-1 | Chan-Nchan | |
| 0 | evt_done | addr[0] next_addr[0] wrdcnt[0] ovfl[0] |
addr[1] next_addr[1] wrdcnt[1] ovfl[1] |
... | addr[Nchan-1] next_addr[Nchan-1] wrdcnt[Nchan-1] ovfl[Nchan-1] |
| 1 | evt_done | addr[0] next_addr[0] wrdcnt[0] ovfl[0] |
addr[1] next_addr[1] wrdcnt[1] ovfl[1] |
... | addr[Nchan-1] next_addr[Nchan-1] wrdcnt[Nchan-1] ovfl[Nchan-1] |
| ... | ... | ... | ... | ... | |
| Nbind-1 | evt_done | addr[0] next_addr[0] wrdcnt[0] ovfl[0] |
addr[1] next_addr[1] wrdcnt[1] ovfl[1] |
... | addr[Nchan-1] next_addr[Nchan-1] wrdcnt[Nchan-1] ovfl[Nchan-1] |
| Nbind | Number of indices to buffered events (buffer depth) |
| evt_done | =0: free buffer =1: some channels filled =2: all channels filled (evt complete) |
| addr[ichan] | Address of start of data in memory for this buffer |
| next_addr[ichan] | Address for next write to this buffer |
| wrdcnt[ichan] | Number of words stored in this buffer |
| ovfl[ichan] | =0: no overflow =1: previous block to buffer flagged w/ overflow bit |
struct Buffer_Info{
int Nbind;
int evt_done;
int addr[N_CHAN_MAX];
int next_addr[N_CHAN_MAX];
int wrdcnt[N_CHAN_MAX];
int ovfl[N_CHAN_MAX];
};
struct Buffer_Info buff_ptrs[N_BUFF_MAX];