summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Pisa <ppisa@pikron.com>2016-05-21 03:10:06 +0200
committerPavel Pisa <ppisa@pikron.com>2016-05-31 10:33:42 +0200
commit4c59eebfbf6037a6e1362a0c1c9904829be1762a (patch)
tree18cb669657b120785fd40686d5854237f620e3e7
parentlibchip: Remove dwmac network interface driver (diff)
downloadrtems-4c59eebfbf6037a6e1362a0c1c9904829be1762a.tar.bz2
arm/raspberrypi: cmdline enhancement and early access workaround.
cmdline argument is returned without option name. The calls to command line parsing can be called earlier before BSS is cleaned out.
-rw-r--r--c/src/lib/libbsp/arm/raspberrypi/startup/cmdline.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/c/src/lib/libbsp/arm/raspberrypi/startup/cmdline.c b/c/src/lib/libbsp/arm/raspberrypi/startup/cmdline.c
index f8a7182c65..d585e311d8 100644
--- a/c/src/lib/libbsp/arm/raspberrypi/startup/cmdline.c
+++ b/c/src/lib/libbsp/arm/raspberrypi/startup/cmdline.c
@@ -19,8 +19,8 @@
#include <bsp/vc.h>
#define MAX_CMDLINE_LENGTH 1024
-static int rpi_cmdline_ready;
-static char rpi_cmdline_cached[MAX_CMDLINE_LENGTH];
+static int rpi_cmdline_ready = -1;
+static char rpi_cmdline_cached[MAX_CMDLINE_LENGTH] = "force .data placement";
static bcm2835_get_cmdline_entries rpi_cmdline_entries;
const char *rpi_cmdline_get_raw(void)
@@ -32,7 +32,7 @@ const char *rpi_cmdline_get_raw(void)
const char *rpi_cmdline_get_cached(void)
{
- if (!rpi_cmdline_ready) {
+ if (rpi_cmdline_ready <= 0) {
const char *line = rpi_cmdline_get_raw();
strncpy(rpi_cmdline_cached, line, MAX_CMDLINE_LENGTH - 1);
rpi_cmdline_cached[MAX_CMDLINE_LENGTH - 1] = 0;
@@ -43,5 +43,9 @@ const char *rpi_cmdline_get_cached(void)
const char *rpi_cmdline_get_arg(const char* arg)
{
- return strstr (rpi_cmdline_get_cached(), arg);
+ const char *opt_data;
+ opt_data = strstr(rpi_cmdline_get_cached(), arg);
+ if (opt_data)
+ opt_data += strlen(arg);
+ return opt_data;
}