#include #include int main() { struct req { int pri, rqr; LIST_ENTRY(req) by_pri; LIST_ENTRY(req) by_rqr; }; LIST_HEAD(reql, req); struct reql reqs_pri_global; struct reql reqs_rqr_42; struct reql reqs_rqr_17; struct reql reqs_rqr_99; LIST_INIT(&reqs_pri_global); LIST_INIT(&reqs_rqr_42); LIST_INIT(&reqs_rqr_17); LIST_INIT(&reqs_rqr_99); struct req r42a = {1, 42}, r42b = {2, 42}, r17a = {2, 17}, r17b = {3, 17}, r17c = {4, 17}, r99a = {3, 99}; LIST_INSERT_HEAD(&reqs_pri_global, &r17c, by_pri); LIST_INSERT_HEAD(&reqs_pri_global, &r99a, by_pri); LIST_INSERT_HEAD(&reqs_pri_global, &r17b, by_pri); LIST_INSERT_HEAD(&reqs_pri_global, &r42b, by_pri); LIST_INSERT_HEAD(&reqs_pri_global, &r17a, by_pri); LIST_INSERT_HEAD(&reqs_pri_global, &r42a, by_pri); LIST_INSERT_HEAD(&reqs_rqr_42, &r42b, by_rqr); LIST_INSERT_HEAD(&reqs_rqr_42, &r42a, by_rqr); LIST_INSERT_HEAD(&reqs_rqr_17, &r17c, by_rqr); LIST_INSERT_HEAD(&reqs_rqr_17, &r17b, by_rqr); LIST_INSERT_HEAD(&reqs_rqr_17, &r17a, by_rqr); LIST_INSERT_HEAD(&reqs_rqr_99, &r99a, by_rqr); struct req *cur; LIST_FOREACH(cur, &reqs_pri_global, by_pri) printf("{%d %d} ", cur->pri, cur->rqr); printf("| "); LIST_FOREACH(cur, &reqs_rqr_42, by_rqr) printf("{%d %d} ", cur->pri, cur->rqr); printf("| "); LIST_FOREACH(cur, &reqs_rqr_17, by_rqr) printf("{%d %d} ", cur->pri, cur->rqr); printf("| "); LIST_FOREACH(cur, &reqs_rqr_99, by_rqr) printf("{%d %d} ", cur->pri, cur->rqr); printf("\n"); }