#pragma QUIC typedef unsigned int uint; struct sconn { uint state; /* PERSISTENT to keep state counters correct */ uint unused; }; typedef struct sconn sconn_t; struct container { sconn_t* conn; int unused; }; typedef struct container container_t; #define STATE0 0 #define STATE1 1 #define STATE2 2 sconn_t global = {}; container_t get_data(){ container_t e = {.conn = &global}; return e; } void sink(sconn_t *conn){ ;; } void set (sconn_t *conn, uint state) { conn->state = state; } void set_and_2sched(sconn_t *conn, uint n){ set(conn, STATE0); sink(conn); if (n % 2) set(conn, STATE1); } void easyflow(sconn_t *conn, uint n) { if(n%2) set(conn, STATE2); set_and_2sched(conn, n); sink(conn); } void producer(uint n){ container_t c = get_data(); easyflow(c.conn, n); sink(c.conn); }