Lines Matching defs:idp

58 dt_idcook_sign(dt_node_t *dnp, dt_ident_t *idp,
61 dt_idsig_t *isp = idp->di_data;
67 iskey = idp->di_kind == DT_IDENT_ARRAY || idp->di_kind == DT_IDENT_AGG;
82 "passed, %s%d expected\n", prefix, idp->di_name, suffix,
98 prefix, idp->di_name, suffix,
107 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type);
116 dt_idcook_assc(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
118 if (idp->di_data == NULL) {
119 dt_idsig_t *isp = idp->di_data = malloc(sizeof (dt_idsig_t));
134 idp->di_data = NULL;
146 if (!(idp->di_flags & DT_IDFLG_DECL)) {
147 idp->di_ctfp = DT_DYN_CTFP(yypcb->pcb_hdl);
148 idp->di_type = DT_DYN_TYPE(yypcb->pcb_hdl);
156 dt_idkind_name(idp->di_kind), i + 1);
166 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type);
169 dt_idcook_sign(dnp, idp, argc, args,
170 idp->di_kind == DT_IDENT_AGG ? "@" : "", "[ ]");
180 dt_idcook_func(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
182 if (idp->di_data == NULL) {
189 assert(idp->di_iarg != NULL);
190 s = alloca(strlen(idp->di_iarg) + 1);
191 (void) strcpy(s, idp->di_iarg);
201 "for built-in function %s\n", idp->di_name);
219 if ((isp = idp->di_data = malloc(sizeof (dt_idsig_t))) == NULL)
230 idp->di_data = NULL;
237 " %s\n", idp->di_name, s,
241 if (idp->di_kind == DT_IDENT_AGGFUNC) {
242 idp->di_ctfp = DT_DYN_CTFP(dtp);
243 idp->di_type = DT_DYN_TYPE(dtp);
245 idp->di_ctfp = dtt.dtt_ctfp;
246 idp->di_type = dtt.dtt_type;
302 "%s arg#%d (%s): %s\n", idp->di_name, i + 1,
311 dt_idcook_sign(dnp, idp, argc, args, "", "( )");
320 dt_idcook_args(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *ap)
334 "passed, 1 expected\n", idp->di_name, argc,
341 idp->di_name, "integer constant",
347 "of a probe clause\n", idp->di_name);
353 "matches an unstable set of probes\n", idp->di_name,
360 n1, sizeof (n1)), idp->di_name);
375 "%s[%lld]\n", idp->di_name, (longlong_t)ap->dn_value);
380 "%s[%lld]\n", idp->di_name, (longlong_t)ap->dn_value);
385 dnp->dn_ident = dt_ident_create(idp->di_name, idp->di_kind,
386 idp->di_flags | DT_IDFLG_ORPHAN, idp->di_id, idp->di_attr,
387 idp->di_vers, idp->di_ops, idp->di_iarg, idp->di_gen);
403 dnp->dn_ident = dt_ident_create(idp->di_name, xidp->di_kind,
404 xidp->di_flags | DT_IDFLG_ORPHAN, idp->di_id, idp->di_attr,
405 idp->di_vers, idp->di_ops, idp->di_iarg, idp->di_gen);
426 "is not defined\n", idp->di_name, (longlong_t)ap->dn_value,
432 assert(dnp->dn_ident->di_id == idp->di_id);
436 dt_idcook_regs(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *ap)
444 "passed, 1 expected\n", idp->di_name,
451 idp->di_name, "integer constant",
457 (longlong_t)ap->dn_value, idp->di_name);
462 idp->di_name, dtrace_errmsg(dtp, dtrace_errno(dtp)));
465 idp->di_ctfp = dtt.dtt_ctfp;
466 idp->di_type = dtt.dtt_type;
468 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type);
473 dt_idcook_type(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
475 if (idp->di_type == CTF_ERR) {
479 if (dt_type_lookup(idp->di_iarg, &dtt) == -1) {
482 (const char *)idp->di_iarg, idp->di_name,
486 idp->di_ctfp = dtt.dtt_ctfp;
487 idp->di_type = dtt.dtt_type;
490 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type);
495 dt_idcook_thaw(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
497 if (idp->di_ctfp != NULL && idp->di_type != CTF_ERR)
498 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type);
502 dt_idcook_inline(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
504 if (idp->di_kind == DT_IDENT_ARRAY)
505 dt_idcook_assc(dnp, idp, argc, args);
507 dt_idcook_thaw(dnp, idp, argc, args);
511 dt_iddtor_sign(dt_ident_t *idp)
513 if (idp->di_data != NULL)
514 free(((dt_idsig_t *)idp->di_data)->dis_args);
515 free(idp->di_data);
519 dt_iddtor_free(dt_ident_t *idp)
521 free(idp->di_data);
525 dt_iddtor_inline(dt_ident_t *idp)
527 dt_idnode_t *inp = idp->di_iarg;
539 if (idp->di_kind == DT_IDENT_ARRAY)
540 dt_iddtor_sign(idp);
542 dt_iddtor_free(idp);
547 dt_iddtor_none(dt_ident_t *idp)
553 dt_iddtor_probe(dt_ident_t *idp)
555 if (idp->di_data != NULL)
556 dt_probe_destroy(idp->di_data);
560 dt_idsize_type(dt_ident_t *idp)
562 return (ctf_type_size(idp->di_ctfp, idp->di_type));
567 dt_idsize_none(dt_ident_t *idp)
623 const dt_ident_t *idp = dhp->dh_tmpl;
626 dt_dprintf("populating %s idhash from %p\n", dhp->dh_name, (void *)idp);
628 for (; idp->di_name != NULL; idp++) {
629 if (dt_idhash_insert(dhp, idp->di_name,
630 idp->di_kind, idp->di_flags, idp->di_id, idp->di_attr,
631 idp->di_vers, idp->di_ops ? idp->di_ops : &dt_idops_thaw,
632 idp->di_iarg, 0) == NULL)
675 dt_ident_t *idp, *next;
679 for (idp = dhp->dh_hash[i]; idp != NULL; idp = next) {
680 next = idp->di_next;
681 idp->di_ops->di_dtor(idp);
686 for (idp = dhp->dh_hash[i]; idp != NULL; idp = next) {
687 next = idp->di_next;
688 free(idp->di_name);
689 free(idp);
700 dt_ident_t *idp;
704 for (idp = dhp->dh_hash[i]; idp != NULL; idp = idp->di_next) {
709 if (idp->di_kind == DT_IDENT_ARRAY ||
710 idp->di_kind == DT_IDENT_SCALAR ||
711 idp->di_kind == DT_IDENT_AGG)
712 nextid = MAX(nextid, idp->di_id + 1);
724 dt_ident_t *idp;
729 for (idp = dhp->dh_hash[h]; idp != NULL; idp = idp->di_next) {
730 if (strcmp(idp->di_name, name) == 0)
731 return (idp);
764 dt_ident_t *idp;
770 idp = dt_ident_create(name, kind, flags, id,
773 if (idp == NULL)
777 idp->di_next = dhp->dh_hash[h];
779 dhp->dh_hash[h] = idp;
783 dhp->dh_defer(dhp, idp);
785 return (idp);
789 dt_idhash_xinsert(dt_idhash_t *dhp, dt_ident_t *idp)
796 h = dt_strtab_hash(idp->di_name, NULL) % dhp->dh_hashsz;
797 idp->di_next = dhp->dh_hash[h];
798 idp->di_flags &= ~DT_IDFLG_ORPHAN;
800 dhp->dh_hash[h] = idp;
804 dhp->dh_defer(dhp, idp);
813 dt_ident_t *idp;
815 for (idp = dhp->dh_hash[h]; idp != NULL; idp = idp->di_next) {
816 if (idp == key)
819 pp = &idp->di_next;
822 assert(idp == key);
823 *pp = idp->di_next;
828 if (!(idp->di_flags & DT_IDFLG_ORPHAN))
829 dt_ident_destroy(idp);
848 dt_ident_t *idp;
859 for (idp = dhp->dh_hash[i]; idp != NULL; idp = idp->di_next)
860 ids[j++] = idp;
877 dt_ident_t *idp;
881 if ((idp = dt_idhash_lookup(dhp, name)) != NULL)
882 return (idp);
906 dt_ident_t *idp;
910 (idp = malloc(sizeof (dt_ident_t))) == NULL) {
915 idp->di_name = s;
916 idp->di_kind = kind;
917 idp->di_flags = flags;
918 idp->di_id = id;
919 idp->di_attr = attr;
920 idp->di_vers = vers;
921 idp->di_ops = ops;
922 idp->di_iarg = iarg;
923 idp->di_data = NULL;
924 idp->di_ctfp = NULL;
925 idp->di_type = CTF_ERR;
926 idp->di_next = NULL;
927 idp->di_gen = gen;
928 idp->di_lineno = yylineno;
930 return (idp);
938 dt_ident_destroy(dt_ident_t *idp)
940 idp->di_ops->di_dtor(idp);
941 free(idp->di_name);
942 free(idp);
946 dt_ident_morph(dt_ident_t *idp, ushort_t kind,
949 idp->di_ops->di_dtor(idp);
950 idp->di_kind = kind;
951 idp->di_ops = ops;
952 idp->di_iarg = iarg;
953 idp->di_data = NULL;
957 dt_ident_cook(dt_node_t *dnp, dt_ident_t *idp, dt_node_t **pargp)
969 idp->di_ops->di_cook(dnp, idp, argc, args);
971 if (idp->di_flags & DT_IDFLG_USER)
974 return (dt_attr_min(attr, idp->di_attr));
978 dt_ident_type_assign(dt_ident_t *idp, ctf_file_t *fp, ctf_id_t type)
980 idp->di_ctfp = fp;
981 idp->di_type = type;
985 dt_ident_resolve(dt_ident_t *idp)
987 while (idp->di_flags & DT_IDFLG_INLINE) {
988 const dt_node_t *dnp = ((dt_idnode_t *)idp->di_iarg)->din_root;
1000 idp = dnp->dn_ident;
1005 idp = dnp->dn_ident;
1010 return (idp);
1014 dt_ident_size(dt_ident_t *idp)
1016 idp = dt_ident_resolve(idp);
1017 return (idp->di_ops->di_size(idp));
1021 dt_ident_unref(const dt_ident_t *idp)
1023 return (idp->di_gen == yypcb->pcb_hdl->dt_gen &&
1024 (idp->di_flags & (DT_IDFLG_REF|DT_IDFLG_MOD|DT_IDFLG_DECL)) == 0);