Lines Matching refs:header
23 #define list_for_each_table_entry(entry, header) \ argument
24 entry = header->ctl_table; \
25 for (size_t i = 0 ; i < header->ctl_table_size; ++i, entry++)
78 .default_set.dir.header = {
90 static void drop_sysctl_table(struct ctl_table_header *header);
94 static void put_links(struct ctl_table_header *header);
98 if (dir->header.parent) in sysctl_print_dir()
99 sysctl_print_dir(dir->header.parent); in sysctl_print_dir()
100 pr_cont("%s/", dir->header.ctl_table[0].procname); in sysctl_print_dir()
129 head = ctl_node->header; in find_entry()
163 parent_head = parent_node->header; in insert_entry()
212 node->header = head; in init_header()
228 static int insert_header(struct ctl_dir *dir, struct ctl_table_header *header) in insert_header() argument
231 struct ctl_table_header *dir_h = &dir->header; in insert_header()
240 if (sysctl_is_perm_empty_ctl_header(header)) { in insert_header()
247 header->parent = dir; in insert_header()
248 err = insert_links(header); in insert_header()
251 list_for_each_table_entry(entry, header) { in insert_header()
252 err = insert_entry(header, entry); in insert_header()
258 erase_header(header); in insert_header()
259 put_links(header); in insert_header()
261 if (header->ctl_table == sysctl_mount_point) in insert_header()
263 header->parent = NULL; in insert_header()
376 if (use_table(ctl_node->header)) in first_usable_entry()
393 head = ctl_node->header; in first_entry()
413 head = ctl_node->header; in next_entry()
511 head = &sysctl_table_root.default_set.dir.header; in grab_header()
530 ctl_dir = container_of(head, struct ctl_dir, header); in proc_sys_lookup()
774 ctl_dir = container_of(head, struct ctl_dir, header); in proc_sys_readdir()
955 return container_of(head, struct ctl_dir, header); in find_subdir()
978 init_header(&new->header, set->dir.header.root, set, node, table, 1); in new_dir()
998 struct ctl_table_set *set = dir->header.set; in get_subdir()
1024 err = insert_header(dir, &new->header); in get_subdir()
1030 subdir->header.nreg++; in get_subdir()
1038 drop_sysctl_table(&dir->header); in get_subdir()
1040 drop_sysctl_table(&new->header); in get_subdir()
1049 if (!dir->header.parent) in xlate_dir()
1051 parent = xlate_dir(set, dir->header.parent); in xlate_dir()
1054 procname = dir->header.ctl_table[0].procname; in xlate_dir()
1144 static int sysctl_check_table(const char *path, struct ctl_table_header *header) in sysctl_check_table() argument
1148 list_for_each_table_entry(entry, header) { in sysctl_check_table()
1217 init_header(links, dir->header.root, dir->header.set, node, link_table, in new_links()
1225 struct ctl_table_header *header, in get_links() argument
1231 if (header->ctl_table_size == 0 || in get_links()
1232 sysctl_is_perm_empty_ctl_header(header)) in get_links()
1236 list_for_each_table_entry(entry, header) { in get_links()
1249 list_for_each_table_entry(entry, header) { in get_links()
1274 core_parent->header.nreg++; in insert_links()
1294 drop_sysctl_table(&core_parent->header); in insert_links()
1374 struct ctl_table_root *root = set->dir.header.root; in __register_sysctl_table()
1375 struct ctl_table_header *header; in __register_sysctl_table() local
1379 header = kzalloc(sizeof(struct ctl_table_header) + in __register_sysctl_table()
1381 if (!header) in __register_sysctl_table()
1384 node = (struct ctl_node *)(header + 1); in __register_sysctl_table()
1385 init_header(header, root, set, node, table, table_size); in __register_sysctl_table()
1386 if (sysctl_check_table(path, header)) in __register_sysctl_table()
1392 dir->header.nreg++; in __register_sysctl_table()
1399 if (insert_header(dir, header)) in __register_sysctl_table()
1402 drop_sysctl_table(&dir->header); in __register_sysctl_table()
1405 return header; in __register_sysctl_table()
1408 drop_sysctl_table(&dir->header); in __register_sysctl_table()
1411 kfree(header); in __register_sysctl_table()
1474 static void put_links(struct ctl_table_header *header) in put_links() argument
1477 struct ctl_table_root *root = header->root; in put_links()
1478 struct ctl_dir *parent = header->parent; in put_links()
1482 if (header->set == root_set) in put_links()
1489 list_for_each_table_entry(entry, header) { in put_links()
1508 static void drop_sysctl_table(struct ctl_table_header *header) in drop_sysctl_table() argument
1510 struct ctl_dir *parent = header->parent; in drop_sysctl_table()
1512 if (--header->nreg) in drop_sysctl_table()
1516 put_links(header); in drop_sysctl_table()
1517 start_unregistering(header); in drop_sysctl_table()
1520 if (!--header->count) in drop_sysctl_table()
1521 kfree_rcu(header, rcu); in drop_sysctl_table()
1524 drop_sysctl_table(&parent->header); in drop_sysctl_table()
1534 void unregister_sysctl_table(struct ctl_table_header * header) in unregister_sysctl_table() argument
1538 if (header == NULL) in unregister_sysctl_table()
1542 drop_sysctl_table(header); in unregister_sysctl_table()
1553 init_header(&set->dir.header, root, set, NULL, root_table, 1); in setup_sysctl_set()