Lines Matching refs:oidp

125 static int	sysctl_remove_oid_locked(struct sysctl_oid *oidp, int del,
133 struct sysctl_oid *oidp;
136 SLIST_FOREACH(oidp, list, oid_link) {
137 if (strcmp(oidp->oid_name, name) == 0) {
138 return (oidp);
206 sysctl_load_tunable_by_oid_locked(struct sysctl_oid *oidp)
220 for (curr = oidp; curr != NULL; curr = SYSCTL_PARENT(curr)) {
223 if (curr != oidp)
230 if (curr != oidp)
241 switch (oidp->oid_kind & CTLTYPE) {
336 error = sysctl_root_handler_locked(oidp, oidp->oid_arg1,
337 oidp->oid_arg2, &req, NULL);
414 sysctl_warn_reuse(__func__, oidp);
424 sysctl_register_oid(struct sysctl_oid *oidp)
426 struct sysctl_oid_list *parent = oidp->oid_parent;
437 p = sysctl_find_oidname(oidp->oid_name, parent);
448 oid_number = oidp->oid_number;
499 if (oidp->oid_number >= 0 && oidp->oid_number < CTL_AUTO_START &&
502 oidp->oid_number, oidp->oid_name);
505 oidp->oid_number = oid_number;
507 SLIST_INSERT_AFTER(q, oidp, oid_link);
509 SLIST_INSERT_HEAD(parent, oidp, oid_link);
511 if ((oidp->oid_kind & CTLTYPE) != CTLTYPE_NODE &&
513 (oidp->oid_kind & CTLFLAG_VNET) == 0 &&
515 (oidp->oid_kind & CTLFLAG_TUN) != 0 &&
516 (oidp->oid_kind & CTLFLAG_NOFETCH) == 0) {
518 oidp->oid_kind |= CTLFLAG_NOFETCH;
520 sysctl_load_tunable_by_oid_locked(oidp);
525 sysctl_register_disabled_oid(struct sysctl_oid *oidp)
533 KASSERT((oidp->oid_kind & CTLFLAG_DORMANT) == 0,
535 if ((oidp->oid_kind & CTLTYPE) != CTLTYPE_NODE)
536 oidp->oid_kind |= CTLFLAG_DORMANT;
537 sysctl_register_oid(oidp);
541 sysctl_enable_oid(struct sysctl_oid *oidp)
545 if ((oidp->oid_kind & CTLTYPE) == CTLTYPE_NODE) {
546 KASSERT((oidp->oid_kind & CTLFLAG_DORMANT) == 0,
550 KASSERT((oidp->oid_kind & CTLFLAG_DORMANT) != 0,
552 oidp->oid_kind &= ~CTLFLAG_DORMANT;
556 sysctl_unregister_oid(struct sysctl_oid *oidp)
562 if (oidp->oid_number == OID_AUTO) {
566 SLIST_FOREACH(p, oidp->oid_parent, oid_link) {
567 if (p == oidp) {
568 SLIST_REMOVE(oidp->oid_parent, oidp,
583 __func__, error, oidp->oid_name);
659 sysctl_ctx_entry_add(struct sysctl_ctx_list *clist, struct sysctl_oid *oidp)
664 if (clist == NULL || oidp == NULL)
667 e->entry = oidp;
674 sysctl_ctx_entry_find(struct sysctl_ctx_list *clist, struct sysctl_oid *oidp)
679 if (clist == NULL || oidp == NULL)
682 if(e->entry == oidp)
690 * NOTE: this function doesn't free oidp! You have to remove it
694 sysctl_ctx_entry_del(struct sysctl_ctx_list *clist, struct sysctl_oid *oidp)
698 if (clist == NULL || oidp == NULL)
701 e = sysctl_ctx_entry_find(clist, oidp);
715 * oidp - top of the tree to be removed
720 sysctl_remove_oid(struct sysctl_oid *oidp, int del, int recurse)
725 error = sysctl_remove_oid_locked(oidp, del, recurse);
751 sysctl_remove_oid_locked(struct sysctl_oid *oidp, int del, int recurse)
757 if (oidp == NULL)
759 if ((oidp->oid_kind & CTLFLAG_DYN) == 0) {
761 oidp->oid_name);
771 if ((oidp->oid_kind & CTLTYPE) == CTLTYPE_NODE) {
772 if (oidp->oid_refcnt == 1) {
774 SYSCTL_CHILDREN(oidp), oid_link, tmp) {
778 oidp->oid_name, p->oid_name);
788 if (oidp->oid_refcnt > 1 ) {
789 oidp->oid_refcnt--;
791 if (oidp->oid_refcnt == 0) {
793 oidp->oid_refcnt, oidp->oid_name);
796 sysctl_unregister_oid(oidp);
804 while (oidp->oid_running > 0) {
805 oidp->oid_kind |= CTLFLAG_DYING;
806 SYSCTL_SLEEP(&oidp->oid_running, "oidrm", 0);
808 if (oidp->oid_descr)
809 free(__DECONST(char *, oidp->oid_descr),
811 if (oidp->oid_label)
812 free(__DECONST(char *, oidp->oid_label),
814 free(__DECONST(char *, oidp->oid_name), M_SYSCTLOID);
815 free(oidp, M_SYSCTLOID);
830 struct sysctl_oid *oidp;
837 oidp = sysctl_find_oidname(name, parent);
838 if (oidp != NULL) {
839 if ((oidp->oid_kind & CTLTYPE) == CTLTYPE_NODE) {
840 oidp->oid_refcnt++;
843 sysctl_ctx_entry_add(clist, oidp);
845 return (oidp);
847 sysctl_warn_reuse(__func__, oidp);
852 oidp = malloc(sizeof(struct sysctl_oid), M_SYSCTLOID, M_WAITOK|M_ZERO);
853 oidp->oid_parent = parent;
854 SLIST_INIT(&oidp->oid_children);
855 oidp->oid_number = number;
856 oidp->oid_refcnt = 1;
857 oidp->oid_name = strdup(name, M_SYSCTLOID);
858 oidp->oid_handler = handler;
859 oidp->oid_kind = CTLFLAG_DYN | kind;
860 oidp->oid_arg1 = arg1;
861 oidp->oid_arg2 = arg2;
862 oidp->oid_fmt = fmt;
864 oidp->oid_descr = strdup(descr, M_SYSCTLOID);
866 oidp->oid_label = strdup(label, M_SYSCTLOID);
869 sysctl_ctx_entry_add(clist, oidp);
871 sysctl_register_oid(oidp);
873 return (oidp);
880 sysctl_rename_oid(struct sysctl_oid *oidp, const char *name)
887 oldname = __DECONST(char *, oidp->oid_name);
888 oidp->oid_name = newname;
899 struct sysctl_oid *oidp;
906 oidp = sysctl_find_oidname(oid->oid_name, parent);
907 if (oidp != NULL) {
927 struct sysctl_oid **oidp;
933 SET_FOREACH(oidp, sysctl_set)
934 sysctl_register_oid(*oidp);
972 struct sysctl_oid *oidp;
975 SLIST_FOREACH(oidp, l, oid_link) {
979 printf("%d %s ", oidp->oid_number, oidp->oid_name);
982 oidp->oid_kind & CTLFLAG_RD ? 'R':' ',
983 oidp->oid_kind & CTLFLAG_WR ? 'W':' ');
985 if (oidp->oid_handler)
988 switch (oidp->oid_kind & CTLTYPE) {
991 if (!oidp->oid_handler) {
993 SYSCTL_CHILDREN(oidp), i + 2);
1115 sysctl_sysctl_next_node(struct sysctl_oid *oidp, int *name, unsigned int namelen,
1119 if ((oidp->oid_kind & CTLFLAG_DORMANT) != 0)
1122 if (honor_skip && (oidp->oid_kind & CTLFLAG_SKIP) != 0)
1137 if ((oidp->oid_kind & CTLTYPE) != CTLTYPE_NODE)
1140 if (oidp->oid_handler)
1160 if (oidp->oid_number < *name)
1162 if (oidp->oid_number > *name) {
1173 if ((oidp->oid_kind & CTLTYPE) != CTLTYPE_NODE)
1176 if (oidp->oid_handler)
1182 if ((oidp->oid_kind & CTLTYPE) != CTLTYPE_NODE)
1184 if (oidp->oid_handler)
1198 struct sysctl_oid *oidp;
1203 SLIST_FOREACH(oidp, lsp, oid_link) {
1204 action = sysctl_sysctl_next_node(oidp, name, namelen, honor_skip);
1213 lsp = SYSCTL_CHILDREN(oidp);
1239 *next = oidp->oid_number;
1261 oidp->oid_number == CTL_SYSCTL_NEXT);
1282 struct sysctl_oid *oidp;
1291 oidp = SLIST_FIRST(lsp);
1292 for (;; oidp = SLIST_NEXT(oidp, oid_link)) {
1293 if (oidp == NULL)
1295 if (strcmp(p, oidp->oid_name) == 0)
1298 *oid++ = oidp->oid_number;
1303 *oidpp = oidp;
1307 if ((oidp->oid_kind & CTLTYPE) != CTLTYPE_NODE)
1310 if (oidp->oid_handler)
1313 lsp = SYSCTL_CHILDREN(oidp);
1636 error = sysctl_handle_int(oidp, &s, 0, req);
1748 if ((oidp->oid_kind & (CTLFLAG_WR | CTLFLAG_TUN)) == 0 ||
1867 error = sysctl_handle_64(oidp, &sb, 0, req);
1890 error = sysctl_handle_64(oidp, &sb, 0, req);
1913 error = sysctl_handle_int(oidp, &secs, 0, req);
2685 db_sysctl(struct sysctl_oid *oidp, int *name, u_int namelen,
2706 g_ddb_oid = oidp;
2731 struct sysctl_oid *oidp;
2739 error = sysctl_find_oid(qoid, nlen + 2, &oidp, NULL, NULL);
2743 error = db_sysctl(oidp, qoid, nlen + 2, NULL, NULL, NULL, 0);
2752 db_oid_safe(const struct sysctl_oid *oidp)
2755 if (oidp->oid_handler == db_safe_handlers[i])
2767 db_show_oid(struct sysctl_oid *oidp, int *oid, size_t nlen, int flags)
2777 if ((oidp->oid_kind & CTLTYPE) == CTLTYPE_OPAQUE &&
2792 if ((flags & DB_SYSCTL_SAFE_ONLY) && !db_oid_safe(oidp)) {
2800 error = db_sysctl(oidp, oid, nlen,
2807 error = db_sysctl(oidp, oid, nlen,
2822 struct sysctl_oid *oidp;
2859 error = sysctl_find_oid(name2, l2, &oidp, NULL, NULL);
2863 i = db_show_oid(oidp, name2, l2, flags | DB_SYSCTL_SAFE_ONLY);
2879 struct sysctl_oid *oidp;
2883 error = name2oid(name, oid, &nlen, &oidp);
2888 if ((oidp->oid_kind & CTLTYPE) == CTLTYPE_NODE) {
2891 error = db_show_oid(oidp, oid, nlen, flags);