12d2a3ad8SAndrii Nakryiko // SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) 22d2a3ad8SAndrii Nakryiko 32d2a3ad8SAndrii Nakryiko /* 42d2a3ad8SAndrii Nakryiko * BTF-to-C dumper test for topological sorting of dependent structs. 52d2a3ad8SAndrii Nakryiko * 62d2a3ad8SAndrii Nakryiko * Copyright (c) 2019 Facebook 72d2a3ad8SAndrii Nakryiko */ 82d2a3ad8SAndrii Nakryiko /* ----- START-EXPECTED-OUTPUT ----- */ 92d2a3ad8SAndrii Nakryiko struct s1 {}; 102d2a3ad8SAndrii Nakryiko 112d2a3ad8SAndrii Nakryiko struct s3; 122d2a3ad8SAndrii Nakryiko 132d2a3ad8SAndrii Nakryiko struct s4; 142d2a3ad8SAndrii Nakryiko 152d2a3ad8SAndrii Nakryiko struct s2 { 162d2a3ad8SAndrii Nakryiko struct s2 *s2; 172d2a3ad8SAndrii Nakryiko struct s3 *s3; 182d2a3ad8SAndrii Nakryiko struct s4 *s4; 192d2a3ad8SAndrii Nakryiko }; 202d2a3ad8SAndrii Nakryiko 212d2a3ad8SAndrii Nakryiko struct s3 { 222d2a3ad8SAndrii Nakryiko struct s1 s1; 232d2a3ad8SAndrii Nakryiko struct s2 s2; 242d2a3ad8SAndrii Nakryiko }; 252d2a3ad8SAndrii Nakryiko 262d2a3ad8SAndrii Nakryiko struct s4 { 272d2a3ad8SAndrii Nakryiko struct s1 s1; 282d2a3ad8SAndrii Nakryiko struct s3 s3; 292d2a3ad8SAndrii Nakryiko }; 302d2a3ad8SAndrii Nakryiko 312d2a3ad8SAndrii Nakryiko struct list_head { 322d2a3ad8SAndrii Nakryiko struct list_head *next; 332d2a3ad8SAndrii Nakryiko struct list_head *prev; 342d2a3ad8SAndrii Nakryiko }; 352d2a3ad8SAndrii Nakryiko 362d2a3ad8SAndrii Nakryiko struct hlist_node { 372d2a3ad8SAndrii Nakryiko struct hlist_node *next; 382d2a3ad8SAndrii Nakryiko struct hlist_node **pprev; 392d2a3ad8SAndrii Nakryiko }; 402d2a3ad8SAndrii Nakryiko 412d2a3ad8SAndrii Nakryiko struct hlist_head { 422d2a3ad8SAndrii Nakryiko struct hlist_node *first; 432d2a3ad8SAndrii Nakryiko }; 442d2a3ad8SAndrii Nakryiko 452d2a3ad8SAndrii Nakryiko struct callback_head { 462d2a3ad8SAndrii Nakryiko struct callback_head *next; 472d2a3ad8SAndrii Nakryiko void (*func)(struct callback_head *); 482d2a3ad8SAndrii Nakryiko }; 492d2a3ad8SAndrii Nakryiko 502d2a3ad8SAndrii Nakryiko struct root_struct { 512d2a3ad8SAndrii Nakryiko struct s4 s4; 522d2a3ad8SAndrii Nakryiko struct list_head l; 532d2a3ad8SAndrii Nakryiko struct hlist_node n; 542d2a3ad8SAndrii Nakryiko struct hlist_head h; 552d2a3ad8SAndrii Nakryiko struct callback_head cb; 562d2a3ad8SAndrii Nakryiko }; 572d2a3ad8SAndrii Nakryiko 582d2a3ad8SAndrii Nakryiko /*------ END-EXPECTED-OUTPUT ------ */ 592d2a3ad8SAndrii Nakryiko f(struct root_struct * root)602d2a3ad8SAndrii Nakryikoint f(struct root_struct *root) 612d2a3ad8SAndrii Nakryiko { 622d2a3ad8SAndrii Nakryiko return 0; 632d2a3ad8SAndrii Nakryiko } 64