Lines Matching refs:idp
52 dt_idcook_sign(dt_node_t *dnp, dt_ident_t *idp, in dt_idcook_sign() argument
55 dt_idsig_t *isp = idp->di_data; in dt_idcook_sign()
61 iskey = idp->di_kind == DT_IDENT_ARRAY || idp->di_kind == DT_IDENT_AGG; in dt_idcook_sign()
76 "passed, %s%d expected\n", prefix, idp->di_name, suffix, in dt_idcook_sign()
92 prefix, idp->di_name, suffix, in dt_idcook_sign()
101 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type, B_FALSE); in dt_idcook_sign()
110 dt_idcook_assc(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args) in dt_idcook_assc() argument
112 if (idp->di_data == NULL) { in dt_idcook_assc()
113 dt_idsig_t *isp = idp->di_data = malloc(sizeof (dt_idsig_t)); in dt_idcook_assc()
128 idp->di_data = NULL; in dt_idcook_assc()
140 if (!(idp->di_flags & DT_IDFLG_DECL)) { in dt_idcook_assc()
141 idp->di_ctfp = DT_DYN_CTFP(yypcb->pcb_hdl); in dt_idcook_assc()
142 idp->di_type = DT_DYN_TYPE(yypcb->pcb_hdl); in dt_idcook_assc()
150 dt_idkind_name(idp->di_kind), i + 1); in dt_idcook_assc()
160 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type, B_FALSE); in dt_idcook_assc()
163 dt_idcook_sign(dnp, idp, argc, args, in dt_idcook_assc()
164 idp->di_kind == DT_IDENT_AGG ? "@" : "", "[ ]"); in dt_idcook_assc()
174 dt_idcook_func(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args) in dt_idcook_func() argument
176 if (idp->di_data == NULL) { in dt_idcook_func()
183 assert(idp->di_iarg != NULL); in dt_idcook_func()
184 s = strdupa(idp->di_iarg); in dt_idcook_func()
194 "for built-in function %s\n", idp->di_name); in dt_idcook_func()
212 if ((isp = idp->di_data = malloc(sizeof (dt_idsig_t))) == NULL) in dt_idcook_func()
223 idp->di_data = NULL; in dt_idcook_func()
230 " %s\n", idp->di_name, s, in dt_idcook_func()
234 if (idp->di_kind == DT_IDENT_AGGFUNC) { in dt_idcook_func()
235 idp->di_ctfp = DT_DYN_CTFP(dtp); in dt_idcook_func()
236 idp->di_type = DT_DYN_TYPE(dtp); in dt_idcook_func()
238 idp->di_ctfp = dtt.dtt_ctfp; in dt_idcook_func()
239 idp->di_type = dtt.dtt_type; in dt_idcook_func()
296 "%s arg#%d (%s): %s\n", idp->di_name, i + 1, in dt_idcook_func()
305 dt_idcook_sign(dnp, idp, argc, args, "", "( )"); in dt_idcook_func()
314 dt_idcook_args(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *ap) in dt_idcook_args() argument
328 "passed, 1 expected\n", idp->di_name, argc, in dt_idcook_args()
335 idp->di_name, "integer constant", in dt_idcook_args()
341 "of a probe clause\n", idp->di_name); in dt_idcook_args()
347 "matches an unstable set of probes\n", idp->di_name, in dt_idcook_args()
354 n1, sizeof (n1)), idp->di_name); in dt_idcook_args()
369 "%s[%lld]\n", idp->di_name, (longlong_t)ap->dn_value); in dt_idcook_args()
374 "%s[%lld]\n", idp->di_name, (longlong_t)ap->dn_value); in dt_idcook_args()
379 dnp->dn_ident = dt_ident_create(idp->di_name, idp->di_kind, in dt_idcook_args()
380 idp->di_flags | DT_IDFLG_ORPHAN, idp->di_id, idp->di_attr, in dt_idcook_args()
381 idp->di_vers, idp->di_ops, idp->di_iarg, idp->di_gen); in dt_idcook_args()
399 dnp->dn_ident = dt_ident_create(idp->di_name, xidp->di_kind, in dt_idcook_args()
400 xidp->di_flags | DT_IDFLG_ORPHAN, idp->di_id, idp->di_attr, in dt_idcook_args()
401 idp->di_vers, idp->di_ops, idp->di_iarg, idp->di_gen); in dt_idcook_args()
423 "is not defined\n", idp->di_name, (longlong_t)ap->dn_value, in dt_idcook_args()
429 assert(dnp->dn_ident->di_id == idp->di_id); in dt_idcook_args()
433 dt_idcook_regs(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *ap) in dt_idcook_regs() argument
441 "passed, 1 expected\n", idp->di_name, in dt_idcook_regs()
448 idp->di_name, "integer constant", in dt_idcook_regs()
454 (longlong_t)ap->dn_value, idp->di_name); in dt_idcook_regs()
459 idp->di_name, dtrace_errmsg(dtp, dtrace_errno(dtp))); in dt_idcook_regs()
462 idp->di_ctfp = dtt.dtt_ctfp; in dt_idcook_regs()
463 idp->di_type = dtt.dtt_type; in dt_idcook_regs()
465 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type, B_FALSE); in dt_idcook_regs()
470 dt_idcook_type(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args) in dt_idcook_type() argument
472 if (idp->di_type == CTF_ERR) { in dt_idcook_type()
476 if (dt_type_lookup(idp->di_iarg, &dtt) == -1) { in dt_idcook_type()
479 (const char *)idp->di_iarg, idp->di_name, in dt_idcook_type()
483 idp->di_ctfp = dtt.dtt_ctfp; in dt_idcook_type()
484 idp->di_type = dtt.dtt_type; in dt_idcook_type()
487 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type, B_FALSE); in dt_idcook_type()
492 dt_idcook_thaw(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args) in dt_idcook_thaw() argument
494 if (idp->di_ctfp != NULL && idp->di_type != CTF_ERR) in dt_idcook_thaw()
495 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type, B_FALSE); in dt_idcook_thaw()
499 dt_idcook_inline(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args) in dt_idcook_inline() argument
501 if (idp->di_kind == DT_IDENT_ARRAY) in dt_idcook_inline()
502 dt_idcook_assc(dnp, idp, argc, args); in dt_idcook_inline()
504 dt_idcook_thaw(dnp, idp, argc, args); in dt_idcook_inline()
508 dt_iddtor_sign(dt_ident_t *idp) in dt_iddtor_sign() argument
510 if (idp->di_data != NULL) in dt_iddtor_sign()
511 free(((dt_idsig_t *)idp->di_data)->dis_args); in dt_iddtor_sign()
512 free(idp->di_data); in dt_iddtor_sign()
516 dt_iddtor_free(dt_ident_t *idp) in dt_iddtor_free() argument
518 free(idp->di_data); in dt_iddtor_free()
522 dt_iddtor_inline(dt_ident_t *idp) in dt_iddtor_inline() argument
524 dt_idnode_t *inp = idp->di_iarg; in dt_iddtor_inline()
536 if (idp->di_kind == DT_IDENT_ARRAY) in dt_iddtor_inline()
537 dt_iddtor_sign(idp); in dt_iddtor_inline()
539 dt_iddtor_free(idp); in dt_iddtor_inline()
544 dt_iddtor_none(dt_ident_t *idp) in dt_iddtor_none() argument
550 dt_iddtor_probe(dt_ident_t *idp) in dt_iddtor_probe() argument
552 if (idp->di_data != NULL) in dt_iddtor_probe()
553 dt_probe_destroy(idp->di_data); in dt_iddtor_probe()
557 dt_idsize_type(dt_ident_t *idp) in dt_idsize_type() argument
559 return (ctf_type_size(idp->di_ctfp, idp->di_type)); in dt_idsize_type()
564 dt_idsize_none(dt_ident_t *idp) in dt_idsize_none() argument
620 const dt_ident_t *idp = dhp->dh_tmpl; in dt_idhash_populate() local
623 dt_dprintf("populating %s idhash from %p\n", dhp->dh_name, (void *)idp); in dt_idhash_populate()
625 for (; idp->di_name != NULL; idp++) { in dt_idhash_populate()
626 if (dt_idhash_insert(dhp, idp->di_name, in dt_idhash_populate()
627 idp->di_kind, idp->di_flags, idp->di_id, idp->di_attr, in dt_idhash_populate()
628 idp->di_vers, idp->di_ops ? idp->di_ops : &dt_idops_thaw, in dt_idhash_populate()
629 idp->di_iarg, 0) == NULL) in dt_idhash_populate()
672 dt_ident_t *idp, *next; in dt_idhash_destroy() local
676 for (idp = dhp->dh_hash[i]; idp != NULL; idp = next) { in dt_idhash_destroy()
677 next = idp->di_next; in dt_idhash_destroy()
678 idp->di_ops->di_dtor(idp); in dt_idhash_destroy()
683 for (idp = dhp->dh_hash[i]; idp != NULL; idp = next) { in dt_idhash_destroy()
684 next = idp->di_next; in dt_idhash_destroy()
685 free(idp->di_name); in dt_idhash_destroy()
686 free(idp); in dt_idhash_destroy()
697 dt_ident_t *idp; in dt_idhash_update() local
701 for (idp = dhp->dh_hash[i]; idp != NULL; idp = idp->di_next) { in dt_idhash_update()
706 if (idp->di_kind == DT_IDENT_ARRAY || in dt_idhash_update()
707 idp->di_kind == DT_IDENT_SCALAR || in dt_idhash_update()
708 idp->di_kind == DT_IDENT_AGG) in dt_idhash_update()
709 nextid = MAX(nextid, idp->di_id + 1); in dt_idhash_update()
721 dt_ident_t *idp; in dt_idhash_lookup() local
726 for (idp = dhp->dh_hash[h]; idp != NULL; idp = idp->di_next) { in dt_idhash_lookup()
727 if (strcmp(idp->di_name, name) == 0) in dt_idhash_lookup()
728 return (idp); in dt_idhash_lookup()
761 dt_ident_t *idp; in dt_idhash_insert() local
767 idp = dt_ident_create(name, kind, flags, id, in dt_idhash_insert()
770 if (idp == NULL) in dt_idhash_insert()
774 idp->di_next = dhp->dh_hash[h]; in dt_idhash_insert()
776 dhp->dh_hash[h] = idp; in dt_idhash_insert()
780 dhp->dh_defer(dhp, idp); in dt_idhash_insert()
782 return (idp); in dt_idhash_insert()
786 dt_idhash_xinsert(dt_idhash_t *dhp, dt_ident_t *idp) in dt_idhash_xinsert() argument
793 h = dt_strtab_hash(idp->di_name, NULL) % dhp->dh_hashsz; in dt_idhash_xinsert()
794 idp->di_next = dhp->dh_hash[h]; in dt_idhash_xinsert()
795 idp->di_flags &= ~DT_IDFLG_ORPHAN; in dt_idhash_xinsert()
797 dhp->dh_hash[h] = idp; in dt_idhash_xinsert()
801 dhp->dh_defer(dhp, idp); in dt_idhash_xinsert()
810 dt_ident_t *idp; in dt_idhash_delete() local
812 for (idp = dhp->dh_hash[h]; idp != NULL; idp = idp->di_next) { in dt_idhash_delete()
813 if (idp == key) in dt_idhash_delete()
816 pp = &idp->di_next; in dt_idhash_delete()
819 assert(idp == key); in dt_idhash_delete()
820 *pp = idp->di_next; in dt_idhash_delete()
825 if (!(idp->di_flags & DT_IDFLG_ORPHAN)) in dt_idhash_delete()
826 dt_ident_destroy(idp); in dt_idhash_delete()
845 dt_ident_t *idp; in dt_idhash_iter() local
856 for (idp = dhp->dh_hash[i]; idp != NULL; idp = idp->di_next) in dt_idhash_iter()
857 ids[j++] = idp; in dt_idhash_iter()
874 dt_ident_t *idp; in dt_idstack_lookup() local
878 if ((idp = dt_idhash_lookup(dhp, name)) != NULL) in dt_idstack_lookup()
879 return (idp); in dt_idstack_lookup()
903 dt_ident_t *idp; in dt_ident_create() local
907 (idp = malloc(sizeof (dt_ident_t))) == NULL) { in dt_ident_create()
912 idp->di_name = s; in dt_ident_create()
913 idp->di_kind = kind; in dt_ident_create()
914 idp->di_flags = flags; in dt_ident_create()
915 idp->di_id = id; in dt_ident_create()
916 idp->di_attr = attr; in dt_ident_create()
917 idp->di_vers = vers; in dt_ident_create()
918 idp->di_ops = ops; in dt_ident_create()
919 idp->di_iarg = iarg; in dt_ident_create()
920 idp->di_data = NULL; in dt_ident_create()
921 idp->di_ctfp = NULL; in dt_ident_create()
922 idp->di_type = CTF_ERR; in dt_ident_create()
923 idp->di_next = NULL; in dt_ident_create()
924 idp->di_gen = gen; in dt_ident_create()
925 idp->di_lineno = yylineno; in dt_ident_create()
927 return (idp); in dt_ident_create()
935 dt_ident_destroy(dt_ident_t *idp) in dt_ident_destroy() argument
937 idp->di_ops->di_dtor(idp); in dt_ident_destroy()
938 free(idp->di_name); in dt_ident_destroy()
939 free(idp); in dt_ident_destroy()
943 dt_ident_morph(dt_ident_t *idp, ushort_t kind, in dt_ident_morph() argument
946 idp->di_ops->di_dtor(idp); in dt_ident_morph()
947 idp->di_kind = kind; in dt_ident_morph()
948 idp->di_ops = ops; in dt_ident_morph()
949 idp->di_iarg = iarg; in dt_ident_morph()
950 idp->di_data = NULL; in dt_ident_morph()
954 dt_ident_cook(dt_node_t *dnp, dt_ident_t *idp, dt_node_t **pargp) in dt_ident_cook() argument
966 idp->di_ops->di_cook(dnp, idp, argc, args); in dt_ident_cook()
968 if (idp->di_flags & DT_IDFLG_USER) in dt_ident_cook()
971 return (dt_attr_min(attr, idp->di_attr)); in dt_ident_cook()
975 dt_ident_type_assign(dt_ident_t *idp, ctf_file_t *fp, ctf_id_t type) in dt_ident_type_assign() argument
977 idp->di_ctfp = fp; in dt_ident_type_assign()
978 idp->di_type = type; in dt_ident_type_assign()
982 dt_ident_resolve(dt_ident_t *idp) in dt_ident_resolve() argument
984 while (idp->di_flags & DT_IDFLG_INLINE) { in dt_ident_resolve()
985 const dt_node_t *dnp = ((dt_idnode_t *)idp->di_iarg)->din_root; in dt_ident_resolve()
997 idp = dnp->dn_ident; in dt_ident_resolve()
1002 idp = dnp->dn_ident; in dt_ident_resolve()
1007 return (idp); in dt_ident_resolve()
1011 dt_ident_size(dt_ident_t *idp) in dt_ident_size() argument
1013 idp = dt_ident_resolve(idp); in dt_ident_size()
1014 return (idp->di_ops->di_size(idp)); in dt_ident_size()
1018 dt_ident_unref(const dt_ident_t *idp) in dt_ident_unref() argument
1020 return (idp->di_gen == yypcb->pcb_hdl->dt_gen && in dt_ident_unref()
1021 (idp->di_flags & (DT_IDFLG_REF|DT_IDFLG_MOD|DT_IDFLG_DECL)) == 0); in dt_ident_unref()