Lines Matching refs:idp
60 dt_idcook_sign(dt_node_t *dnp, dt_ident_t *idp,
63 dt_idsig_t *isp = idp->di_data;
69 iskey = idp->di_kind == DT_IDENT_ARRAY || idp->di_kind == DT_IDENT_AGG;
84 "passed, %s%d expected\n", prefix, idp->di_name, suffix,
100 prefix, idp->di_name, suffix,
109 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type, B_FALSE);
118 dt_idcook_assc(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
120 if (idp->di_data == NULL) {
121 dt_idsig_t *isp = idp->di_data = malloc(sizeof (dt_idsig_t));
136 idp->di_data = NULL;
148 if (!(idp->di_flags & DT_IDFLG_DECL)) {
149 idp->di_ctfp = DT_DYN_CTFP(yypcb->pcb_hdl);
150 idp->di_type = DT_DYN_TYPE(yypcb->pcb_hdl);
158 dt_idkind_name(idp->di_kind), i + 1);
168 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type, B_FALSE);
171 dt_idcook_sign(dnp, idp, argc, args,
172 idp->di_kind == DT_IDENT_AGG ? "@" : "", "[ ]");
182 dt_idcook_func(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
184 if (idp->di_data == NULL) {
191 assert(idp->di_iarg != NULL);
192 s = alloca(strlen(idp->di_iarg) + 1);
193 (void) strcpy(s, idp->di_iarg);
203 "for built-in function %s\n", idp->di_name);
221 if ((isp = idp->di_data = malloc(sizeof (dt_idsig_t))) == NULL)
232 idp->di_data = NULL;
239 " %s\n", idp->di_name, s,
243 if (idp->di_kind == DT_IDENT_AGGFUNC) {
244 idp->di_ctfp = DT_DYN_CTFP(dtp);
245 idp->di_type = DT_DYN_TYPE(dtp);
247 idp->di_ctfp = dtt.dtt_ctfp;
248 idp->di_type = dtt.dtt_type;
304 "%s arg#%d (%s): %s\n", idp->di_name, i + 1,
313 dt_idcook_sign(dnp, idp, argc, args, "", "( )");
322 dt_idcook_args(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *ap)
336 "passed, 1 expected\n", idp->di_name, argc,
343 idp->di_name, "integer constant",
349 "of a probe clause\n", idp->di_name);
355 "matches an unstable set of probes\n", idp->di_name,
362 n1, sizeof (n1)), idp->di_name);
377 "%s[%lld]\n", idp->di_name, (longlong_t)ap->dn_value);
382 "%s[%lld]\n", idp->di_name, (longlong_t)ap->dn_value);
387 dnp->dn_ident = dt_ident_create(idp->di_name, idp->di_kind,
388 idp->di_flags | DT_IDFLG_ORPHAN, idp->di_id, idp->di_attr,
389 idp->di_vers, idp->di_ops, idp->di_iarg, idp->di_gen);
407 dnp->dn_ident = dt_ident_create(idp->di_name, xidp->di_kind,
408 xidp->di_flags | DT_IDFLG_ORPHAN, idp->di_id, idp->di_attr,
409 idp->di_vers, idp->di_ops, idp->di_iarg, idp->di_gen);
431 "is not defined\n", idp->di_name, (longlong_t)ap->dn_value,
437 assert(dnp->dn_ident->di_id == idp->di_id);
441 dt_idcook_regs(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *ap)
449 "passed, 1 expected\n", idp->di_name,
456 idp->di_name, "integer constant",
462 (longlong_t)ap->dn_value, idp->di_name);
467 idp->di_name, dtrace_errmsg(dtp, dtrace_errno(dtp)));
470 idp->di_ctfp = dtt.dtt_ctfp;
471 idp->di_type = dtt.dtt_type;
473 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type, B_FALSE);
478 dt_idcook_type(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
480 if (idp->di_type == CTF_ERR) {
484 if (dt_type_lookup(idp->di_iarg, &dtt) == -1) {
487 (const char *)idp->di_iarg, idp->di_name,
491 idp->di_ctfp = dtt.dtt_ctfp;
492 idp->di_type = dtt.dtt_type;
495 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type, B_FALSE);
500 dt_idcook_thaw(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
502 if (idp->di_ctfp != NULL && idp->di_type != CTF_ERR)
503 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type, B_FALSE);
507 dt_idcook_inline(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
509 if (idp->di_kind == DT_IDENT_ARRAY)
510 dt_idcook_assc(dnp, idp, argc, args);
512 dt_idcook_thaw(dnp, idp, argc, args);
516 dt_iddtor_sign(dt_ident_t *idp)
518 if (idp->di_data != NULL)
519 free(((dt_idsig_t *)idp->di_data)->dis_args);
520 free(idp->di_data);
524 dt_iddtor_free(dt_ident_t *idp)
526 free(idp->di_data);
530 dt_iddtor_inline(dt_ident_t *idp)
532 dt_idnode_t *inp = idp->di_iarg;
544 if (idp->di_kind == DT_IDENT_ARRAY)
545 dt_iddtor_sign(idp);
547 dt_iddtor_free(idp);
552 dt_iddtor_none(dt_ident_t *idp)
558 dt_iddtor_probe(dt_ident_t *idp)
560 if (idp->di_data != NULL)
561 dt_probe_destroy(idp->di_data);
565 dt_idsize_type(dt_ident_t *idp)
567 return (ctf_type_size(idp->di_ctfp, idp->di_type));
572 dt_idsize_none(dt_ident_t *idp)
628 const dt_ident_t *idp = dhp->dh_tmpl;
631 dt_dprintf("populating %s idhash from %p\n", dhp->dh_name, (void *)idp);
633 for (; idp->di_name != NULL; idp++) {
634 if (dt_idhash_insert(dhp, idp->di_name,
635 idp->di_kind, idp->di_flags, idp->di_id, idp->di_attr,
636 idp->di_vers, idp->di_ops ? idp->di_ops : &dt_idops_thaw,
637 idp->di_iarg, 0) == NULL)
680 dt_ident_t *idp, *next;
684 for (idp = dhp->dh_hash[i]; idp != NULL; idp = next) {
685 next = idp->di_next;
686 idp->di_ops->di_dtor(idp);
691 for (idp = dhp->dh_hash[i]; idp != NULL; idp = next) {
692 next = idp->di_next;
693 free(idp->di_name);
694 free(idp);
705 dt_ident_t *idp;
709 for (idp = dhp->dh_hash[i]; idp != NULL; idp = idp->di_next) {
714 if (idp->di_kind == DT_IDENT_ARRAY ||
715 idp->di_kind == DT_IDENT_SCALAR ||
716 idp->di_kind == DT_IDENT_AGG)
717 nextid = MAX(nextid, idp->di_id + 1);
729 dt_ident_t *idp;
734 for (idp = dhp->dh_hash[h]; idp != NULL; idp = idp->di_next) {
735 if (strcmp(idp->di_name, name) == 0)
736 return (idp);
769 dt_ident_t *idp;
775 idp = dt_ident_create(name, kind, flags, id,
778 if (idp == NULL)
782 idp->di_next = dhp->dh_hash[h];
784 dhp->dh_hash[h] = idp;
788 dhp->dh_defer(dhp, idp);
790 return (idp);
794 dt_idhash_xinsert(dt_idhash_t *dhp, dt_ident_t *idp)
801 h = dt_strtab_hash(idp->di_name, NULL) % dhp->dh_hashsz;
802 idp->di_next = dhp->dh_hash[h];
803 idp->di_flags &= ~DT_IDFLG_ORPHAN;
805 dhp->dh_hash[h] = idp;
809 dhp->dh_defer(dhp, idp);
818 dt_ident_t *idp;
820 for (idp = dhp->dh_hash[h]; idp != NULL; idp = idp->di_next) {
821 if (idp == key)
824 pp = &idp->di_next;
827 assert(idp == key);
828 *pp = idp->di_next;
833 if (!(idp->di_flags & DT_IDFLG_ORPHAN))
834 dt_ident_destroy(idp);
853 dt_ident_t *idp;
864 for (idp = dhp->dh_hash[i]; idp != NULL; idp = idp->di_next)
865 ids[j++] = idp;
882 dt_ident_t *idp;
886 if ((idp = dt_idhash_lookup(dhp, name)) != NULL)
887 return (idp);
911 dt_ident_t *idp;
915 (idp = malloc(sizeof (dt_ident_t))) == NULL) {
920 idp->di_name = s;
921 idp->di_kind = kind;
922 idp->di_flags = flags;
923 idp->di_id = id;
924 idp->di_attr = attr;
925 idp->di_vers = vers;
926 idp->di_ops = ops;
927 idp->di_iarg = iarg;
928 idp->di_data = NULL;
929 idp->di_ctfp = NULL;
930 idp->di_type = CTF_ERR;
931 idp->di_next = NULL;
932 idp->di_gen = gen;
933 idp->di_lineno = yylineno;
935 return (idp);
943 dt_ident_destroy(dt_ident_t *idp)
945 idp->di_ops->di_dtor(idp);
946 free(idp->di_name);
947 free(idp);
951 dt_ident_morph(dt_ident_t *idp, ushort_t kind,
954 idp->di_ops->di_dtor(idp);
955 idp->di_kind = kind;
956 idp->di_ops = ops;
957 idp->di_iarg = iarg;
958 idp->di_data = NULL;
962 dt_ident_cook(dt_node_t *dnp, dt_ident_t *idp, dt_node_t **pargp)
974 idp->di_ops->di_cook(dnp, idp, argc, args);
976 if (idp->di_flags & DT_IDFLG_USER)
979 return (dt_attr_min(attr, idp->di_attr));
983 dt_ident_type_assign(dt_ident_t *idp, ctf_file_t *fp, ctf_id_t type)
985 idp->di_ctfp = fp;
986 idp->di_type = type;
990 dt_ident_resolve(dt_ident_t *idp)
992 while (idp->di_flags & DT_IDFLG_INLINE) {
993 const dt_node_t *dnp = ((dt_idnode_t *)idp->di_iarg)->din_root;
1005 idp = dnp->dn_ident;
1010 idp = dnp->dn_ident;
1015 return (idp);
1019 dt_ident_size(dt_ident_t *idp)
1021 idp = dt_ident_resolve(idp);
1022 return (idp->di_ops->di_size(idp));
1026 dt_ident_unref(const dt_ident_t *idp)
1028 return (idp->di_gen == yypcb->pcb_hdl->dt_gen &&
1029 (idp->di_flags & (DT_IDFLG_REF|DT_IDFLG_MOD|DT_IDFLG_DECL)) == 0);