Lines Matching refs:header
42 dir->header.ctl_table[0].child = sysctl_mount_point; in set_empty_dir()
48 dir->header.ctl_table[0].child = NULL; in clear_empty_dir()
68 .default_set.dir.header = {
80 static void drop_sysctl_table(struct ctl_table_header *header);
84 static void put_links(struct ctl_table_header *header);
88 if (dir->header.parent) in sysctl_print_dir()
89 sysctl_print_dir(dir->header.parent); in sysctl_print_dir()
90 pr_cont("%s/", dir->header.ctl_table[0].procname); in sysctl_print_dir()
123 head = ctl_node->header; in find_entry()
157 parent_head = parent_node->header; in insert_entry()
204 node->header = head; in init_header()
215 static int insert_header(struct ctl_dir *dir, struct ctl_table_header *header) in insert_header() argument
221 if (is_empty_dir(&dir->header)) in insert_header()
225 if (header->ctl_table == sysctl_mount_point) { in insert_header()
231 dir->header.nreg++; in insert_header()
232 header->parent = dir; in insert_header()
233 err = insert_links(header); in insert_header()
236 for (entry = header->ctl_table; entry->procname; entry++) { in insert_header()
237 err = insert_entry(header, entry); in insert_header()
243 erase_header(header); in insert_header()
244 put_links(header); in insert_header()
246 if (header->ctl_table == sysctl_mount_point) in insert_header()
248 header->parent = NULL; in insert_header()
249 drop_sysctl_table(&dir->header); in insert_header()
390 if (use_table(ctl_node->header)) in first_usable_entry()
407 head = ctl_node->header; in first_entry()
427 head = ctl_node->header; in next_entry()
527 head = &sysctl_table_root.default_set.dir.header; in grab_header()
546 ctl_dir = container_of(head, struct ctl_dir, header); in proc_sys_lookup()
789 ctl_dir = container_of(head, struct ctl_dir, header); in proc_sys_readdir()
961 return container_of(head, struct ctl_dir, header); in find_subdir()
985 init_header(&new->header, set->dir.header.root, set, node, table); in new_dir()
1005 struct ctl_table_set *set = dir->header.set; in get_subdir()
1031 err = insert_header(dir, &new->header); in get_subdir()
1037 subdir->header.nreg++; in get_subdir()
1045 drop_sysctl_table(&dir->header); in get_subdir()
1047 drop_sysctl_table(&new->header); in get_subdir()
1056 if (!dir->header.parent) in xlate_dir()
1058 parent = xlate_dir(set, dir->header.parent); in xlate_dir()
1061 procname = dir->header.ctl_table[0].procname; in xlate_dir()
1199 init_header(links, dir->header.root, dir->header.set, node, link_table); in new_links()
1250 core_parent->header.nreg++; in insert_links()
1270 drop_sysctl_table(&core_parent->header); in insert_links()
1320 struct ctl_table_root *root = set->dir.header.root; in __register_sysctl_table()
1321 struct ctl_table_header *header; in __register_sysctl_table() local
1331 header = kzalloc(sizeof(struct ctl_table_header) + in __register_sysctl_table()
1333 if (!header) in __register_sysctl_table()
1336 node = (struct ctl_node *)(header + 1); in __register_sysctl_table()
1337 init_header(header, root, set, node, table); in __register_sysctl_table()
1344 dir->header.nreg++; in __register_sysctl_table()
1366 if (insert_header(dir, header)) in __register_sysctl_table()
1369 drop_sysctl_table(&dir->header); in __register_sysctl_table()
1372 return header; in __register_sysctl_table()
1375 drop_sysctl_table(&dir->header); in __register_sysctl_table()
1378 kfree(header); in __register_sysctl_table()
1469 struct ctl_table_header *header; in register_leaf_sysctl_tables() local
1470 header = __register_sysctl_table(set, path, files); in register_leaf_sysctl_tables()
1471 if (!header) { in register_leaf_sysctl_tables()
1477 header->ctl_table_arg = ctl_table_arg; in register_leaf_sysctl_tables()
1478 **subheader = header; in register_leaf_sysctl_tables()
1523 struct ctl_table_header *header = NULL, **subheaders, **subheader; in __register_sysctl_paths() local
1544 header = __register_sysctl_table(set, new_path, table); in __register_sysctl_paths()
1545 if (header) in __register_sysctl_paths()
1546 header->ctl_table_arg = ctl_table_arg; in __register_sysctl_paths()
1548 header = kzalloc(sizeof(*header) + in __register_sysctl_paths()
1550 if (!header) in __register_sysctl_paths()
1553 subheaders = (struct ctl_table_header **) (header + 1); in __register_sysctl_paths()
1555 header->ctl_table_arg = ctl_table_arg; in __register_sysctl_paths()
1564 return header; in __register_sysctl_paths()
1573 kfree(header); in __register_sysctl_paths()
1574 header = NULL; in __register_sysctl_paths()
1613 static void put_links(struct ctl_table_header *header) in put_links() argument
1616 struct ctl_table_root *root = header->root; in put_links()
1617 struct ctl_dir *parent = header->parent; in put_links()
1621 if (header->set == root_set) in put_links()
1628 for (entry = header->ctl_table; entry->procname; entry++) { in put_links()
1647 static void drop_sysctl_table(struct ctl_table_header *header) in drop_sysctl_table() argument
1649 struct ctl_dir *parent = header->parent; in drop_sysctl_table()
1651 if (--header->nreg) in drop_sysctl_table()
1655 put_links(header); in drop_sysctl_table()
1656 start_unregistering(header); in drop_sysctl_table()
1659 if (!--header->count) in drop_sysctl_table()
1660 kfree_rcu(header, rcu); in drop_sysctl_table()
1663 drop_sysctl_table(&parent->header); in drop_sysctl_table()
1673 void unregister_sysctl_table(struct ctl_table_header * header) in unregister_sysctl_table() argument
1678 if (header == NULL) in unregister_sysctl_table()
1681 nr_subheaders = count_subheaders(header->ctl_table_arg); in unregister_sysctl_table()
1686 subheaders = (struct ctl_table_header **)(header + 1); in unregister_sysctl_table()
1693 kfree(header); in unregister_sysctl_table()
1698 drop_sysctl_table(header); in unregister_sysctl_table()
1709 init_header(&set->dir.header, root, set, NULL, root_table); in setup_sysctl_set()