source: SVN/cambria/redboot/packages/redboot/current/src/cksum.c @ 1

Last change on this file since 1 was 1, checked in by Tim Harvey, 2 years ago

restored latest version of files from server backup

Signed-off-by: Tim Harvey <tharvey@…>

File size: 3.5 KB
Line 
1//==========================================================================
2//
3//      cksum.c
4//
5//      RedBoot POSIX CRC calculation/command
6//
7//==========================================================================
8//####ECOSGPLCOPYRIGHTBEGIN####
9// -------------------------------------------
10// This file is part of eCos, the Embedded Configurable Operating System.
11// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
12// Copyright (C) 2002 Gary Thomas
13//
14// eCos is free software; you can redistribute it and/or modify it under
15// the terms of the GNU General Public License as published by the Free
16// Software Foundation; either version 2 or (at your option) any later version.
17//
18// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
19// WARRANTY; without even the implied warranty of MERCHANTABILITY or
20// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
21// for more details.
22//
23// You should have received a copy of the GNU General Public License along
24// with eCos; if not, write to the Free Software Foundation, Inc.,
25// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
26//
27// As a special exception, if other files instantiate templates or use macros
28// or inline functions from this file, or you compile this file and link it
29// with other works to produce a work based on this file, this file does not
30// by itself cause the resulting work to be covered by the GNU General Public
31// License. However the source code for this file must still be made available
32// in accordance with section (3) of the GNU General Public License.
33//
34// This exception does not invalidate any other reasons why a work based on
35// this file might be covered by the GNU General Public License.
36//
37// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
38// at http://sources.redhat.com/ecos/ecos-license/
39// -------------------------------------------
40//####ECOSGPLCOPYRIGHTEND####
41//==========================================================================
42//#####DESCRIPTIONBEGIN####
43//
44// Author(s):    gthomas
45// Contributors: gthomas
46// Date:         2001-01-31
47// Purpose:     
48// Description: 
49//             
50// This code is part of RedBoot (tm).
51//
52//####DESCRIPTIONEND####
53//
54//==========================================================================
55
56#include <redboot.h>
57
58// Compute a CRC, using the POSIX 1003 definition
59
60RedBoot_cmd("cksum", 
61            "Compute a 32bit checksum [POSIX algorithm] for a range of memory", 
62            "-b <location> -l <length>",
63            do_cksum
64    );
65
66void
67do_cksum(int argc, char *argv[])
68{
69    struct option_info opts[2];
70    unsigned long base, len, crc;
71    bool base_set, len_set;
72
73    init_opts(&opts[0], 'b', true, OPTION_ARG_TYPE_NUM, 
74              (void *)&base, (bool *)&base_set, "base address");
75    init_opts(&opts[1], 'l', true, OPTION_ARG_TYPE_NUM, 
76              (void *)&len, (bool *)&len_set, "length");
77    if (!scan_opts(argc, argv, 1, opts, 2, 0, 0, "")) {
78        return;
79    }
80    if (!base_set || !len_set) {
81        if (load_address >= (CYG_ADDRESS)ram_start &&
82            load_address_end < (CYG_ADDRESS)ram_end &&
83            load_address < load_address_end) {
84            base = load_address;
85            len = load_address_end - load_address;
86            diag_printf("Computing cksum for area %p-%p\n",
87                        base, load_address_end);
88        } else {
89            diag_printf("usage: cksum -b <addr> -l <length>\n");
90            return;
91        }
92    }
93    crc = cyg_posix_crc32((unsigned char *)base, len);
94    diag_printf("POSIX cksum = %lu %lu (0x%08lx 0x%08lx)\n", crc, len, crc, len);
95}
96
Note: See TracBrowser for help on using the repository browser.