Esempio n. 1
0
void
do_cksum(int argc, char *argv[])
{
    struct option_info opts[2];
    unsigned long base, len, crc;
    bool base_set, len_set;

    init_opts(&opts[0], 'b', true, OPTION_ARG_TYPE_NUM, 
              (void *)&base, (bool *)&base_set, "base address");
    init_opts(&opts[1], 'l', true, OPTION_ARG_TYPE_NUM, 
              (void *)&len, (bool *)&len_set, "length");
    if (!scan_opts(argc, argv, 1, opts, 2, 0, 0, "")) {
        return;
    }
    if (!base_set || !len_set) {
	if (load_address >= (CYG_ADDRESS)ram_start &&
	    load_address_end < (CYG_ADDRESS)ram_end &&
	    load_address < load_address_end) {
	    base = load_address;
	    len = load_address_end - load_address;
            diag_printf("Computing cksum for area %lx-%lx\n",
                        base, load_address_end);
	} else {
	    diag_printf("usage: cksum -b <addr> -l <length>\n");
	    return;
	}
    }
    crc = cyg_posix_crc32((unsigned char *)base, len);
    diag_printf("POSIX cksum = %lu %lu (0x%08lx 0x%08lx)\n", crc, len, crc, len);
}
Esempio n. 2
0
static void create_file(int i)
{
  cyg_int32 buffer[1020];
  char name[16];
  cyg_uint32 j;
  int fd, err;
  
  sprintf(name,"test%07d",i);

  fd = creat(name, S_IRWXU);
  if (fd == -1) SHOW_RESULT( creat, fd );
  
  for (j=1; j < NELEM(buffer); j++) {
    buffer[j] = rand();
  }
  
  buffer[0] = 0;
  buffer[0] = cyg_posix_crc32((unsigned char *)buffer, sizeof(buffer));
  
  err = write(fd, buffer, sizeof(buffer));
  if (err == -1) SHOW_RESULT( write, err );
  
  err = close(fd);
  if (err == -1) SHOW_RESULT( close, err );
}
Esempio n. 3
0
externC void
cyg_start( void )
{
    CYG_TEST_INIT();

    CYG_TEST_INFO("Calculating CRCs");

    if (1500790746l != cyg_posix_crc32(license_txt,sizeof(license_txt)-1)) {
        CYG_TEST_FAIL("Wrong POSIX CRC32 calculation");
    } else {
        CYG_TEST_PASS("POSIX CRC32 calculation");
    }

    if (1247800780 != cyg_crc32(license_txt,sizeof(license_txt)-1)) {
        CYG_TEST_FAIL("Wrong Gary S. Browns' crc32 calculation");
    } else {
        CYG_TEST_PASS("Gary S. Browns' crc32 calculation");
    }

    if (32256 != cyg_crc16(license_txt,sizeof(license_txt)-1)) {
        CYG_TEST_FAIL_FINISH("Wrong 16bit CRC calculation");
    } else {
        CYG_TEST_PASS_FINISH("16bit CRC calculation");
    }
}
Esempio n. 4
0
static void check_file(int i)
{
  char name[16];
  int err, fd;
  cyg_int32 buffer[1020];
  cyg_uint32 crc;
  
  sprintf(name,"test%07d",i);

  fd = open(name, O_RDONLY);
  if (fd == -1) SHOW_RESULT( open, fd );
  
  err = read(fd, buffer, sizeof(buffer));
  if (err == -1) SHOW_RESULT( read, fd );
  
  crc = buffer[0];
  buffer[0] = 0;
  
  if (crc != cyg_posix_crc32((unsigned char *)buffer, sizeof(buffer))) {
    CYG_TEST_FAIL("File corrupt");
  }

  err = close(fd);
  if (err == -1) SHOW_RESULT( read, fd );
}