static void tftp_parse_oack(struct file_priv *priv, unsigned char *pkt, int len) { unsigned char *opt, *val, *s; pkt[len - 1] = 0; debug("got OACK\n"); #ifdef DEBUG memory_display(pkt, 0, len, 1, 0); #endif s = pkt; while (s < pkt + len) { opt = s; val = s + strlen(s) + 1; if (val > s + len) return; if (!strcmp(opt, "tsize")) priv->filesize = simple_strtoul(val, NULL, 10); if (!strcmp(opt, "blksize")) priv->blocksize = simple_strtoul(val, NULL, 10); debug("OACK opt: %s val: %s\n", opt, val); s = val + strlen(val) + 1; } }
static int i2c_at24_probe(struct i2c_master *master, int argc, char **argv) { int addr; int offset_len; uint8_t buf[256]; (void)argc; (void)argv; addr = 0x50; offset_len = 8; if (!strcmp("spd", argv[0])) { addr = 0x53; } else if (!strcmp("at24c1024", argv[0])) { offset_len = 16; } if (i2c_check_addr(master, addr)) { printf("no at24 chip at addr=0x%02x\n", addr); return -1; } i2c_start(master); i2c_begin_write(master, addr); i2c_rawwrite(master, 0x00); if (offset_len == 16) { i2c_rawwrite(master, 0x00); } i2c_stop(master); i2c_start(master); i2c_begin_read(master, addr); i2c_read(master, &buf[0], 256); i2c_stop(master); memory_display(&buf[0], 0, 256, 1, 0); return 0; }
int parse_args(int argc, char *argv[]) { int opt, idx = 0, flags = 0; unsigned long long val = 0; #ifdef ENABLE_MEM_DUMP unsigned long long cnt = 0; #endif while ((opt = getopt_long(argc, argv, "s:gcpmdhl:", options, NULL)) != -1) { idx++; switch (opt) { case 't': strncpy(tempDir, optarg, sizeof(tempDir)); break; case 'g': flags |= FLAG_CA_GET; break; case 's': if (strncmp(optarg, "0x", 2) == 0) val = strtoull(optarg, NULL, 16); else val = strtoull(optarg, NULL, 10); if (val > 0) DPRINTF("Setting up CPU mask %d: %s\n", (int)val, (cpu_affinity_set(getpid(), (int)val) == 0) ? "OK" : "FAIL"); flags |= FLAG_CA_SET; break; case 'c': flags |= FLAG_CPU_GET; break; case 'p': flags |= FLAG_CPU_SPEED; break; case 'm': flags |= FLAG_MEM_GET; break; case 'h': flags |= FLAG_CPU_DHRYSTONE; break; case 'f': if (strcmp(optarg, "plain") == 0) outType = FORMAT_PLAIN; else if (strcmp(optarg, "xml") == 0) outType = FORMAT_XML; else if (strcmp(optarg, "csv") == 0) outType = FORMAT_CSV; else { fprintf(stderr, "Invalid output format type, valid formats are: plain, xml, csv\n"); exit(1); } break; case 'w': flags |= FLAG_CPU_WHETSTONE; break; case 'l': flags |= FLAG_CPU_LINPACK; if (optarg != NULL) lpArrSize = atoi(optarg); break; case 'r': if (optarg != NULL) prec = atoi(optarg); break; case 'i': flags |= FLAG_DISK_STAT; if (optarg != NULL) dioBufSize = argvToSize(optarg); break; case 'n': flags |= FLAG_NETS_STAT; if (optarg != NULL) net_set_host(optarg, 1); break; case 'u': flags |= FLAG_CA_GET; flags |= FLAG_CPU_GET; flags |= FLAG_CPU_SPEED; flags |= FLAG_CPU_DHRYSTONE; flags |= FLAG_CPU_WHETSTONE; flags |= FLAG_MEM_GET; flags |= FLAG_CPU_LINPACK; if (optarg != NULL) lpArrSize = atoi(optarg); break; case 'e': if ((argc < idx + 2) || (argv[idx + 2] == NULL)) { fprintf(stderr, "Error: Network I/O buffer is missing.\n" "Syntax: %s --net-benchmark-client <host> <size>\n\n", argv[0]); break; } flags |= FLAG_NETC_STAT; if (optarg != NULL) net_set_host(optarg, 0); nioBufSize = argvToSize(argv[idx + 2]); break; #ifdef ENABLE_MEM_DUMP case 'd': if (argc < idx + 3) { fprintf(stderr, "Error: Cannot dump memory since required arguments are not found.\n" "Syntax: %s --dump-memory start_memory memory_size_to_dump\n\n", argv[0]); break; } if (strncmp(argv[idx + 1], "0x", 2) == 0) val = strtoull(argv[idx + 1], NULL, 16); else val = strtoull(argv[idx + 1], NULL, 10); if (strncmp(argv[idx + 2], "0x", 2) == 0) cnt = strtoull(argv[idx + 2], NULL, 16); else cnt = strtoull(argv[idx + 2], NULL, 10); DPRINTF("Dumping memory from 0x%llx to 0x%llx\n", val, val + cnt); memory_display((char *)val, cnt); flags |= FLAG_MEM_DUMP; break; #endif } } if (flags == 0) { usage(argv[0]); exit(1); } return flags; }