1*2d2a3ad8SAndrii Nakryiko // SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) 2*2d2a3ad8SAndrii Nakryiko 3*2d2a3ad8SAndrii Nakryiko /* 4*2d2a3ad8SAndrii Nakryiko * BTF-to-C dumper test for topological sorting of dependent structs. 5*2d2a3ad8SAndrii Nakryiko * 6*2d2a3ad8SAndrii Nakryiko * Copyright (c) 2019 Facebook 7*2d2a3ad8SAndrii Nakryiko */ 8*2d2a3ad8SAndrii Nakryiko /* ----- START-EXPECTED-OUTPUT ----- */ 9*2d2a3ad8SAndrii Nakryiko struct s1 {}; 10*2d2a3ad8SAndrii Nakryiko 11*2d2a3ad8SAndrii Nakryiko struct s3; 12*2d2a3ad8SAndrii Nakryiko 13*2d2a3ad8SAndrii Nakryiko struct s4; 14*2d2a3ad8SAndrii Nakryiko 15*2d2a3ad8SAndrii Nakryiko struct s2 { 16*2d2a3ad8SAndrii Nakryiko struct s2 *s2; 17*2d2a3ad8SAndrii Nakryiko struct s3 *s3; 18*2d2a3ad8SAndrii Nakryiko struct s4 *s4; 19*2d2a3ad8SAndrii Nakryiko }; 20*2d2a3ad8SAndrii Nakryiko 21*2d2a3ad8SAndrii Nakryiko struct s3 { 22*2d2a3ad8SAndrii Nakryiko struct s1 s1; 23*2d2a3ad8SAndrii Nakryiko struct s2 s2; 24*2d2a3ad8SAndrii Nakryiko }; 25*2d2a3ad8SAndrii Nakryiko 26*2d2a3ad8SAndrii Nakryiko struct s4 { 27*2d2a3ad8SAndrii Nakryiko struct s1 s1; 28*2d2a3ad8SAndrii Nakryiko struct s3 s3; 29*2d2a3ad8SAndrii Nakryiko }; 30*2d2a3ad8SAndrii Nakryiko 31*2d2a3ad8SAndrii Nakryiko struct list_head { 32*2d2a3ad8SAndrii Nakryiko struct list_head *next; 33*2d2a3ad8SAndrii Nakryiko struct list_head *prev; 34*2d2a3ad8SAndrii Nakryiko }; 35*2d2a3ad8SAndrii Nakryiko 36*2d2a3ad8SAndrii Nakryiko struct hlist_node { 37*2d2a3ad8SAndrii Nakryiko struct hlist_node *next; 38*2d2a3ad8SAndrii Nakryiko struct hlist_node **pprev; 39*2d2a3ad8SAndrii Nakryiko }; 40*2d2a3ad8SAndrii Nakryiko 41*2d2a3ad8SAndrii Nakryiko struct hlist_head { 42*2d2a3ad8SAndrii Nakryiko struct hlist_node *first; 43*2d2a3ad8SAndrii Nakryiko }; 44*2d2a3ad8SAndrii Nakryiko 45*2d2a3ad8SAndrii Nakryiko struct callback_head { 46*2d2a3ad8SAndrii Nakryiko struct callback_head *next; 47*2d2a3ad8SAndrii Nakryiko void (*func)(struct callback_head *); 48*2d2a3ad8SAndrii Nakryiko }; 49*2d2a3ad8SAndrii Nakryiko 50*2d2a3ad8SAndrii Nakryiko struct root_struct { 51*2d2a3ad8SAndrii Nakryiko struct s4 s4; 52*2d2a3ad8SAndrii Nakryiko struct list_head l; 53*2d2a3ad8SAndrii Nakryiko struct hlist_node n; 54*2d2a3ad8SAndrii Nakryiko struct hlist_head h; 55*2d2a3ad8SAndrii Nakryiko struct callback_head cb; 56*2d2a3ad8SAndrii Nakryiko }; 57*2d2a3ad8SAndrii Nakryiko 58*2d2a3ad8SAndrii Nakryiko /*------ END-EXPECTED-OUTPUT ------ */ 59*2d2a3ad8SAndrii Nakryiko f(struct root_struct * root)60*2d2a3ad8SAndrii Nakryikoint f(struct root_struct *root) 61*2d2a3ad8SAndrii Nakryiko { 62*2d2a3ad8SAndrii Nakryiko return 0; 63*2d2a3ad8SAndrii Nakryiko } 64