Mercurial > ecos
annotate packages/redboot/current/include/redboot.h @ 2257:467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
rather than "." which may not be implemented in the FS.
* src/parse.c (redboot_exec): Conditionalise use of
__mem_fault_handler to only be when stubs are included.
(error_handler): Ditto for this function.
* src/main.c (cyg_start): Conditionalise use of
__mem_fault_handler to only be when stubs are included.
(do_go): Ditto.
(error_handler): Ditto for this function.
* src/fs/fileio.c (do_mkdir, do_deldir, do_del, do_write): Added
some extra argument checking to these functions.
* src/fs/fileio.c (do_mount): Only support -f with "legacy" flash
block devices.
Clear mount table on failure.
(do_move): Silence rename undefined warning.
(do_write): Silence warnings.
(do_info): Support longer device names.
* src/decompress.c (ZLIB_COMPRESSION_OVERHEAD):
Increase substantially if jffs2 is present.
* src/fs/fileio.c: Fixed some bugs in handling of mounts. The
strings used in the mount table must be copied, otherwise the
mount table is corrupted by later commands. Also toughened up some
error testing.
* doc/redboot_cmds.sgml: Added file mode documentation to load
command.
* doc/redboot_cmds.sgml: Added documentation of filesystem access
commands.
* src/fs/fileio.c (do_write): Added O_TRUNC to the open call to
ensure that the file is resized to fit the new data.
* src/fs/fileio.c: Significantly reorganized to present an
interface similar to the fis commands. Added a variety of command
to manipulate files and directories in a filesystem.
* src/parse.c: Added redboot_exec() to provide an internal
interface for executing RedBoot commands. Added err_printf() which
allows an error message to be printed before longjumping out to an
enclosing call to redboot_exec(). Where redboot_exec() is not
involved, it just behaves like diag_printf().
* src/main.c: Removed unnecessary delay during startup. Changed
diag_printf() in do_go() into err_printf().
* src/load.c: Changed some calls to diag_printf() to err_printf().
* src/net/net_io.c: Changed init priority to RedBoot_INIT_NET.
* include/redboot.h: Added some extra initialization
priorities. Added prototypes for redboot_exec() and err_printf().
| author | jlarmour |
|---|---|
| date | Thu, 20 Jul 2006 20:27:47 +0000 |
| parents | 5c5e93c863ac |
| children | b8111f0a6f98 |
| 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 //========================================================================== |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
8 //####ECOSGPLCOPYRIGHTBEGIN#### |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
9 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
10 // This file is part of eCos, the Embedded Configurable Operating System. |
|
1740
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 Red Hat, Inc. |
|
2066
5d5572c64422
FIS fix from Stefan Sommerfeld, ANSI cursor keys from Gary Thomas
gthomas
parents:
1740
diff
changeset
|
12 // Copyright (C) 2002, 2003, 2004, 2005 Gary Thomas |
|
2257
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
13 // Copyright (C) 2004, 2005 eCosCentric Limited |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
14 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
15 // eCos is free software; you can redistribute it and/or modify it under |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
16 // the terms of the GNU General Public License as published by the Free |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
17 // Software Foundation; either version 2 or (at your option) any later version. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
18 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
19 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
20 // WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
21 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
22 // for more details. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
23 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
24 // You should have received a copy of the GNU General Public License along |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
25 // with eCos; if not, write to the Free Software Foundation, Inc., |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
26 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
27 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
28 // As a special exception, if other files instantiate templates or use macros |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
29 // or inline functions from this file, or you compile this file and link it |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
30 // with other works to produce a work based on this file, this file does not |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
31 // by itself cause the resulting work to be covered by the GNU General Public |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
32 // License. However the source code for this file must still be made available |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
33 // in accordance with section (3) of the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
34 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
35 // This exception does not invalidate any other reasons why a work based on |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
36 // this file might be covered by the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
37 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
38 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
39 // at http://sources.redhat.com/ecos/ecos-license/ |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
40 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
41 //####ECOSGPLCOPYRIGHTEND#### |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
42 //========================================================================== |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
43 //#####DESCRIPTIONBEGIN#### |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
44 // |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
45 // Author(s): gthomas |
|
307
906a5d289c6d
Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents:
284
diff
changeset
|
46 // Contributors: gthomas, tkoeller |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
47 // Date: 2000-07-14 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
48 // Purpose: |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
49 // Description: |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
50 // |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
51 // 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
|
52 // |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
53 //####DESCRIPTIONEND#### |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
54 // |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
55 //========================================================================== |
|
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 #ifndef _REDBOOT_H_ |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
58 #define _REDBOOT_H_ |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
59 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
60 #include <pkgconf/redboot.h> |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
61 #include <pkgconf/hal.h> |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
62 #include <cyg/hal/hal_if.h> |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
63 #include <cyg/hal/hal_tables.h> |
|
1740
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
64 #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
|
65 #include <cyg/infra/diag.h> |
| 284 | 66 #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
|
67 #include <string.h> |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
68 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
69 #ifdef CYGPKG_REDBOOT_NETWORKING |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
70 #include <net/net.h> |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
71 #include <net/bootp.h> |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
72 // Determine an IP address for this node, using BOOTP |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
73 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
|
74 #endif |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
75 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
76 #ifdef DEFINE_VARS |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
77 #define EXTERN |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
78 #else |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
79 #define EXTERN extern |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
80 #endif |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
81 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
82 // Global variables |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
83 EXTERN int argc; |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
159
diff
changeset
|
84 #define MAX_ARGV 16 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
85 EXTERN char *argv[MAX_ARGV]; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
86 EXTERN unsigned char *ram_start, *ram_end; |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1122
diff
changeset
|
87 EXTERN struct _mem_segment { |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1122
diff
changeset
|
88 unsigned char *start, *end; |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1122
diff
changeset
|
89 } mem_segments[CYGBLD_REDBOOT_MAX_MEM_SEGMENTS]; |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1122
diff
changeset
|
90 #define NO_MEMORY (unsigned char *)0xFFFFFFFF |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1122
diff
changeset
|
91 EXTERN bool valid_address(unsigned char *addr); |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1122
diff
changeset
|
92 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
|
93 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
|
94 |
|
9b55e9c69693
Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
195
diff
changeset
|
95 // 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
|
96 EXTERN unsigned long entry_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; |
|
9b55e9c69693
Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
195
diff
changeset
|
98 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
|
99 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
100 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
101 #ifdef CYGPKG_REDBOOT_ANY_CONSOLE |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
102 EXTERN bool console_selected; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
103 #endif |
|
128
0c2b7be0d798
Merge from eCos master repository on 2000-10-12-08:46:24-BST
jlarmour
parents:
126
diff
changeset
|
104 EXTERN bool console_echo; |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
149
diff
changeset
|
105 EXTERN bool gdb_active; |
|
195
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
192
diff
changeset
|
106 #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
|
107 EXTERN bool cmd_history; |
|
67850532eebb
Merge from eCos master repository on 2001-11-02-06:43:03-GMT
jlarmour
parents:
192
diff
changeset
|
108 #endif |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
109 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
110 #ifdef CYGPKG_REDBOOT_NETWORKING |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
111 EXTERN bool have_net, use_bootp; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
112 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
|
113 EXTERN int gdb_port; |
| 192 | 114 EXTERN bool net_debug; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
115 #endif |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
116 |
|
159
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
156
diff
changeset
|
117 #ifdef CYGFUN_REDBOOT_BOOT_SCRIPT |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
118 EXTERN unsigned char *script; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
119 EXTERN int script_timeout; |
|
165
d63db767121d
Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents:
161
diff
changeset
|
120 #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
|
121 EXTERN int console_baud_rate; |
|
511f4dc167f6
Merge from eCos master repository on 2001-05-18-01:30:05-BST
jlarmour
parents:
156
diff
changeset
|
122 #endif |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
123 #endif |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
124 |
|
307
906a5d289c6d
Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents:
284
diff
changeset
|
125 #ifdef CYGOPT_REDBOOT_FIS_ZLIB_COMMON_BUFFER |
|
906a5d289c6d
Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents:
284
diff
changeset
|
126 EXTERN unsigned char *fis_zlib_common_buffer; |
|
906a5d289c6d
Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents:
284
diff
changeset
|
127 #endif |
|
906a5d289c6d
Better memory use vis FIS & ZLIB - from Thomas Koeller
gthomas
parents:
284
diff
changeset
|
128 |
|
1223
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1122
diff
changeset
|
129 #ifdef CYGSEM_REDBOOT_PLF_STARTUP |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1122
diff
changeset
|
130 EXTERN void cyg_plf_redboot_startup(void); |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1122
diff
changeset
|
131 #endif |
|
dbcfe4e0dbd2
New platform - TAMS MOAB - and generic changes to support it
gthomas
parents:
1122
diff
changeset
|
132 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
133 // Prototypes |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
165
diff
changeset
|
134 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
|
135 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
|
136 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
|
137 |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
165
diff
changeset
|
138 externC void mon_write_char(char c); |
|
2066
5d5572c64422
FIS fix from Stefan Sommerfeld, ANSI cursor keys from Gary Thomas
gthomas
parents:
1740
diff
changeset
|
139 externC bool mon_read_char_with_timeout(char *c); |
|
5d5572c64422
FIS fix from Stefan Sommerfeld, ANSI cursor keys from Gary Thomas
gthomas
parents:
1740
diff
changeset
|
140 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
|
141 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
|
142 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
|
143 |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
130
diff
changeset
|
144 // 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
|
145 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
|
146 // 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
|
147 // 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
|
148 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
|
149 // Result codes from 'gets()' |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
130
diff
changeset
|
150 #define _GETS_TIMEOUT -1 |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
130
diff
changeset
|
151 #define _GETS_CTRLC -2 |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
130
diff
changeset
|
152 #define _GETS_GDB 0 |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
130
diff
changeset
|
153 #define _GETS_OK 1 |
|
1122
92e31da869cc
Add ^C abort functionality to BOOTP and PING operations.
gthomas
parents:
307
diff
changeset
|
154 // 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
|
155 // 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
|
156 // 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
|
157 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
|
158 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
159 // "console" selection |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
165
diff
changeset
|
160 externC int start_console(void); |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
165
diff
changeset
|
161 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
|
162 |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
163 // Alias functions |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
164 #ifdef CYGSEM_REDBOOT_FLASH_ALIASES |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
165 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
|
166 #endif |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
167 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
|
168 |
|
228
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
169 // |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
170 // Stream I/O support |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
171 // |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
172 |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
173 typedef struct { |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
174 char *filename; |
| 245 | 175 int mode; |
|
228
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
176 int chan; |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
177 #ifdef CYGPKG_REDBOOT_NETWORKING |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
178 struct sockaddr_in *server; |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
179 #endif |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
180 } connection_info_t; |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
181 |
|
228
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
182 typedef struct { |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
183 int (*open)(connection_info_t *info, int *err); |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
184 void (*close)(int *err); |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
185 void (*terminate)(bool abort, int (*getc)(void)); |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
186 int (*read)(char *buf, int size, int *err); |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
187 char *(*error)(int err); |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
188 } getc_io_funcs_t; |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
189 |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
190 #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
|
191 getc_io_funcs_t _label_ = { \ |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
192 _open_, _close_, _terminate_, _read_, _error_ \ |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
193 }; |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
194 |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
195 struct load_io_entry { |
| 245 | 196 char *name; |
|
228
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
197 getc_io_funcs_t *funcs; |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
198 bool can_verbose; |
|
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
199 bool need_filename; |
| 245 | 200 int mode; |
|
228
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
201 } CYG_HAL_TABLE_TYPE; |
| 245 | 202 #define _RedBoot_load(_name_,_funcs_,_verbose_,_filename_,_mode_) \ |
| 203 struct load_io_entry _load_tab_##_funcs_##_name_ \ | |
| 204 CYG_HAL_TABLE_QUALIFIED_ENTRY(RedBoot_load,_funcs_##_name) = \ | |
| 205 { #_name_, &_funcs_, _verbose_, _filename_, _mode_ }; | |
| 206 #define RedBoot_load(_name_,_funcs_,_verbose_,_filename_, _mode_) \ | |
| 207 _RedBoot_load(_name_,_funcs_,_verbose_,_filename_,_mode_) | |
|
228
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
208 |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
154
diff
changeset
|
209 #ifdef CYGPKG_COMPRESS_ZLIB |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
154
diff
changeset
|
210 // Decompression support |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
154
diff
changeset
|
211 typedef struct _pipe { |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
154
diff
changeset
|
212 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
|
213 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
|
214 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
|
215 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
|
216 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
|
217 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
|
218 void* priv; // handler's data |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
154
diff
changeset
|
219 } _pipe_t; |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
154
diff
changeset
|
220 |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
154
diff
changeset
|
221 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
|
222 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
|
223 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
|
224 |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
154
diff
changeset
|
225 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
|
226 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
|
227 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
|
228 #endif // CYGPKG_COMPRESS_ZLIB |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
154
diff
changeset
|
229 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
230 // CLI support functions |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
165
diff
changeset
|
231 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
|
232 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
|
233 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
234 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
|
235 struct cmd { |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
236 char *str; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
237 char *help; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
238 char *usage; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
239 cmd_fun *fun; |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
240 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
|
241 } CYG_HAL_TABLE_TYPE; |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
165
diff
changeset
|
242 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
|
243 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
|
244 #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
|
245 #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
|
246 #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
|
247 cmd_fun _f_; \ |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
248 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
|
249 #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
|
250 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
|
251 #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
|
252 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
|
253 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
254 // Initialization functions |
|
2257
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
255 #define RedBoot_INIT_FIRST 0000 |
|
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
256 #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
|
257 // 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
|
258 #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
|
259 #define RedBoot_INIT_BEFORE_NET 6900 |
|
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
260 #define RedBoot_INIT_NET 7000 |
|
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
261 #define RedBoot_INIT_AFTER_NET 7100 |
|
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
262 #define RedBoot_INIT_LAST 9999 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
263 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
|
264 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
|
265 struct init_tab_entry { |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
266 void_fun_ptr fun; |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
124
diff
changeset
|
267 } CYG_HAL_TABLE_TYPE; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
268 #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
|
269 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
|
270 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
|
271 #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
|
272 |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
149
diff
changeset
|
273 // 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
|
274 #define RedBoot_IDLE_FIRST 0000 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
149
diff
changeset
|
275 #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
|
276 #define RedBoot_IDLE_NETIO 5000 |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
149
diff
changeset
|
277 #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
|
278 #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
|
279 typedef void idle_fun(bool); |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
154
diff
changeset
|
280 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
|
281 struct idle_tab_entry { |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
154
diff
changeset
|
282 idle_fun_ptr fun; |
|
151
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
149
diff
changeset
|
283 } CYG_HAL_TABLE_TYPE; |
|
25e238959bae
Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
149
diff
changeset
|
284 #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
|
285 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
|
286 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
|
287 #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
|
288 |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
154
diff
changeset
|
289 // 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
|
290 // 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
|
291 void do_idle(bool state); |
|
228
e1b642d73533
Improve load command - make I/O methods table driven.
gthomas
parents:
210
diff
changeset
|
292 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
293 // Option processing support |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
294 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
295 struct option_info { |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
296 char flag; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
297 bool takes_arg; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
298 int arg_type; |
| 1259 | 299 void *arg; |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
300 bool *arg_set; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
301 char *name; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
302 }; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
303 |
|
1605
43a89c18d005
Add checking (assert) for size of option arrays. Also fix port for TFTP on little endian systems.
gthomas
parents:
1312
diff
changeset
|
304 #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
|
305 |
|
117
bd1a71e3e476
Merge from eCos master repository on 2000-08-25-19:22:58-BST
jlarmour
parents:
115
diff
changeset
|
306 #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
|
307 #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
|
308 #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
|
309 |
|
130
eb9fd8c04db3
Merge from eCos master repository on 2000-10-23-17:01:37-BST
jlarmour
parents:
128
diff
changeset
|
310 // Command line parsing |
|
183
9160a8005d76
Merge from eCos master repository on 2001-09-12-03:52:30-BST
jlarmour
parents:
182
diff
changeset
|
311 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
|
312 |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
165
diff
changeset
|
313 externC void init_opts(struct option_info *opts, char flag, bool takes_arg, |
| 1259 | 314 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
|
315 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
|
316 struct option_info *opts, int num_opts, |
| 1259 | 317 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
|
318 |
|
2257
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
319 externC int redboot_exec( char *command, ... ); |
|
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
320 |
|
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
321 externC void err_printf( char *fmt, ... ); |
|
467fd46113f3
* src/fs/fileio.c (do_list): Use getcwd for current directory,
jlarmour
parents:
2195
diff
changeset
|
322 |
|
165
d63db767121d
Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents:
161
diff
changeset
|
323 #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
|
324 #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
|
325 (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
|
326 #else |
|
d63db767121d
Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents:
161
diff
changeset
|
327 #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
|
328 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
|
329 #endif |
|
d63db767121d
Merge from eCos master repository on 2001-06-29-06:43:03-BST
jlarmour
parents:
161
diff
changeset
|
330 |
|
184
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
331 #ifdef CYGPKG_REDBOOT_NETWORKING |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
332 //----------------------------------------------------------------------------- |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
333 // DNS wrapper |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
334 #ifdef CYGPKG_REDBOOT_NETWORKING_DNS |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
335 |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
336 // 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
|
337 // 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
|
338 |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
339 // Host name / IP mapping |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
340 struct hostent { |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
341 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
|
342 char **h_aliases; /* alias list */ |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
343 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
|
344 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
|
345 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
|
346 }; |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
347 #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
|
348 |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
349 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
|
350 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
|
351 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
|
352 externC struct hostent *gethostbyname(const char *host); |
|
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 // Error reporting |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
355 externC int h_errno; |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
356 |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
357 #define DNS_SUCCESS 0 |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
358 #define HOST_NOT_FOUND 1 |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
359 #define TRY_AGAIN 2 |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
360 #define NO_RECOVERY 3 |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
361 #define NO_DATA 4 |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
362 |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
363 static inline bool |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
364 _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
|
365 { |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
366 struct hostent* hent = gethostbyname(name); |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
367 if (hent) { |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
368 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
|
369 return true; |
|
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 // 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
|
372 // 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
|
373 // valid, preventing the inet_aton). |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
374 return inet_aton(name, host); |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
375 } |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
376 #else |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
377 static inline bool |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
378 _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
|
379 { |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
380 return inet_aton(name, host); |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
381 } |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
382 #endif // CYGPKG_REDBOOT_NETWORKING_DNS |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
383 #endif // CYGPKG_REDBOOT_NETWORKING |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
384 |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
385 //----------------------------------------------------------------------------- |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
386 // 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
|
387 // the I18N package. |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
388 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
389 // Validate a hex character |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
390 __inline__ static bool |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
391 _is_hex(char c) |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
392 { |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
393 return (((c >= '0') && (c <= '9')) || |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
394 ((c >= 'A') && (c <= 'F')) || |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
395 ((c >= 'a') && (c <= 'f'))); |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
396 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
397 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
398 // Convert a single hex nibble |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
399 __inline__ static int |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
400 _from_hex(char c) |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
401 { |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
402 int ret = 0; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
403 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
404 if ((c >= '0') && (c <= '9')) { |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
405 ret = (c - '0'); |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
406 } else if ((c >= 'a') && (c <= 'f')) { |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
407 ret = (c - 'a' + 0x0a); |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
408 } else if ((c >= 'A') && (c <= 'F')) { |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
409 ret = (c - 'A' + 0x0A); |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
410 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
411 return ret; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
412 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
413 |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
414 // Convert a character to lower case |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
415 __inline__ static char |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
165
diff
changeset
|
416 _tolower(char c) |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
417 { |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
418 if ((c >= 'A') && (c <= 'Z')) { |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
419 c = (c - 'A') + 'a'; |
|
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 return c; |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
422 } |
|
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
423 |
|
184
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
424 // Validate alpha |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
425 __inline__ static bool |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
426 isalpha(int c) |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
427 { |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
428 return (((c >= 'a') && (c <= 'z')) || |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
429 ((c >= 'A') && (c <= 'Z'))); |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
430 } |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
431 |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
432 // Validate digit |
|
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 isdigit(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 >= '0') && (c <= '9')); |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
437 } |
|
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 // Validate alphanum |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
440 __inline__ static bool |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
441 isalnum(int c) |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
442 { |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
443 return (isalpha(c) || isdigit(c)); |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
444 } |
|
022f1e506033
Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents:
183
diff
changeset
|
445 |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
446 //---------------------------------------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
447 // syscall values |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
448 #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
|
449 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
450 // 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
|
451 // course). |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
452 #define SYS_exit 1 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
453 #define SYS_open 2 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
454 #define SYS_close 3 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
455 #define SYS_read 4 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
456 #define SYS_write 5 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
457 #define SYS_lseek 6 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
458 #define SYS_unlink 7 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
459 #define SYS_getpid 8 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
460 #define SYS_kill 9 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
461 #define SYS_fstat 10 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
462 //#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
|
463 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
464 // ARGV support. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
465 #define SYS_argvlen 12 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
466 #define SYS_argv 13 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
467 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
468 // 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
|
469 #define SYS_chdir 14 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
470 #define SYS_stat 15 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
471 #define SYS_chmod 16 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
472 #define SYS_utime 17 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
473 #define SYS_time 18 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
474 #define SYS_gettimeofday 19 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
475 #define SYS_times 20 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
476 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
477 #define SYS_interrupt 1000 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
478 #define SYS_meminfo 1001 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
479 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
480 #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
|
481 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
482 #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
|
483 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
484 #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
|
485 #define SYS_timer_frequency 2002 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
486 #define SYS_timer_reset 2003 |
|
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 #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
|
489 #define SYS_rename 3001 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
490 #define SYS_isatty 3002 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
491 #define SYS_system 3003 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
492 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
493 #endif // CYGSEM_REDBOOT_BSP_SYSCALLS |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
196
diff
changeset
|
494 |
|
1740
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
495 |
|
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
496 //---------------------------------------------------------------------------- |
|
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
497 // 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
|
498 #ifdef HAL_FLASH_READ |
|
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
499 #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
|
500 #else |
|
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
501 #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
|
502 #endif |
|
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 #ifdef HAL_FLASH_PROGRAM |
|
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
505 #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
|
506 #else |
|
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
507 #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
|
508 #endif |
|
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
509 |
|
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
510 |
|
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
511 // 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
|
512 // with byte ordering opposite from CYG_BYTEORDER. |
|
0031b615f51c
Add support for reverse endianess of fis and config data
msalter
parents:
1663
diff
changeset
|
513 #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
|
514 (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
|
515 #define REDBOOT_FLASH_REVERSE_BYTEORDER |
|
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 |
|
115
6ed91473a1cd
Merge from eCos master repository on 2000-08-21-22:40:54-BST
jlarmour
parents:
diff
changeset
|
518 #endif // _REDBOOT_H_ |
