* [U-Boot] [PATCH 3/3] arm: semihosting: get rid of forward declarations
@ 2014-11-20 10:25 Linus Walleij
2014-12-12 18:08 ` Steve Rae
0 siblings, 1 reply; 2+ messages in thread
From: Linus Walleij @ 2014-11-20 10:25 UTC (permalink / raw)
To: u-boot
By rearranging the functions in the semihosting code we can
avoid forward-declaration of the internal static functions.
This puts the stuff in a logical order: read/open/close/len
and then higher-order functions follow at the end.
Cc: Darwin Rambo <drambo@broadcom.com>
Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
Cc: Mark Hambleton <mark.hambleton@arm.com>
Cc: Tom Rini <trini@ti.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
arch/arm/lib/semihosting.c | 173 ++++++++++++++++++++++-----------------------
1 file changed, 84 insertions(+), 89 deletions(-)
diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c
index 6e1b2d182eca..2eacbacfde0f 100644
--- a/arch/arm/lib/semihosting.c
+++ b/arch/arm/lib/semihosting.c
@@ -23,11 +23,6 @@
#define MODE_READ 0x0
#define MODE_READBIN 0x1
-static long smh_read(long fd, void *memp, size_t len);
-static long smh_open(const char *fname, char *modestr);
-static long smh_close(long fd);
-static long smh_len_fd(long fd);
-
/*
* Call the handler
*/
@@ -44,60 +39,43 @@ static long smh_trap(unsigned int sysnum, void *addr)
}
/*
- * Open, load a file into memory, and close it. Check that the available space
- * is sufficient to store the entire file. Return the bytes actually read from
- * the file as seen by the read function. The verbose flag enables some extra
- * printing of successful read status.
+ * Open a file on the host. Mode is "r" or "rb" currently. Returns a file
+ * descriptor or -1 on error.
*/
-int smh_load(const char *fname, void *memp, int avail, int verbose)
+static long smh_open(const char *fname, char *modestr)
{
- long ret;
long fd;
- size_t len;
-
- ret = -1;
-
- debug("%s: fname \'%s\', avail %u, memp %p\n", __func__, fname,
- avail, memp);
-
- /* Open the file */
- fd = smh_open(fname, "rb");
- if (fd == -1)
- return -1;
+ unsigned long mode;
+ struct smh_open_s {
+ const char *fname;
+ unsigned long mode;
+ size_t len;
+ } open;
- /* Get the file length */
- ret = smh_len_fd(fd);
- if (ret == -1) {
- smh_close(fd);
- return -1;
- }
+ debug("%s: file \'%s\', mode \'%s\'\n", __func__, fname, modestr);
- /* Check that the file will fit in the supplied buffer */
- if (ret > avail) {
- printf("%s: ERROR ret %ld, avail %u\n", __func__, ret,
- avail);
- smh_close(fd);
+ /* Check the file mode */
+ if (!(strcmp(modestr, "r"))) {
+ mode = MODE_READ;
+ } else if (!(strcmp(modestr, "rb"))) {
+ mode = MODE_READBIN;
+ } else {
+ printf("%s: ERROR mode \'%s\' not supported\n", __func__,
+ modestr);
return -1;
}
- len = ret;
-
- /* Read the file into the buffer */
- ret = smh_read(fd, memp, len);
- if (ret == 0) {
- /* Print successful load information if requested */
- if (verbose) {
- printf("\n%s\n", fname);
- printf(" 0x%8p dest\n", memp);
- printf(" 0x%08lx size\n", len);
- printf(" 0x%08x avail\n", avail);
- }
- }
+ open.fname = fname;
+ open.len = strlen(fname);
+ open.mode = mode;
- /* Close the file */
- smh_close(fd);
+ /* Open the file on the host */
+ fd = smh_trap(SYSOPEN, &open);
+ if (fd == -1)
+ printf("%s: ERROR fd %ld for file \'%s\'\n", __func__, fd,
+ fname);
- return ret;
+ return fd;
}
/*
@@ -135,46 +113,6 @@ static long smh_read(long fd, void *memp, size_t len)
}
/*
- * Open a file on the host. Mode is "r" or "rb" currently. Returns a file
- * descriptor or -1 on error.
- */
-static long smh_open(const char *fname, char *modestr)
-{
- long fd;
- unsigned long mode;
- struct smh_open_s {
- const char *fname;
- unsigned long mode;
- size_t len;
- } open;
-
- debug("%s: file \'%s\', mode \'%s\'\n", __func__, fname, modestr);
-
- /* Check the file mode */
- if (!(strcmp(modestr, "r"))) {
- mode = MODE_READ;
- } else if (!(strcmp(modestr, "rb"))) {
- mode = MODE_READBIN;
- } else {
- printf("%s: ERROR mode \'%s\' not supported\n", __func__,
- modestr);
- return -1;
- }
-
- open.fname = fname;
- open.len = strlen(fname);
- open.mode = mode;
-
- /* Open the file on the host */
- fd = smh_trap(SYSOPEN, &open);
- if (fd == -1)
- printf("%s: ERROR fd %ld for file \'%s\'\n", __func__, fd,
- fname);
-
- return fd;
-}
-
-/*
* Close the file using the file descriptor
*/
static long smh_close(long fd)
@@ -207,6 +145,63 @@ static long smh_len_fd(long fd)
}
/*
+ * Open, load a file into memory, and close it. Check that the available space
+ * is sufficient to store the entire file. Return the bytes actually read from
+ * the file as seen by the read function. The verbose flag enables some extra
+ * printing of successful read status.
+ */
+int smh_load(const char *fname, void *memp, int avail, int verbose)
+{
+ long ret;
+ long fd;
+ size_t len;
+
+ ret = -1;
+
+ debug("%s: fname \'%s\', avail %u, memp %p\n", __func__, fname,
+ avail, memp);
+
+ /* Open the file */
+ fd = smh_open(fname, "rb");
+ if (fd == -1)
+ return -1;
+
+ /* Get the file length */
+ ret = smh_len_fd(fd);
+ if (ret == -1) {
+ smh_close(fd);
+ return -1;
+ }
+
+ /* Check that the file will fit in the supplied buffer */
+ if (ret > avail) {
+ printf("%s: ERROR ret %ld, avail %u\n", __func__, ret,
+ avail);
+ smh_close(fd);
+ return -1;
+ }
+
+ len = ret;
+
+ /* Read the file into the buffer */
+ ret = smh_read(fd, memp, len);
+ if (ret == 0) {
+ /* Print successful load information if requested */
+ if (verbose) {
+ printf("\n%s\n", fname);
+ printf(" 0x%8p dest\n", memp);
+ printf(" 0x%08lx size\n", len);
+ printf(" 0x%08x avail\n", avail);
+ }
+ }
+
+ /* Close the file */
+ smh_close(fd);
+
+ return ret;
+}
+
+/*
* Get the file length from the filename
*/
long smh_len(const char *fname)
--
1.9.3
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [U-Boot] [PATCH 3/3] arm: semihosting: get rid of forward declarations
2014-11-20 10:25 [U-Boot] [PATCH 3/3] arm: semihosting: get rid of forward declarations Linus Walleij
@ 2014-12-12 18:08 ` Steve Rae
0 siblings, 0 replies; 2+ messages in thread
From: Steve Rae @ 2014-12-12 18:08 UTC (permalink / raw)
To: u-boot
Acked-by: Steve Rae <srae@broadcom.com>
On 14-11-20 02:25 AM, Linus Walleij wrote:
> By rearranging the functions in the semihosting code we can
> avoid forward-declaration of the internal static functions.
> This puts the stuff in a logical order: read/open/close/len
> and then higher-order functions follow at the end.
>
> Cc: Darwin Rambo <drambo@broadcom.com>
> Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
> Cc: Mark Hambleton <mark.hambleton@arm.com>
> Cc: Tom Rini <trini@ti.com>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> ---
> arch/arm/lib/semihosting.c | 173 ++++++++++++++++++++++-----------------------
> 1 file changed, 84 insertions(+), 89 deletions(-)
>
> diff --git a/arch/arm/lib/semihosting.c b/arch/arm/lib/semihosting.c
> index 6e1b2d182eca..2eacbacfde0f 100644
> --- a/arch/arm/lib/semihosting.c
> +++ b/arch/arm/lib/semihosting.c
> @@ -23,11 +23,6 @@
> #define MODE_READ 0x0
> #define MODE_READBIN 0x1
>
> -static long smh_read(long fd, void *memp, size_t len);
> -static long smh_open(const char *fname, char *modestr);
> -static long smh_close(long fd);
> -static long smh_len_fd(long fd);
> -
> /*
> * Call the handler
> */
> @@ -44,60 +39,43 @@ static long smh_trap(unsigned int sysnum, void *addr)
> }
>
> /*
> - * Open, load a file into memory, and close it. Check that the available space
> - * is sufficient to store the entire file. Return the bytes actually read from
> - * the file as seen by the read function. The verbose flag enables some extra
> - * printing of successful read status.
> + * Open a file on the host. Mode is "r" or "rb" currently. Returns a file
> + * descriptor or -1 on error.
> */
> -int smh_load(const char *fname, void *memp, int avail, int verbose)
> +static long smh_open(const char *fname, char *modestr)
> {
> - long ret;
> long fd;
> - size_t len;
> -
> - ret = -1;
> -
> - debug("%s: fname \'%s\', avail %u, memp %p\n", __func__, fname,
> - avail, memp);
> -
> - /* Open the file */
> - fd = smh_open(fname, "rb");
> - if (fd == -1)
> - return -1;
> + unsigned long mode;
> + struct smh_open_s {
> + const char *fname;
> + unsigned long mode;
> + size_t len;
> + } open;
>
> - /* Get the file length */
> - ret = smh_len_fd(fd);
> - if (ret == -1) {
> - smh_close(fd);
> - return -1;
> - }
> + debug("%s: file \'%s\', mode \'%s\'\n", __func__, fname, modestr);
>
> - /* Check that the file will fit in the supplied buffer */
> - if (ret > avail) {
> - printf("%s: ERROR ret %ld, avail %u\n", __func__, ret,
> - avail);
> - smh_close(fd);
> + /* Check the file mode */
> + if (!(strcmp(modestr, "r"))) {
> + mode = MODE_READ;
> + } else if (!(strcmp(modestr, "rb"))) {
> + mode = MODE_READBIN;
> + } else {
> + printf("%s: ERROR mode \'%s\' not supported\n", __func__,
> + modestr);
> return -1;
> }
>
> - len = ret;
> -
> - /* Read the file into the buffer */
> - ret = smh_read(fd, memp, len);
> - if (ret == 0) {
> - /* Print successful load information if requested */
> - if (verbose) {
> - printf("\n%s\n", fname);
> - printf(" 0x%8p dest\n", memp);
> - printf(" 0x%08lx size\n", len);
> - printf(" 0x%08x avail\n", avail);
> - }
> - }
> + open.fname = fname;
> + open.len = strlen(fname);
> + open.mode = mode;
>
> - /* Close the file */
> - smh_close(fd);
> + /* Open the file on the host */
> + fd = smh_trap(SYSOPEN, &open);
> + if (fd == -1)
> + printf("%s: ERROR fd %ld for file \'%s\'\n", __func__, fd,
> + fname);
>
> - return ret;
> + return fd;
> }
>
> /*
> @@ -135,46 +113,6 @@ static long smh_read(long fd, void *memp, size_t len)
> }
>
> /*
> - * Open a file on the host. Mode is "r" or "rb" currently. Returns a file
> - * descriptor or -1 on error.
> - */
> -static long smh_open(const char *fname, char *modestr)
> -{
> - long fd;
> - unsigned long mode;
> - struct smh_open_s {
> - const char *fname;
> - unsigned long mode;
> - size_t len;
> - } open;
> -
> - debug("%s: file \'%s\', mode \'%s\'\n", __func__, fname, modestr);
> -
> - /* Check the file mode */
> - if (!(strcmp(modestr, "r"))) {
> - mode = MODE_READ;
> - } else if (!(strcmp(modestr, "rb"))) {
> - mode = MODE_READBIN;
> - } else {
> - printf("%s: ERROR mode \'%s\' not supported\n", __func__,
> - modestr);
> - return -1;
> - }
> -
> - open.fname = fname;
> - open.len = strlen(fname);
> - open.mode = mode;
> -
> - /* Open the file on the host */
> - fd = smh_trap(SYSOPEN, &open);
> - if (fd == -1)
> - printf("%s: ERROR fd %ld for file \'%s\'\n", __func__, fd,
> - fname);
> -
> - return fd;
> -}
> -
> -/*
> * Close the file using the file descriptor
> */
> static long smh_close(long fd)
> @@ -207,6 +145,63 @@ static long smh_len_fd(long fd)
> }
>
> /*
> + * Open, load a file into memory, and close it. Check that the available space
> + * is sufficient to store the entire file. Return the bytes actually read from
> + * the file as seen by the read function. The verbose flag enables some extra
> + * printing of successful read status.
> + */
> +int smh_load(const char *fname, void *memp, int avail, int verbose)
> +{
> + long ret;
> + long fd;
> + size_t len;
> +
> + ret = -1;
> +
> + debug("%s: fname \'%s\', avail %u, memp %p\n", __func__, fname,
> + avail, memp);
> +
> + /* Open the file */
> + fd = smh_open(fname, "rb");
> + if (fd == -1)
> + return -1;
> +
> + /* Get the file length */
> + ret = smh_len_fd(fd);
> + if (ret == -1) {
> + smh_close(fd);
> + return -1;
> + }
> +
> + /* Check that the file will fit in the supplied buffer */
> + if (ret > avail) {
> + printf("%s: ERROR ret %ld, avail %u\n", __func__, ret,
> + avail);
> + smh_close(fd);
> + return -1;
> + }
> +
> + len = ret;
> +
> + /* Read the file into the buffer */
> + ret = smh_read(fd, memp, len);
> + if (ret == 0) {
> + /* Print successful load information if requested */
> + if (verbose) {
> + printf("\n%s\n", fname);
> + printf(" 0x%8p dest\n", memp);
> + printf(" 0x%08lx size\n", len);
> + printf(" 0x%08x avail\n", avail);
> + }
> + }
> +
> + /* Close the file */
> + smh_close(fd);
> +
> + return ret;
> +}
> +
> +/*
> * Get the file length from the filename
> */
> long smh_len(const char *fname)
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-12-12 18:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-20 10:25 [U-Boot] [PATCH 3/3] arm: semihosting: get rid of forward declarations Linus Walleij
2014-12-12 18:08 ` Steve Rae
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox