Lines Matching defs:ddp

40 dt_decl_check(dt_decl_t *ddp)
42 if (ddp->dd_kind == CTF_K_UNKNOWN)
43 return (ddp); /* nothing to check if the type is not yet set */
45 if (ddp->dd_name != NULL && strcmp(ddp->dd_name, "char") == 0 &&
46 (ddp->dd_attr & (DT_DA_SHORT | DT_DA_LONG | DT_DA_LONGLONG))) {
51 if (ddp->dd_name != NULL && strcmp(ddp->dd_name, "void") == 0 &&
52 (ddp->dd_attr & (DT_DA_SHORT | DT_DA_LONG | DT_DA_LONGLONG |
58 if (ddp->dd_kind != CTF_K_INTEGER &&
59 (ddp->dd_attr & (DT_DA_SIGNED | DT_DA_UNSIGNED))) {
64 if (ddp->dd_kind != CTF_K_INTEGER && ddp->dd_kind != CTF_K_FLOAT &&
65 (ddp->dd_attr & (DT_DA_LONG | DT_DA_LONGLONG))) {
71 return (ddp);
77 dt_decl_t *ddp = malloc(sizeof (dt_decl_t));
79 if (ddp == NULL)
82 ddp->dd_kind = kind;
83 ddp->dd_attr = 0;
84 ddp->dd_ctfp = NULL;
85 ddp->dd_type = CTF_ERR;
86 ddp->dd_name = name;
87 ddp->dd_node = NULL;
88 ddp->dd_next = NULL;
90 return (ddp);
94 dt_decl_free(dt_decl_t *ddp)
98 for (; ddp != NULL; ddp = ndp) {
99 ndp = ddp->dd_next;
100 free(ddp->dd_name);
101 dt_node_list_free(&ddp->dd_node);
102 free(ddp);
110 dt_decl_t *ddp = dsp->ds_decl;
112 while (ddp->dd_next != NULL) {
113 dsp->ds_decl = ddp->dd_next;
114 ddp->dd_next = NULL;
115 dt_decl_free(ddp);
116 ddp = dsp->ds_decl;
121 dt_decl_push(dt_decl_t *ddp)
132 assert(ddp->dd_next == NULL);
133 ddp->dd_next = top;
134 dsp->ds_decl = ddp;
136 return (ddp);
143 dt_decl_t *ddp = dt_decl_top();
153 return (ddp);
177 dt_decl_t *ddp = yypcb->pcb_dstack.ds_decl;
179 if (ddp == NULL)
182 if (ddp->dd_kind == CTF_K_UNKNOWN && ddp->dd_name == NULL) {
183 ddp->dd_kind = CTF_K_INTEGER;
184 (void) dt_decl_check(ddp);
187 return (ddp);
194 dt_decl_t *ddp = dsp->ds_decl;
204 if (ddp == NULL)
205 ddp = dt_decl_push(dt_decl_alloc(CTF_K_UNKNOWN, NULL));
207 return (ddp);
232 dt_decl_t *ddp = yypcb->pcb_dstack.ds_decl;
234 if (ddp == NULL)
244 if (ddp->dd_name != NULL && kind == CTF_K_TYPEDEF) {
250 if (ddp->dd_name != NULL || ddp->dd_kind != CTF_K_UNKNOWN)
253 ddp->dd_kind = kind;
254 ddp->dd_name = name;
261 return (dt_decl_check(ddp));
267 dt_decl_t *ddp = yypcb->pcb_dstack.ds_decl;
269 if (ddp == NULL) {
270 ddp = dt_decl_push(dt_decl_alloc(CTF_K_UNKNOWN, NULL));
271 ddp->dd_attr = attr;
272 return (ddp);
275 if (attr == DT_DA_LONG && (ddp->dd_attr & DT_DA_LONG)) {
276 ddp->dd_attr &= ~DT_DA_LONG;
280 ddp->dd_attr |= attr;
281 return (dt_decl_check(ddp));
372 dt_decl_t *ddp = dt_decl_push(dt_decl_alloc(CTF_K_ARRAY, NULL));
374 dt_decl_t *ndp = ddp;
385 if (ndp != ddp) {
390 dsp->ds_decl = ddp->dd_next;
391 ddp->dd_next = ndp->dd_next;
392 ndp->dd_next = ddp;
395 if (ddp->dd_next->dd_name != NULL &&
396 strcmp(ddp->dd_next->dd_name, "void") == 0)
400 dnp = ddp->dd_node = dt_node_cook(dnp, DT_IDFLG_REF);
412 ddp->dd_node = dnp;
416 return (ddp);
433 dt_decl_t *ddp = dt_decl_alloc(CTF_K_FUNCTION, NULL);
435 ddp->dd_node = dnp;
441 return (dt_decl_push(ddp));
447 return (dt_decl_push(ddp));
449 ddp->dd_next = pdp->dd_next;
450 pdp->dd_next = ddp;
464 dt_decl_t *ddp = dt_decl_spec(kind, name);
498 ddp->dd_ctfp = ctfp;
499 ddp->dd_type = type;
502 return (ddp);
509 dt_decl_t *ddp = yypcb->pcb_dstack.ds_decl;
524 if (ddp == NULL)
530 if (ddp->dd_kind == CTF_K_UNKNOWN && ddp->dd_name == NULL) {
531 ddp->dd_kind = CTF_K_INTEGER;
532 (void) dt_decl_check(ddp);
535 if (dt_decl_type(ddp, &dtt) != 0)
661 dt_decl_t *ddp = dt_decl_spec(CTF_K_ENUM, name);
687 ddp->dd_ctfp = ctfp;
688 ddp->dd_type = type;
691 return (ddp);
817 dt_decl_type(dt_decl_t *ddp, dtrace_typeinfo_t *tip)
841 if (ddp->dd_ctfp != NULL &&
842 (dmp = dt_module_lookup_by_ctf(dtp, ddp->dd_ctfp)) != NULL) {
844 tip->dtt_ctfp = ddp->dd_ctfp;
845 tip->dtt_type = ddp->dd_type;
856 if (ddp->dd_kind == CTF_K_FUNCTION) {
868 if (ddp->dd_kind == CTF_K_POINTER) {
869 if (ddp->dd_next->dd_kind == CTF_K_FUNCTION) {
876 if ((rv = dt_decl_type(ddp->dd_next, tip)) == 0 &&
911 if (ddp->dd_kind == CTF_K_ARRAY) {
916 if (ddp->dd_node != NULL &&
917 ddp->dd_node->dn_kind == DT_NODE_TYPE) {
924 if ((rv = dt_decl_type(ddp->dd_next, tip)) != 0)
953 r.ctr_nelems = ddp->dd_node ?
954 (uint_t)ddp->dd_node->dn_value : 0;
974 name = alloca(ddp->dd_name ? strlen(ddp->dd_name) + 20 : 20);
977 switch (ddp->dd_kind) {
980 if (ddp->dd_attr & DT_DA_SIGNED)
982 if (ddp->dd_attr & DT_DA_UNSIGNED)
984 if (ddp->dd_attr & DT_DA_SHORT)
986 if (ddp->dd_attr & DT_DA_LONG)
988 if (ddp->dd_attr & DT_DA_LONGLONG)
990 if (ddp->dd_attr == 0 && ddp->dd_name == NULL)
1006 "bad decl kind %u\n", ddp->dd_kind);
1014 if (ddp->dd_name != NULL && (ddp->dd_kind != CTF_K_INTEGER ||
1015 (ddp->dd_attr & (DT_DA_SHORT | DT_DA_LONG | DT_DA_LONGLONG)) == 0))
1016 (void) strcat(name, ddp->dd_name);
1026 switch (ddp->dd_kind) {
1031 ddp->dd_name, ddp->dd_kind);
1045 ddp->dd_ctfp = dmp->dm_ctfp;
1046 ddp->dd_type = type;