Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:04

0001 /**
0002  * @file
0003  *
0004  * @ingroup raspberrypi
0005  *
0006  * @brief mailbox support.
0007  */
0008 /*
0009  * Copyright (c) 2015 Yang Qiao
0010  *
0011  *  The license and distribution terms for this file may be
0012  *  found in the file LICENSE in this distribution or at
0013  *
0014  *  http://www.rtems.org/license/LICENSE
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 }