Lines Matching defs:idp
49 dt_idcook_sign(dt_node_t *dnp, dt_ident_t *idp,
52 dt_idsig_t *isp = idp->di_data;
58 iskey = idp->di_kind == DT_IDENT_ARRAY || idp->di_kind == DT_IDENT_AGG;
73 "passed, %s%d expected\n", prefix, idp->di_name, suffix,
89 prefix, idp->di_name, suffix,
98 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type);
107 dt_idcook_assc(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
109 if (idp->di_data == NULL) {
110 dt_idsig_t *isp = idp->di_data = malloc(sizeof (dt_idsig_t));
125 idp->di_data = NULL;
137 if (!(idp->di_flags & DT_IDFLG_DECL)) {
138 idp->di_ctfp = DT_DYN_CTFP(yypcb->pcb_hdl);
139 idp->di_type = DT_DYN_TYPE(yypcb->pcb_hdl);
147 dt_idkind_name(idp->di_kind), i + 1);
157 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type);
160 dt_idcook_sign(dnp, idp, argc, args,
161 idp->di_kind == DT_IDENT_AGG ? "@" : "", "[ ]");
171 dt_idcook_func(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
173 if (idp->di_data == NULL) {
180 assert(idp->di_iarg != NULL);
181 s = strdupa(idp->di_iarg);
191 "for built-in function %s\n", idp->di_name);
209 if ((isp = idp->di_data = malloc(sizeof (dt_idsig_t))) == NULL)
220 idp->di_data = NULL;
227 " %s\n", idp->di_name, s,
231 if (idp->di_kind == DT_IDENT_AGGFUNC) {
232 idp->di_ctfp = DT_DYN_CTFP(dtp);
233 idp->di_type = DT_DYN_TYPE(dtp);
235 idp->di_ctfp = dtt.dtt_ctfp;
236 idp->di_type = dtt.dtt_type;
292 "%s arg#%d (%s): %s\n", idp->di_name, i + 1,
301 dt_idcook_sign(dnp, idp, argc, args, "", "( )");
310 dt_idcook_args(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *ap)
324 "passed, 1 expected\n", idp->di_name, argc,
331 idp->di_name, "integer constant",
337 "of a probe clause\n", idp->di_name);
343 "matches an unstable set of probes\n", idp->di_name,
350 n1, sizeof (n1)), idp->di_name);
365 "%s[%lld]\n", idp->di_name, (longlong_t)ap->dn_value);
370 "%s[%lld]\n", idp->di_name, (longlong_t)ap->dn_value);
375 dnp->dn_ident = dt_ident_create(idp->di_name, idp->di_kind,
376 idp->di_flags | DT_IDFLG_ORPHAN, idp->di_id, idp->di_attr,
377 idp->di_vers, idp->di_ops, idp->di_iarg, idp->di_gen);
393 dnp->dn_ident = dt_ident_create(idp->di_name, xidp->di_kind,
394 xidp->di_flags | DT_IDFLG_ORPHAN, idp->di_id, idp->di_attr,
395 idp->di_vers, idp->di_ops, idp->di_iarg, idp->di_gen);
416 "is not defined\n", idp->di_name, (longlong_t)ap->dn_value,
422 assert(dnp->dn_ident->di_id == idp->di_id);
426 dt_idcook_regs(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *ap)
434 "passed, 1 expected\n", idp->di_name,
441 idp->di_name, "integer constant",
447 (longlong_t)ap->dn_value, idp->di_name);
452 idp->di_name, dtrace_errmsg(dtp, dtrace_errno(dtp)));
455 idp->di_ctfp = dtt.dtt_ctfp;
456 idp->di_type = dtt.dtt_type;
458 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type);
463 dt_idcook_type(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
465 if (idp->di_type == CTF_ERR) {
469 if (dt_type_lookup(idp->di_iarg, &dtt) == -1) {
472 (const char *)idp->di_iarg, idp->di_name,
476 idp->di_ctfp = dtt.dtt_ctfp;
477 idp->di_type = dtt.dtt_type;
480 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type);
485 dt_idcook_thaw(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
487 if (idp->di_ctfp != NULL && idp->di_type != CTF_ERR)
488 dt_node_type_assign(dnp, idp->di_ctfp, idp->di_type);
492 dt_idcook_inline(dt_node_t *dnp, dt_ident_t *idp, int argc, dt_node_t *args)
494 if (idp->di_kind == DT_IDENT_ARRAY)
495 dt_idcook_assc(dnp, idp, argc, args);
497 dt_idcook_thaw(dnp, idp, argc, args);
501 dt_iddtor_sign(dt_ident_t *idp)
503 if (idp->di_data != NULL)
504 free(((dt_idsig_t *)idp->di_data)->dis_args);
505 free(idp->di_data);
509 dt_iddtor_free(dt_ident_t *idp)
511 free(idp->di_data);
515 dt_iddtor_inline(dt_ident_t *idp)
517 dt_idnode_t *inp = idp->di_iarg;
529 if (idp->di_kind == DT_IDENT_ARRAY)
530 dt_iddtor_sign(idp);
532 dt_iddtor_free(idp);
537 dt_iddtor_none(dt_ident_t *idp)
543 dt_iddtor_probe(dt_ident_t *idp)
545 if (idp->di_data != NULL)
546 dt_probe_destroy(idp->di_data);
550 dt_idsize_type(dt_ident_t *idp)
552 return (ctf_type_size(idp->di_ctfp, idp->di_type));
557 dt_idsize_none(dt_ident_t *idp)
613 const dt_ident_t *idp = dhp->dh_tmpl;
616 dt_dprintf("populating %s idhash from %p\n", dhp->dh_name, (void *)idp);
618 for (; idp->di_name != NULL; idp++) {
619 if (dt_idhash_insert(dhp, idp->di_name,
620 idp->di_kind, idp->di_flags, idp->di_id, idp->di_attr,
621 idp->di_vers, idp->di_ops ? idp->di_ops : &dt_idops_thaw,
622 idp->di_iarg, 0) == NULL)
665 dt_ident_t *idp, *next;
669 for (idp = dhp->dh_hash[i]; idp != NULL; idp = next) {
670 next = idp->di_next;
671 idp->di_ops->di_dtor(idp);
676 for (idp = dhp->dh_hash[i]; idp != NULL; idp = next) {
677 next = idp->di_next;
678 free(idp->di_name);
679 free(idp);
690 dt_ident_t *idp;
694 for (idp = dhp->dh_hash[i]; idp != NULL; idp = idp->di_next) {
699 if (idp->di_kind == DT_IDENT_ARRAY ||
700 idp->di_kind == DT_IDENT_SCALAR ||
701 idp->di_kind == DT_IDENT_AGG)
702 nextid = MAX(nextid, idp->di_id + 1);
714 dt_ident_t *idp;
719 for (idp = dhp->dh_hash[h]; idp != NULL; idp = idp->di_next) {
720 if (strcmp(idp->di_name, name) == 0)
721 return (idp);
754 dt_ident_t *idp;
760 idp = dt_ident_create(name, kind, flags, id,
763 if (idp == NULL)
767 idp->di_next = dhp->dh_hash[h];
769 dhp->dh_hash[h] = idp;
773 dhp->dh_defer(dhp, idp);
775 return (idp);
779 dt_idhash_xinsert(dt_idhash_t *dhp, dt_ident_t *idp)
786 h = dt_strtab_hash(idp->di_name, NULL) % dhp->dh_hashsz;
787 idp->di_next = dhp->dh_hash[h];
788 idp->di_flags &= ~DT_IDFLG_ORPHAN;
790 dhp->dh_hash[h] = idp;
794 dhp->dh_defer(dhp, idp);
803 dt_ident_t *idp;
805 for (idp = dhp->dh_hash[h]; idp != NULL; idp = idp->di_next) {
806 if (idp == key)
809 pp = &idp->di_next;
812 assert(idp == key);
813 *pp = idp->di_next;
818 if (!(idp->di_flags & DT_IDFLG_ORPHAN))
819 dt_ident_destroy(idp);
838 dt_ident_t *idp;
849 for (idp = dhp->dh_hash[i]; idp != NULL; idp = idp->di_next)
850 ids[j++] = idp;
867 dt_ident_t *idp;
871 if ((idp = dt_idhash_lookup(dhp, name)) != NULL)
872 return (idp);
896 dt_ident_t *idp;
900 (idp = malloc(sizeof (dt_ident_t))) == NULL) {
905 idp->di_name = s;
906 idp->di_kind = kind;
907 idp->di_flags = flags;
908 idp->di_id = id;
909 idp->di_attr = attr;
910 idp->di_vers = vers;
911 idp->di_ops = ops;
912 idp->di_iarg = iarg;
913 idp->di_data = NULL;
914 idp->di_ctfp = NULL;
915 idp->di_type = CTF_ERR;
916 idp->di_next = NULL;
917 idp->di_gen = gen;
918 idp->di_lineno = yylineno;
920 return (idp);
926 dt_ident_t *idp;
930 (idp = malloc(sizeof (dt_ident_t))) == NULL) {
935 idp->di_name = s;
936 idp->di_kind = oidp->di_kind;
937 idp->di_flags = oidp->di_flags;
938 idp->di_id = oidp->di_id;
939 idp->di_attr = oidp->di_attr;
940 idp->di_vers = oidp->di_vers;
941 idp->di_ops = oidp->di_ops;
942 idp->di_iarg = oidp->di_iarg;
943 idp->di_data = oidp->di_data;
944 idp->di_ctfp = oidp->di_ctfp;
945 idp->di_type = oidp->di_type;
946 idp->di_next = oidp->di_next;
947 idp->di_gen = oidp->di_gen;
948 idp->di_lineno = oidp->di_lineno;
950 return (idp);
958 dt_ident_destroy(dt_ident_t *idp)
960 idp->di_ops->di_dtor(idp);
961 free(idp->di_name);
962 free(idp);
966 dt_ident_morph(dt_ident_t *idp, ushort_t kind,
969 idp->di_ops->di_dtor(idp);
970 idp->di_kind = kind;
971 idp->di_ops = ops;
972 idp->di_iarg = iarg;
973 idp->di_data = NULL;
977 dt_ident_cook(dt_node_t *dnp, dt_ident_t *idp, dt_node_t **pargp)
989 idp->di_ops->di_cook(dnp, idp, argc, args);
991 if (idp->di_flags & DT_IDFLG_USER)
994 return (dt_attr_min(attr, idp->di_attr));
998 dt_ident_type_assign(dt_ident_t *idp, ctf_file_t *fp, ctf_id_t type)
1000 idp->di_ctfp = fp;
1001 idp->di_type = type;
1005 dt_ident_resolve(dt_ident_t *idp)
1007 while (idp->di_flags & DT_IDFLG_INLINE) {
1008 const dt_node_t *dnp = ((dt_idnode_t *)idp->di_iarg)->din_root;
1020 idp = dnp->dn_ident;
1025 idp = dnp->dn_ident;
1030 return (idp);
1034 dt_ident_size(dt_ident_t *idp)
1036 idp = dt_ident_resolve(idp);
1037 return (idp->di_ops->di_size(idp));
1041 dt_ident_unref(const dt_ident_t *idp)
1043 return (idp->di_gen == yypcb->pcb_hdl->dt_gen &&
1044 (idp->di_flags & (DT_IDFLG_REF|DT_IDFLG_MOD|DT_IDFLG_DECL)) == 0);