annotate packages/redboot/current/include/redboot.h @ 3292:7f8e529b4d82 default tip

Fix FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF() so it works with negative offsets.
author vae
date Wed, 29 Apr 2015 23:31:48 +0000
parents a75d37e86790
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
1 //==========================================================================
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
2 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
3 // redboot.h
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
4 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
5 // Standard interfaces for RedBoot
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
6 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
7 //==========================================================================
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
8 // ####ECOSGPLCOPYRIGHTBEGIN####
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
9 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
12 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
13 // eCos is free software; you can redistribute it and/or modify it under
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
14 // the terms of the GNU General Public License as published by the Free
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
15 // Software Foundation; either version 2 or (at your option) any later
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
16 // version.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
17 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
18 // eCos is distributed in the hope that it will be useful, but WITHOUT
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
19 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
20 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
21 // for more details.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
22 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
23 // You should have received a copy of the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
24 // along with eCos; if not, write to the Free Software Foundation, Inc.,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
25 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
26 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
27 // As a special exception, if other files instantiate templates or use
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
28 // macros or inline functions from this file, or you compile this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
29 // and link it with other works to produce a work based on this file,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
30 // this file does not by itself cause the resulting work to be covered by
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
31 // the GNU General Public License. However the source code for this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
32 // must still be made available in accordance with section (3) of the GNU
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
33 // General Public License v2.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
34 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
35 // This exception does not invalidate any other reasons why a work based
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
36 // on this file might be covered by the GNU General Public License.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
37 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 2614
diff changeset
38 // ####ECOSGPLCOPYRIGHTEND####
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
39 //==========================================================================
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
40 //#####DESCRIPTIONBEGIN####
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
41 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
42 // Author(s): gthomas
307
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 284
diff changeset
43 // Contributors: gthomas, tkoeller
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
44 // Date: 2000-07-14
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
45 // Purpose:
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
46 // Description:
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
47 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
48 // This code is part of RedBoot (tm).
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
49 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
50 //####DESCRIPTIONEND####
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
51 //
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
52 //==========================================================================
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
53
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
54 #ifndef _REDBOOT_H_
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
55 #define _REDBOOT_H_
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
56
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
57 #include <pkgconf/redboot.h>
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
58 #include <pkgconf/hal.h>
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
59 #include <cyg/hal/hal_if.h>
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
60 #include <cyg/hal/hal_tables.h>
1740
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
61 #include <cyg/hal/hal_endian.h>
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
62 #include <cyg/infra/diag.h>
284
3e80ecaaa3f8 * src/crc.c: Removed. Replaced with the CRC package.
asl
parents: 245
diff changeset
63 #include <cyg/crc/crc.h>
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
64 #include <string.h>
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
65
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
66 #ifdef CYGPKG_REDBOOT_NETWORKING
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
67 #include <net/net.h>
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
68 #include <net/bootp.h>
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
69 // Determine an IP address for this node, using BOOTP
3097
a75d37e86790 Create new package for DHCP/BOOTP support so that it can be disable
grante
parents: 2729
diff changeset
70 #ifdef CYGPKG_REDBOOT_NETWORKING_BOOTP
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
71 extern int __bootp_find_local_ip(bootp_header_t *info);
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
72 #endif
3097
a75d37e86790 Create new package for DHCP/BOOTP support so that it can be disable
grante
parents: 2729
diff changeset
73 #endif
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
74
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
75 #ifdef DEFINE_VARS
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
76 #define EXTERN
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
77 #else
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
78 #define EXTERN extern
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
79 #endif
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
80
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
81 // Global variables
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
82 EXTERN int argc;
161
ac086aa3217e Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents: 159
diff changeset
83 #define MAX_ARGV 16
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
84 EXTERN char *argv[MAX_ARGV];
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
85 EXTERN unsigned char *ram_start, *ram_end;
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1122
diff changeset
86 EXTERN struct _mem_segment {
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1122
diff changeset
87 unsigned char *start, *end;
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1122
diff changeset
88 } mem_segments[CYGBLD_REDBOOT_MAX_MEM_SEGMENTS];
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1122
diff changeset
89 #define NO_MEMORY (unsigned char *)0xFFFFFFFF
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1122
diff changeset
90 EXTERN bool valid_address(unsigned char *addr);
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1122
diff changeset
91 EXTERN void cyg_plf_memory_segment(int seg, unsigned char **start, unsigned char **end);
2195
5c5e93c863ac Redundant FIS table support - from Alexander Neundorf
gthomas
parents: 2066
diff changeset
92 EXTERN unsigned char *workspace_start, *workspace_end, *workspace_end_init;
196
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents: 195
diff changeset
93
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents: 195
diff changeset
94 // Data squirreled away after a load operation
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents: 195
diff changeset
95 EXTERN unsigned long entry_address;
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents: 195
diff changeset
96 EXTERN unsigned long load_address;
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents: 195
diff changeset
97 EXTERN unsigned long load_address_end;
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents: 195
diff changeset
98
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
99
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
100 #ifdef CYGPKG_REDBOOT_ANY_CONSOLE
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
101 EXTERN bool console_selected;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
102 #endif
128
0c2b7be0d798 Merge from eCos master repository on 2000-10-12-08:46:24-BST
jlarmour
parents: 126
diff changeset
103 EXTERN bool console_echo;
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 149
diff changeset
104 EXTERN bool gdb_active;
195
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 192
diff changeset
105 #if CYGNUM_REDBOOT_CMD_LINE_EDITING != 0
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 192
diff changeset
106 EXTERN bool cmd_history;
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 192
diff changeset
107 #endif
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
108
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
109 #ifdef CYGPKG_REDBOOT_NETWORKING
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
110 EXTERN bool have_net, use_bootp;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
111 EXTERN bootp_header_t my_bootp_info;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
112 EXTERN int gdb_port;
192
9dd39c51f7a7 Fix net_debug bug
jlarmour
parents: 184
diff changeset
113 EXTERN bool net_debug;
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
114 #endif
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
115
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 156
diff changeset
116 #ifdef CYGFUN_REDBOOT_BOOT_SCRIPT
2614
6cbecf3cc2e4 * src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents: 2395
diff changeset
117 EXTERN char *script;
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
118 EXTERN int script_timeout;
165
d63db767121d Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents: 161
diff changeset
119 #ifdef CYGSEM_REDBOOT_VARIABLE_BAUD_RATE
159
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 156
diff changeset
120 EXTERN int console_baud_rate;
511f4dc167f6 Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents: 156
diff changeset
121 #endif
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
122 #endif
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
123
307
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 284
diff changeset
124 #ifdef CYGOPT_REDBOOT_FIS_ZLIB_COMMON_BUFFER
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 284
diff changeset
125 EXTERN unsigned char *fis_zlib_common_buffer;
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 284
diff changeset
126 #endif
906a5d289c6d Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents: 284
diff changeset
127
1223
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1122
diff changeset
128 #ifdef CYGSEM_REDBOOT_PLF_STARTUP
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1122
diff changeset
129 EXTERN void cyg_plf_redboot_startup(void);
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1122
diff changeset
130 #endif
dbcfe4e0dbd2 New platform - TAMS MOAB - and generic changes to support it
gthomas
parents: 1122
diff changeset
131
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
132 // Prototypes
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
133 typedef int _printf_fun(const char *fmt, ...);
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
134 externC int strcasecmp(const char *s1, const char *s2);
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
135 externC int strncasecmp(const char *s1, const char *s2, size_t len);
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
136
2614
6cbecf3cc2e4 * src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents: 2395
diff changeset
137 externC void mon_write_char(unsigned char c);
6cbecf3cc2e4 * src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents: 2395
diff changeset
138 externC bool mon_read_char_with_timeout(unsigned char *c);
2066
5d5572c64422 FIS fix from Stefan Sommerfeld, ANSI cursor keys from Gary Thomas
gthomas
parents: 1740
diff changeset
139 externC void mon_set_read_char_timeout(int ms);
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
140 externC bool verify_action(char *fmt, ...);
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
141 externC bool verify_action_with_timeout(int timeout, char *fmt, ...);
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 130
diff changeset
142
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 130
diff changeset
143 // Read a single line of input from the console, possibly with timeout
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
144 externC int _rb_gets(char *line, int len, int timeout);
195
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 192
diff changeset
145 // Just like _rb_gets(), except that the line buffer is assumed to contain
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 192
diff changeset
146 // valid input data. This provides an easy mechanism for edit-in-place.
67850532eebb Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents: 192
diff changeset
147 externC int _rb_gets_preloaded(char *line, int len, int timeout);
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 130
diff changeset
148 // Result codes from 'gets()'
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 130
diff changeset
149 #define _GETS_TIMEOUT -1
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 130
diff changeset
150 #define _GETS_CTRLC -2
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 130
diff changeset
151 #define _GETS_GDB 0
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 130
diff changeset
152 #define _GETS_OK 1
1122
92e31da869cc Add ^C abort functionality to BOOTP and PING operations.
gthomas
parents: 307
diff changeset
153 // Test for ^C on the console. This function should only be used if any
92e31da869cc Add ^C abort functionality to BOOTP and PING operations.
gthomas
parents: 307
diff changeset
154 // other console input can be discarded, e.g. while performing some long
92e31da869cc Add ^C abort functionality to BOOTP and PING operations.
gthomas
parents: 307
diff changeset
155 // computation, waiting for the network, etc. Returns 'true' if ^C typed.
92e31da869cc Add ^C abort functionality to BOOTP and PING operations.
gthomas
parents: 307
diff changeset
156 externC bool _rb_break(int timeout);
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
157
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
158 // "console" selection
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
159 externC int start_console(void);
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
160 externC void end_console(int old_console);
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
161
2614
6cbecf3cc2e4 * src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents: 2395
diff changeset
162 // Tick functions
6cbecf3cc2e4 * src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents: 2395
diff changeset
163 __externC unsigned long do_ms_tick(void);
6cbecf3cc2e4 * src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents: 2395
diff changeset
164 __externC unsigned long get_ms_ticks(void);
6cbecf3cc2e4 * src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents: 2395
diff changeset
165 __externC void ms_ticks_add_us(long);
6cbecf3cc2e4 * src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents: 2395
diff changeset
166
6cbecf3cc2e4 * src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents: 2395
diff changeset
167 #define MS_TICKS() get_ms_ticks()
6cbecf3cc2e4 * src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents: 2395
diff changeset
168 #define MS_TICKS_DELAY() do_ms_tick()
6cbecf3cc2e4 * src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents: 2395
diff changeset
169
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
170 // Alias functions
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
171 #ifdef CYGSEM_REDBOOT_FLASH_ALIASES
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
172 externC char *flash_lookup_alias(char *alias, char *alias_buf);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
173 #endif
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
174 externC void expand_aliases(char *line, int len);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
175
228
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
176 //
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
177 // Stream I/O support
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
178 //
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
179
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
180 typedef struct {
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
181 char *filename;
245
a6660704f7a6 Fix problem with x/y-modem load.
gthomas
parents: 228
diff changeset
182 int mode;
228
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
183 int chan;
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
184 #ifdef CYGPKG_REDBOOT_NETWORKING
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
185 struct sockaddr_in *server;
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
186 #endif
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
187 } connection_info_t;
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
188
228
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
189 typedef struct {
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
190 int (*open)(connection_info_t *info, int *err);
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
191 void (*close)(int *err);
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
192 void (*terminate)(bool abort, int (*getc)(void));
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
193 int (*read)(char *buf, int size, int *err);
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
194 char *(*error)(int err);
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
195 } getc_io_funcs_t;
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
196
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
197 #define GETC_IO_FUNCS(_label_, _open_, _close_, _terminate_, _read_, _error_) \
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
198 getc_io_funcs_t _label_ = { \
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
199 _open_, _close_, _terminate_, _read_, _error_ \
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
200 };
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
201
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
202 struct load_io_entry {
245
a6660704f7a6 Fix problem with x/y-modem load.
gthomas
parents: 228
diff changeset
203 char *name;
228
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
204 getc_io_funcs_t *funcs;
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
205 bool can_verbose;
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
206 bool need_filename;
245
a6660704f7a6 Fix problem with x/y-modem load.
gthomas
parents: 228
diff changeset
207 int mode;
228
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
208 } CYG_HAL_TABLE_TYPE;
245
a6660704f7a6 Fix problem with x/y-modem load.
gthomas
parents: 228
diff changeset
209 #define _RedBoot_load(_name_,_funcs_,_verbose_,_filename_,_mode_) \
a6660704f7a6 Fix problem with x/y-modem load.
gthomas
parents: 228
diff changeset
210 struct load_io_entry _load_tab_##_funcs_##_name_ \
a6660704f7a6 Fix problem with x/y-modem load.
gthomas
parents: 228
diff changeset
211 CYG_HAL_TABLE_QUALIFIED_ENTRY(RedBoot_load,_funcs_##_name) = \
a6660704f7a6 Fix problem with x/y-modem load.
gthomas
parents: 228
diff changeset
212 { #_name_, &_funcs_, _verbose_, _filename_, _mode_ };
a6660704f7a6 Fix problem with x/y-modem load.
gthomas
parents: 228
diff changeset
213 #define RedBoot_load(_name_,_funcs_,_verbose_,_filename_, _mode_) \
a6660704f7a6 Fix problem with x/y-modem load.
gthomas
parents: 228
diff changeset
214 _RedBoot_load(_name_,_funcs_,_verbose_,_filename_,_mode_)
228
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
215
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
216 #ifdef CYGPKG_COMPRESS_ZLIB
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
217 // Decompression support
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
218 typedef struct _pipe {
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
219 unsigned char* in_buf; // only changed by producer
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
220 int in_avail; // only changed by producer
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
221 unsigned char* out_buf; // only changed by consumer (init by producer)
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
222 int out_size; // only changed by consumer (init by producer)
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
223 int out_max; // set by producer
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
224 const char* msg; // message from consumer
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
225 void* priv; // handler's data
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
226 } _pipe_t;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
227
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
228 typedef int _decompress_fun_init(_pipe_t*);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
229 typedef int _decompress_fun_inflate(_pipe_t*);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
230 typedef int _decompress_fun_close(_pipe_t*, int);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
231
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
232 externC _decompress_fun_init* _dc_init;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
233 externC _decompress_fun_inflate* _dc_inflate;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
234 externC _decompress_fun_close* _dc_close;
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
235 #endif // CYGPKG_COMPRESS_ZLIB
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
236
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
237 // CLI support functions
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
238 externC bool parse_num(char *s, unsigned long *val, char **es, char *delim);
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
239 externC bool parse_bool(char *s, bool *val);
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
240
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
241 typedef void cmd_fun(int argc, char *argv[]);
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
242 struct cmd {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
243 char *str;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
244 char *help;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
245 char *usage;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
246 cmd_fun *fun;
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
247 struct cmd *sub_cmds, *sub_cmds_end;
121
6bd9d475ed4b Merge from eCos master repository on 2000-09-04-20:50:20-BST
jlarmour
parents: 117
diff changeset
248 } CYG_HAL_TABLE_TYPE;
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
249 externC struct cmd *cmd_search(struct cmd *tab, struct cmd *tabend, char *arg);
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
250 externC void cmd_usage(struct cmd *tab, struct cmd *tabend, char *prefix);
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
251 #define RedBoot_cmd(_s_,_h_,_u_,_f_) cmd_entry(_s_,_h_,_u_,_f_,0,0,RedBoot_commands)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
252 #define RedBoot_nested_cmd(_s_,_h_,_u_,_f_,_subs_,_sube_) cmd_entry(_s_,_h_,_u_,_f_,_subs_,_sube_,RedBoot_commands)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
253 #define _cmd_entry(_s_,_h_,_u_,_f_,_subs_,_sube_,_n_) \
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
254 cmd_fun _f_; \
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
255 struct cmd _cmd_tab_##_f_ CYG_HAL_TABLE_QUALIFIED_ENTRY(_n_,_f_) = {_s_, _h_, _u_, _f_, _subs_, _sube_};
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
256 #define cmd_entry(_s_,_h_,_u_,_f_,_subs_,_sube_,_n_) \
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
257 extern _cmd_entry(_s_,_h_,_u_,_f_,_subs_,_sube_,_n_)
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
258 #define local_cmd_entry(_s_,_h_,_u_,_f_,_n_) \
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
259 static _cmd_entry(_s_,_h_,_u_,_f_,0,0,_n_)
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
260
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
261 // Initialization functions
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
262 #define RedBoot_INIT_FIRST 0000
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
263 #define RedBoot_INIT_SECOND 0100
154
e2d866e32dac Merge from eCos master repository on 2001-02-26-23:18:05-GMT
jlarmour
parents: 151
diff changeset
264 // Specify a 3 digit numeric value for proper prioritizing
e2d866e32dac Merge from eCos master repository on 2001-02-26-23:18:05-GMT
jlarmour
parents: 151
diff changeset
265 #define RedBoot_INIT_PRIO(_n_) 1##_n_
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
266 #define RedBoot_INIT_BEFORE_NET 6900
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
267 #define RedBoot_INIT_NET 7000
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
268 #define RedBoot_INIT_AFTER_NET 7100
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
269 #define RedBoot_INIT_LAST 9999
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
270 typedef void void_fun(void);
126
518f42066aba Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents: 124
diff changeset
271 typedef void_fun *void_fun_ptr;
518f42066aba Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents: 124
diff changeset
272 struct init_tab_entry {
518f42066aba Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents: 124
diff changeset
273 void_fun_ptr fun;
518f42066aba Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents: 124
diff changeset
274 } CYG_HAL_TABLE_TYPE;
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
275 #define _RedBoot_init(_f_,_p_) \
154
e2d866e32dac Merge from eCos master repository on 2001-02-26-23:18:05-GMT
jlarmour
parents: 151
diff changeset
276 struct init_tab_entry _init_tab_##_p_##_f_ \
e2d866e32dac Merge from eCos master repository on 2001-02-26-23:18:05-GMT
jlarmour
parents: 151
diff changeset
277 CYG_HAL_TABLE_QUALIFIED_ENTRY(RedBoot_inits,_p_##_f_) = { _f_ };
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
278 #define RedBoot_init(_f_,_p_) _RedBoot_init(_f_,_p_)
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
279
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 149
diff changeset
280 // Main loop [idle] call-back functions
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 149
diff changeset
281 #define RedBoot_IDLE_FIRST 0000
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 149
diff changeset
282 #define RedBoot_IDLE_BEFORE_NETIO 3000
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 149
diff changeset
283 #define RedBoot_IDLE_NETIO 5000
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 149
diff changeset
284 #define RedBoot_IDLE_AFTER_NETIO 7000
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 149
diff changeset
285 #define RedBoot_IDLE_LAST 9999
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
286 typedef void idle_fun(bool);
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
287 typedef idle_fun *idle_fun_ptr;
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 149
diff changeset
288 struct idle_tab_entry {
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
289 idle_fun_ptr fun;
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 149
diff changeset
290 } CYG_HAL_TABLE_TYPE;
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 149
diff changeset
291 #define _RedBoot_idle(_f_,_p_) \
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
292 struct idle_tab_entry _idle_tab_##_p_##_f_ \
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
293 CYG_HAL_TABLE_QUALIFIED_ENTRY(RedBoot_idle,_p_##_f_) = { _f_ };
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 149
diff changeset
294 #define RedBoot_idle(_f_,_p_) _RedBoot_idle(_f_,_p_)
156
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
295
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
296 // This function called when changing idle/not - mostly used by I/O
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
297 // to support idle when timeout, etc.
b939e9cada46 Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents: 154
diff changeset
298 void do_idle(bool state);
228
e1b642d73533 Improve load command - make I/O methods table driven.
gthomas
parents: 210
diff changeset
299
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
300 // Option processing support
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
301
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
302 struct option_info {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
303 char flag;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
304 bool takes_arg;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
305 int arg_type;
1259
13ba50dd5a8e Some cleanups from David Vrable
gthomas
parents: 1223
diff changeset
306 void *arg;
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
307 bool *arg_set;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
308 char *name;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
309 };
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
310
1605
43a89c18d005 Add checking (assert) for size of option arrays. Also fix port for TFTP on little endian systems.
gthomas
parents: 1312
diff changeset
311 #define NUM_ELEMS(s) (sizeof(s)/sizeof(s[0]))
43a89c18d005 Add checking (assert) for size of option arrays. Also fix port for TFTP on little endian systems.
gthomas
parents: 1312
diff changeset
312
117
bd1a71e3e476 Merge from eCos master repository on 2000-08-25-19:22:58-BST
jlarmour
parents: 115
diff changeset
313 #define OPTION_ARG_TYPE_NUM 0 // Numeric data
bd1a71e3e476 Merge from eCos master repository on 2000-08-25-19:22:58-BST
jlarmour
parents: 115
diff changeset
314 #define OPTION_ARG_TYPE_STR 1 // Generic string
bd1a71e3e476 Merge from eCos master repository on 2000-08-25-19:22:58-BST
jlarmour
parents: 115
diff changeset
315 #define OPTION_ARG_TYPE_FLG 2 // Flag only
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
316
130
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 128
diff changeset
317 // Command line parsing
183
9160a8005d76 Merge from eCos master repository on 2001-09-12-03:52:30-BST
jlarmour
parents: 182
diff changeset
318 externC struct cmd *parse(char **line, int *argc, char **argv);
130
eb9fd8c04db3 Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents: 128
diff changeset
319
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
320 externC void init_opts(struct option_info *opts, char flag, bool takes_arg,
1259
13ba50dd5a8e Some cleanups from David Vrable
gthomas
parents: 1223
diff changeset
321 int arg_type, void *arg, bool *arg_set, char *name);
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
322 externC bool scan_opts(int argc, char *argv[], int first,
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
323 struct option_info *opts, int num_opts,
1259
13ba50dd5a8e Some cleanups from David Vrable
gthomas
parents: 1223
diff changeset
324 void *def_arg, int def_arg_type, char *def_descr);
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
325
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
326 externC int redboot_exec( char *command, ... );
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
327
2614
6cbecf3cc2e4 * src/fconfig.c, src/flash.c, src/io.c, src/load.c, src/main.c,
jlarmour
parents: 2395
diff changeset
328 externC void err_printf( const char *fmt, ... );
2257
467fd46113f3 * src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents: 2195
diff changeset
329
165
d63db767121d Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents: 161
diff changeset
330 #ifdef CYGNUM_HAL_VIRTUAL_VECTOR_AUX_CHANNELS
d63db767121d Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents: 161
diff changeset
331 #define CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS \
d63db767121d Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents: 161
diff changeset
332 (CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS+CYGNUM_HAL_VIRTUAL_VECTOR_AUX_CHANNELS)
d63db767121d Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents: 161
diff changeset
333 #else
d63db767121d Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents: 161
diff changeset
334 #define CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS \
d63db767121d Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents: 161
diff changeset
335 CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS
d63db767121d Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents: 161
diff changeset
336 #endif
d63db767121d Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents: 161
diff changeset
337
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
338 #ifdef CYGPKG_REDBOOT_NETWORKING
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
339 //-----------------------------------------------------------------------------
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
340 // DNS wrapper
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
341 #ifdef CYGPKG_REDBOOT_NETWORKING_DNS
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
342
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
343 // I would really like if we could just pull in cyg/ns/dns/dns.h, but
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
344 // that would require adding dummy <network.h> and <netinet/in.h> files.
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
345
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
346 // Host name / IP mapping
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
347 struct hostent {
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
348 char *h_name; /* official name of host */
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
349 char **h_aliases; /* alias list */
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
350 int h_addrtype; /* host address type */
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
351 int h_length; /* length of address */
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
352 char **h_addr_list; /* list of addresses */
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
353 };
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
354 #define h_addr h_addr_list[0] /* for backward compatibility */
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
355
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
356 externC int redboot_dns_res_init(void);
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
357 externC void set_dns(char* new_ip);
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
358 externC void show_dns(void);
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
359 externC struct hostent *gethostbyname(const char *host);
2395
b8111f0a6f98 * src/net/net_io.c: (do_ip_addr): Option to set domain name.
asl
parents: 2257
diff changeset
360 externC int setdomainname(const char *, size_t);
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
361
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
362 // Error reporting
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
363 externC int h_errno;
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
364
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
365 #define DNS_SUCCESS 0
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
366 #define HOST_NOT_FOUND 1
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
367 #define TRY_AGAIN 2
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
368 #define NO_RECOVERY 3
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
369 #define NO_DATA 4
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
370
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
371 static inline bool
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
372 _gethostbyname(const char* name, in_addr_t* host)
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
373 {
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
374 struct hostent* hent = gethostbyname(name);
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
375 if (hent) {
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
376 memcpy(host, hent->h_addr_list[0], sizeof(in_addr_t));
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
377 return true;
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
378 }
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
379 // Fall back to inet_aton - gethostbyname may already have tried
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
380 // it, but we can't know for sure (the DNS IP may not have been
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
381 // valid, preventing the inet_aton).
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
382 return inet_aton(name, host);
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
383 }
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
384 #else
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
385 static inline bool
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
386 _gethostbyname(const char* name, in_addr_t* host)
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
387 {
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
388 return inet_aton(name, host);
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
389 }
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
390 #endif // CYGPKG_REDBOOT_NETWORKING_DNS
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
391 #endif // CYGPKG_REDBOOT_NETWORKING
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
392
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
393 //-----------------------------------------------------------------------------
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
394 // String functions. Some of these are duplicates of the same functions in
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
395 // the I18N package.
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
396
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
397 // Validate a hex character
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
398 __inline__ static bool
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
399 _is_hex(char c)
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
400 {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
401 return (((c >= '0') && (c <= '9')) ||
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
402 ((c >= 'A') && (c <= 'F')) ||
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
403 ((c >= 'a') && (c <= 'f')));
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
404 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
405
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
406 // Convert a single hex nibble
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
407 __inline__ static int
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
408 _from_hex(char c)
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
409 {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
410 int ret = 0;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
411
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
412 if ((c >= '0') && (c <= '9')) {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
413 ret = (c - '0');
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
414 } else if ((c >= 'a') && (c <= 'f')) {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
415 ret = (c - 'a' + 0x0a);
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
416 } else if ((c >= 'A') && (c <= 'F')) {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
417 ret = (c - 'A' + 0x0A);
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
418 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
419 return ret;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
420 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
421
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
422 // Convert a character to lower case
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
423 __inline__ static char
182
f62680ef1804 Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents: 165
diff changeset
424 _tolower(char c)
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
425 {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
426 if ((c >= 'A') && (c <= 'Z')) {
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
427 c = (c - 'A') + 'a';
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
428 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
429 return c;
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
430 }
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
431
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
432 // Validate alpha
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
433 __inline__ static bool
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
434 isalpha(int c)
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
435 {
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
436 return (((c >= 'a') && (c <= 'z')) ||
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
437 ((c >= 'A') && (c <= 'Z')));
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
438 }
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
439
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
440 // Validate digit
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
441 __inline__ static bool
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
442 isdigit(int c)
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
443 {
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
444 return ((c >= '0') && (c <= '9'));
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
445 }
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
446
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
447 // Validate alphanum
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
448 __inline__ static bool
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
449 isalnum(int c)
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
450 {
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
451 return (isalpha(c) || isdigit(c));
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
452 }
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 183
diff changeset
453
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
454 //----------------------------------------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
455 // syscall values
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
456 #if defined(CYGSEM_REDBOOT_BSP_SYSCALLS)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
457
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
458 // These are required by the ANSI C part of newlib (excluding system() of
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
459 // course).
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
460 #define SYS_exit 1
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
461 #define SYS_open 2
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
462 #define SYS_close 3
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
463 #define SYS_read 4
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
464 #define SYS_write 5
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
465 #define SYS_lseek 6
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
466 #define SYS_unlink 7
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
467 #define SYS_getpid 8
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
468 #define SYS_kill 9
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
469 #define SYS_fstat 10
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
470 //#define SYS_sbrk 11 - not currently a system call, but reserved.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
471
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
472 // ARGV support.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
473 #define SYS_argvlen 12
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
474 #define SYS_argv 13
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
475
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
476 // These are extras added for one reason or another.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
477 #define SYS_chdir 14
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
478 #define SYS_stat 15
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
479 #define SYS_chmod 16
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
480 #define SYS_utime 17
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
481 #define SYS_time 18
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
482 #define SYS_gettimeofday 19
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
483 #define SYS_times 20
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
484
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
485 #define SYS_interrupt 1000
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
486 #define SYS_meminfo 1001
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
487
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
488 #define __GET_SHARED 0xbaad // 47789 decimal
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
489
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
490 #ifdef CYGSEM_REDBOOT_BSP_SYSCALLS_GPROF
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
491
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
492 #define SYS_timer_call_back 2001
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
493 #define SYS_timer_frequency 2002
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
494 #define SYS_timer_reset 2003
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
495
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
496 #endif // CYGSEM_REDBOOT_BSP_SYSCALLS_GPROF
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
497 #define SYS_rename 3001
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
498 #define SYS_isatty 3002
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
499 #define SYS_system 3003
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
500
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
501 #endif // CYGSEM_REDBOOT_BSP_SYSCALLS
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
502
1740
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
503
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
504 //----------------------------------------------------------------------------
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
505 // Allow HAL to override RedBoot flash read/program operations.
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
506 #ifdef HAL_FLASH_READ
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
507 #define FLASH_READ(f, r, l, e) HAL_FLASH_READ((f),(r),(l),(e))
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
508 #else
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
509 #define FLASH_READ(f, r, l, e) flash_read((f), (r), (l), (e))
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
510 #endif
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
511
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
512 #ifdef HAL_FLASH_PROGRAM
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
513 #define FLASH_PROGRAM(f, r, l, e) HAL_FLASH_PROGRAM((f),(r),(l),(e))
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
514 #else
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
515 #define FLASH_PROGRAM(f, r, l, e) flash_program((f), (r), (l), (e))
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
516 #endif
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
517
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
518
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
519 // Define REDBOOT_FLASH_REVERSE_BYTEORDER if config and fis info is stored in flash
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
520 // with byte ordering opposite from CYG_BYTEORDER.
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
521 #if (defined(CYGOPT_REDBOOT_FLASH_BYTEORDER_MSBFIRST) && (CYG_BYTEORDER != CYG_MSBFIRST)) || \
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
522 (defined(CYGOPT_REDBOOT_FLASH_BYTEORDER_LSBFIRST) && (CYG_BYTEORDER != CYG_LSBFIRST))
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
523 #define REDBOOT_FLASH_REVERSE_BYTEORDER
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
524 #endif
0031b615f51c Add support for reverse endianess of fis and config data
msalter
parents: 1663
diff changeset
525
115
6ed91473a1cd Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff changeset
526 #endif // _REDBOOT_H_