File indexing completed on 2025-05-11 08:23:04
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #include <bsp.h>
0019 #include <bsp/vc.h>
0020
0021 #include <string.h>
0022
0023 #define MAX_CMDLINE_LENGTH 1024
0024 static int rpi_cmdline_ready = -1;
0025 static char rpi_cmdline_cached[MAX_CMDLINE_LENGTH] = "force .data placement";
0026 static bcm2835_get_cmdline_entries rpi_cmdline_entries;
0027
0028 const char *rpi_cmdline_get_raw(void)
0029 {
0030 memset(&rpi_cmdline_entries, 0, sizeof(rpi_cmdline_entries));
0031 if (bcm2835_mailbox_get_cmdline(&rpi_cmdline_entries) < 0)
0032 return NULL;
0033 return rpi_cmdline_entries.cmdline;
0034 }
0035
0036 const char *rpi_cmdline_get_cached(void)
0037 {
0038 if (rpi_cmdline_ready <= 0) {
0039 const char *line = rpi_cmdline_get_raw();
0040 if (line != NULL)
0041 strncpy(rpi_cmdline_cached, line, MAX_CMDLINE_LENGTH - 1);
0042 rpi_cmdline_cached[MAX_CMDLINE_LENGTH - 1] = 0;
0043 rpi_cmdline_ready = 1;
0044 }
0045 return rpi_cmdline_cached;
0046 }
0047
0048 const char *rpi_cmdline_get_arg(const char* arg)
0049 {
0050 const char *opt_data;
0051 opt_data = strstr(rpi_cmdline_get_cached(), arg);
0052 if (opt_data)
0053 opt_data += strlen(arg);
0054 return opt_data;
0055 }