void handle_dump(queue_t *q, mblk_t *mp) { struct ctrl_args *ctrl_args; struct ctrl_device *ctrlfd; minor_t minor; int sum; unsigned char *buf; if ((mp->b_cont = allocb(MAXPRINTBUF, BPRI_MED)) == NULL) { printf("handle_ctrl: out of message blocks\n"); qreply(q, mp); return; } buf = DB_BASE(mp->b_cont); sum = rpc_dump(buf, buf + MAXPRINTBUF); sum += port_dump(buf + sum, buf + MAXPRINTBUF); sum += kid_dump(buf + sum, buf + MAXPRINTBUF); sum += flip_netdump(buf + sum, buf + MAXPRINTBUF); sum += int_dump(buf + sum, buf + MAXPRINTBUF); sum += adr_dump(buf + sum, buf + MAXPRINTBUF); sum += ff_dump(buf + sum, buf + MAXPRINTBUF); mp->b_cont->b_rptr = DB_BASE(mp->b_cont); mp->b_cont->b_wptr = mp->b_cont->b_rptr + sum; ctrl_args = (struct ctrl_args *) DB_BASE(mp); ctrl_args->ctrl_status = sum; mp->b_rptr = DB_BASE(mp); mp->b_wptr = mp->b_rptr + sizeof(struct ctrl_args); DB_TYPE(mp) = M_PROTO; qreply(q, mp); }
int main() { // test int dump int nb = 42; int_dump(nb, false); // test string tab vardump char *tab[3]; tab[0] = "salut"; tab[1] = "salu2"; tab[2] = "salu3"; tab[3] = "salu4"; tab[4] = NULL; string_tab_dump(tab, true); srand(time(NULL) + getpid()); // test int tab vardump int **int_tab; int i = 0; int j = 0; if ((int_tab = malloc(sizeof(int *) * 4)) == NULL) return -1; i = 0; while (i < 4) { if ((int_tab[i] = malloc(sizeof(int) * 4)) == NULL) return -1; ++i; } i = 0; while (i < 4) { j = 0; while (j < 4) { int_tab[i][j] = rand() % 10; ++j; } ++i; } int_double_tab_dump(int_tab, 4, 4, true); return 0; }