#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; struct reql reqs_rqr_42; struct reql reqs_rqr_17; struct reql reqs_rqr_99; LIST_INIT( &reqs_pri ); 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, &r17c, by_pri ); LIST_INSERT_HEAD( &reqs_pri, &r99a, by_pri ); LIST_INSERT_HEAD( &reqs_pri, &r17b, by_pri ); LIST_INSERT_HEAD( &reqs_pri, &r42b, by_pri ); LIST_INSERT_HEAD( &reqs_pri, &r17a, by_pri ); LIST_INSERT_HEAD( &reqs_pri, &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, 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" ); }