Lines Matching defs:header

22 #define list_for_each_table_entry(entry, header)	\
23 entry = header->ctl_table; \
24 for (size_t i = 0 ; i < header->ctl_table_size && entry->procname; ++i, entry++)
77 .default_set.dir.header = {
89 static void drop_sysctl_table(struct ctl_table_header *header);
93 static void put_links(struct ctl_table_header *header);
97 if (dir->header.parent)
98 sysctl_print_dir(dir->header.parent);
99 pr_cont("%s/", dir->header.ctl_table[0].procname);
127 head = ctl_node->header;
161 parent_head = parent_node->header;
210 node->header = head;
224 static int insert_header(struct ctl_dir *dir, struct ctl_table_header *header)
227 struct ctl_table_header *dir_h = &dir->header;
236 if (header->ctl_table_size > 0 &&
237 sysctl_is_perm_empty_ctl_table(header->ctl_table)) {
244 header->parent = dir;
245 err = insert_links(header);
248 list_for_each_table_entry(entry, header) {
249 err = insert_entry(header, entry);
255 erase_header(header);
256 put_links(header);
258 if (header->ctl_table == sysctl_mount_point)
260 header->parent = NULL;
369 if (use_table(ctl_node->header))
386 head = ctl_node->header;
406 head = ctl_node->header;
506 head = &sysctl_table_root.default_set.dir.header;
525 ctl_dir = container_of(head, struct ctl_dir, header);
780 ctl_dir = container_of(head, struct ctl_dir, header);
956 return container_of(head, struct ctl_dir, header);
979 init_header(&new->header, set->dir.header.root, set, node, table, 1);
999 struct ctl_table_set *set = dir->header.set;
1025 err = insert_header(dir, &new->header);
1031 subdir->header.nreg++;
1039 drop_sysctl_table(&dir->header);
1041 drop_sysctl_table(&new->header);
1050 if (!dir->header.parent)
1052 parent = xlate_dir(set, dir->header.parent);
1055 procname = dir->header.ctl_table[0].procname;
1131 static int sysctl_check_table(const char *path, struct ctl_table_header *header)
1135 list_for_each_table_entry(entry, header) {
1203 init_header(links, dir->header.root, dir->header.set, node, link_table,
1211 struct ctl_table_header *header,
1217 if (header->ctl_table_size == 0 ||
1218 sysctl_is_perm_empty_ctl_table(header->ctl_table))
1222 list_for_each_table_entry(entry, header) {
1235 list_for_each_table_entry(entry, header) {
1260 core_parent->header.nreg++;
1280 drop_sysctl_table(&core_parent->header);
1360 * to the table header on success.
1366 struct ctl_table_root *root = set->dir.header.root;
1367 struct ctl_table_header *header;
1371 header = kzalloc(sizeof(struct ctl_table_header) +
1373 if (!header)
1376 node = (struct ctl_node *)(header + 1);
1377 init_header(header, root, set, node, table, table_size);
1378 if (sysctl_check_table(path, header))
1384 dir->header.nreg++;
1391 if (insert_header(dir, header))
1394 drop_sysctl_table(&dir->header);
1397 return header;
1400 drop_sysctl_table(&dir->header);
1403 kfree(header);
1466 static void put_links(struct ctl_table_header *header)
1469 struct ctl_table_root *root = header->root;
1470 struct ctl_dir *parent = header->parent;
1474 if (header->set == root_set)
1481 list_for_each_table_entry(entry, header) {
1500 static void drop_sysctl_table(struct ctl_table_header *header)
1502 struct ctl_dir *parent = header->parent;
1504 if (--header->nreg)
1508 put_links(header);
1509 start_unregistering(header);
1512 if (!--header->count)
1513 kfree_rcu(header, rcu);
1516 drop_sysctl_table(&parent->header);
1521 * @header: the header returned from register_sysctl or __register_sysctl_table
1526 void unregister_sysctl_table(struct ctl_table_header * header)
1530 if (header == NULL)
1534 drop_sysctl_table(header);
1545 init_header(&set->dir.header, root, set, NULL, root_table, 1);