int do_env_print (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int i; int rcode = 0; if (argc == 1) { /* print all env vars */ rcode = env_print(NULL); if (!rcode) return 1; printf("\nEnvironment size: %d/%ld bytes\n", rcode, (ulong)ENV_SIZE); return 0; } /* print selected env vars */ for (i = 1; i < argc; ++i) { int rc = env_print(argv[i]); if (!rc) { printf("## Error: \"%s\" not defined\n", argv[i]); ++rcode; } } return rcode; }
static int do_env_print(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int i; int rcode = 0; int env_flag = H_HIDE_DOT; if (argc > 1 && argv[1][0] == '-' && argv[1][1] == 'a') { argc--; argv++; env_flag &= ~H_HIDE_DOT; } if (argc == 1) { /* print all env vars */ rcode = env_print(NULL, env_flag); if (!rcode) return 1; printf("\nEnvironment size: %d/%ld bytes\n", rcode, (ulong)ENV_SIZE); return 0; } /* print selected env vars */ env_flag &= ~H_HIDE_DOT; for (i = 1; i < argc; ++i) { int rc = env_print(argv[i], env_flag); if (!rc) { printf("## Error: \"%s\" not defined\n", argv[i]); ++rcode; } } return rcode; }
int do_printfac(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) { char v[] = "vendor"; char d[] = "device"; env_print(v); env_print(d); //printf("vendor = %s\n", "huahuan"); return 0; }
void real_main (int argc, char *const argv[]) { int i; /* TODO: handle -i */ env_import (); for (i = 1; i < argc && is_assignment (argv[i]); ++i) env_parse_assignment (argv[i]); if (i == argc) env_print (); else { env_export (); must_execvp (argv + i); } }
/** * virtqueue_dump Dumps important virtqueue fields , use for debugging purposes * * @param vq - Pointer to VirtIO queue control block */ void virtqueue_dump(struct virtqueue *vq) { if (vq == VQ_NULL) return; env_print("VQ: %s - size=%d; free=%d; used=%d; queued=%d; " "desc_head_idx=%d; avail.idx=%d; used_cons_idx=%d; " "used.idx=%d; avail.flags=0x%x; used.flags=0x%x\r\n", vq->vq_name, vq->vq_nentries, vq->vq_free_cnt, virtqueue_nused(vq), vq->vq_queued_cnt, vq->vq_desc_head_idx, vq->vq_ring.avail->idx, vq->vq_used_cons_idx, vq->vq_ring.used->idx, vq->vq_ring.avail->flags, vq->vq_ring.used->flags); }
/** * virtqueue_free - Frees VirtIO queue resources * * @param vq - Pointer to VirtIO queue control block * */ void virtqueue_free(struct virtqueue *vq) { if (vq != VQ_NULL) { if (vq->vq_free_cnt != vq->vq_nentries) { env_print ("\r\nWARNING %s: freeing non-empty virtqueue\r\n", vq->vq_name); } //TODO : Need to free indirect buffers here if (vq->vq_ring_mem != VQ_NULL) { vq->vq_ring_size = 0; vq->vq_ring_mem = VQ_NULL; } env_free_memory(vq); } }