Lines Matching refs:ddp

38 dt_decl_check(dt_decl_t *ddp)
40 if (ddp->dd_kind == CTF_K_UNKNOWN)
41 return (ddp); /* nothing to check if the type is not yet set */
43 if (ddp->dd_name != NULL && strcmp(ddp->dd_name, "char") == 0 &&
44 (ddp->dd_attr & (DT_DA_SHORT | DT_DA_LONG | DT_DA_LONGLONG))) {
49 if (ddp->dd_name != NULL && strcmp(ddp->dd_name, "void") == 0 &&
50 (ddp->dd_attr & (DT_DA_SHORT | DT_DA_LONG | DT_DA_LONGLONG |
56 if (ddp->dd_kind != CTF_K_INTEGER &&
57 (ddp->dd_attr & (DT_DA_SIGNED | DT_DA_UNSIGNED))) {
62 if (ddp->dd_kind != CTF_K_INTEGER && ddp->dd_kind != CTF_K_FLOAT &&
63 (ddp->dd_attr & (DT_DA_LONG | DT_DA_LONGLONG))) {
69 return (ddp);
75 dt_decl_t *ddp = malloc(sizeof (dt_decl_t));
77 if (ddp == NULL)
80 ddp->dd_kind = kind;
81 ddp->dd_attr = 0;
82 ddp->dd_ctfp = NULL;
83 ddp->dd_type = CTF_ERR;
84 ddp->dd_name = name;
85 ddp->dd_node = NULL;
86 ddp->dd_next = NULL;
88 return (ddp);
92 dt_decl_free(dt_decl_t *ddp)
96 for (; ddp != NULL; ddp = ndp) {
97 ndp = ddp->dd_next;
98 free(ddp->dd_name);
99 dt_node_list_free(&ddp->dd_node);
100 free(ddp);
108 dt_decl_t *ddp = dsp->ds_decl;
110 while (ddp->dd_next != NULL) {
111 dsp->ds_decl = ddp->dd_next;
112 ddp->dd_next = NULL;
113 dt_decl_free(ddp);
114 ddp = dsp->ds_decl;
119 dt_decl_push(dt_decl_t *ddp)
130 assert(ddp->dd_next == NULL);
131 ddp->dd_next = top;
132 dsp->ds_decl = ddp;
134 return (ddp);
141 dt_decl_t *ddp = dt_decl_top();
151 return (ddp);
175 dt_decl_t *ddp = yypcb->pcb_dstack.ds_decl;
177 if (ddp == NULL)
180 if (ddp->dd_kind == CTF_K_UNKNOWN && ddp->dd_name == NULL) {
181 ddp->dd_kind = CTF_K_INTEGER;
182 (void) dt_decl_check(ddp);
185 return (ddp);
192 dt_decl_t *ddp = dsp->ds_decl;
202 if (ddp == NULL)
203 ddp = dt_decl_push(dt_decl_alloc(CTF_K_UNKNOWN, NULL));
205 return (ddp);
230 dt_decl_t *ddp = yypcb->pcb_dstack.ds_decl;
232 if (ddp == NULL)
242 if (ddp->dd_name != NULL && kind == CTF_K_TYPEDEF) {
248 if (ddp->dd_name != NULL || ddp->dd_kind != CTF_K_UNKNOWN)
251 ddp->dd_kind = kind;
252 ddp->dd_name = name;
259 return (dt_decl_check(ddp));
265 dt_decl_t *ddp = yypcb->pcb_dstack.ds_decl;
267 if (ddp == NULL) {
268 ddp = dt_decl_push(dt_decl_alloc(CTF_K_UNKNOWN, NULL));
269 ddp->dd_attr = attr;
270 return (ddp);
273 if (attr == DT_DA_LONG && (ddp->dd_attr & DT_DA_LONG)) {
274 ddp->dd_attr &= ~DT_DA_LONG;
278 ddp->dd_attr |= attr;
279 return (dt_decl_check(ddp));
370 dt_decl_t *ddp = dt_decl_push(dt_decl_alloc(CTF_K_ARRAY, NULL));
372 dt_decl_t *ndp = ddp;
383 if (ndp != ddp) {
388 dsp->ds_decl = ddp->dd_next;
389 ddp->dd_next = ndp->dd_next;
390 ndp->dd_next = ddp;
393 if (ddp->dd_next->dd_name != NULL &&
394 strcmp(ddp->dd_next->dd_name, "void") == 0)
398 dnp = ddp->dd_node = dt_node_cook(dnp, DT_IDFLG_REF);
410 ddp->dd_node = dnp;
414 return (ddp);
431 dt_decl_t *ddp = dt_decl_alloc(CTF_K_FUNCTION, NULL);
433 ddp->dd_node = dnp;
439 return (dt_decl_push(ddp));
445 return (dt_decl_push(ddp));
447 ddp->dd_next = pdp->dd_next;
448 pdp->dd_next = ddp;
462 dt_decl_t *ddp = dt_decl_spec(kind, name);
496 ddp->dd_ctfp = ctfp;
497 ddp->dd_type = type;
500 return (ddp);
507 dt_decl_t *ddp = yypcb->pcb_dstack.ds_decl;
522 if (ddp == NULL)
528 if (ddp->dd_kind == CTF_K_UNKNOWN && ddp->dd_name == NULL) {
529 ddp->dd_kind = CTF_K_INTEGER;
530 (void) dt_decl_check(ddp);
533 if (dt_decl_type(ddp, &dtt) != 0)
659 dt_decl_t *ddp = dt_decl_spec(CTF_K_ENUM, name);
685 ddp->dd_ctfp = ctfp;
686 ddp->dd_type = type;
689 return (ddp);
811 dt_decl_type(dt_decl_t *ddp, dtrace_typeinfo_t *tip)
835 if (ddp->dd_ctfp != NULL &&
836 (dmp = dt_module_lookup_by_ctf(dtp, ddp->dd_ctfp)) != NULL) {
838 tip->dtt_ctfp = ddp->dd_ctfp;
839 tip->dtt_type = ddp->dd_type;
850 if (ddp->dd_kind == CTF_K_FUNCTION) {
862 if (ddp->dd_kind == CTF_K_POINTER) {
863 if (ddp->dd_next->dd_kind == CTF_K_FUNCTION) {
870 if ((rv = dt_decl_type(ddp->dd_next, tip)) == 0 &&
905 if (ddp->dd_kind == CTF_K_ARRAY) {
910 if (ddp->dd_node != NULL &&
911 ddp->dd_node->dn_kind == DT_NODE_TYPE) {
918 if ((rv = dt_decl_type(ddp->dd_next, tip)) != 0)
947 r.ctr_nelems = ddp->dd_node ?
948 (uint_t)ddp->dd_node->dn_value : 0;
968 name = alloca(ddp->dd_name ? strlen(ddp->dd_name) + 20 : 20);
971 switch (ddp->dd_kind) {
974 if (ddp->dd_attr & DT_DA_SIGNED)
976 if (ddp->dd_attr & DT_DA_UNSIGNED)
978 if (ddp->dd_attr & DT_DA_SHORT)
980 if (ddp->dd_attr & DT_DA_LONG)
982 if (ddp->dd_attr & DT_DA_LONGLONG)
984 if (ddp->dd_attr == 0 && ddp->dd_name == NULL)
1000 "bad decl kind %u\n", ddp->dd_kind);
1008 if (ddp->dd_name != NULL && (ddp->dd_kind != CTF_K_INTEGER ||
1009 (ddp->dd_attr & (DT_DA_SHORT | DT_DA_LONG | DT_DA_LONGLONG)) == 0))
1010 (void) strcat(name, ddp->dd_name);
1020 switch (ddp->dd_kind) {
1025 ddp->dd_name, ddp->dd_kind);
1039 ddp->dd_ctfp = dmp->dm_ctfp;
1040 ddp->dd_type = type;