/* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * cmdline.c: Kernel command line creation using ARCS argc/argv. * * Copyright (C) 1996 David S. Miller (davem@davemloft.net)
*/ #include <linux/bug.h> #include <linux/init.h> #include <linux/kernel.h> #include <linux/string.h>
/* * A 32-bit ARC PROM pass arguments and environment as 32-bit pointer. * These macro take care of sign extension.
*/ #define prom_argv(index) ((char *) (long)argv[(index)])
staticchar __init *move_firmware_args(int argc, LONG *argv, char *cp)
{ char *s; int actr, i;
actr = 1; /* Always ignore argv[0] */
while (actr < argc) { for(i = 0; i < ARRAY_SIZE(used_arc); i++) { int len = strlen(used_arc[i][0]);
if (!strncmp(prom_argv(actr), used_arc[i][0], len)) { /* Ok, we want it. First append the replacement... */
strcat(cp, used_arc[i][1]);
cp += strlen(used_arc[i][1]); /* ... and now the argument */
s = strchr(prom_argv(actr), '='); if (s) {
s++;
strcpy(cp, s);
cp += strlen(s);
}
*cp++ = ' '; break;
}
}
actr++;
}
return cp;
}
void __init prom_init_cmdline(int argc, LONG *argv)
{ char *cp; int actr, i;
actr = 1; /* Always ignore argv[0] */
cp = arcs_cmdline; /* * Move ARC variables to the beginning to make sure they can be * overridden by later arguments.
*/
cp = move_firmware_args(argc, argv, cp);
while (actr < argc) { for (i = 0; i < ARRAY_SIZE(ignored); i++) { int len = strlen(ignored[i]);
if (!strncmp(prom_argv(actr), ignored[i], len)) goto pic_cont;
} /* Ok, we want it. */
strcpy(cp, prom_argv(actr));
cp += strlen(prom_argv(actr));
*cp++ = ' ';
pic_cont:
actr++;
}
if (cp != arcs_cmdline) /* get rid of trailing space */
--cp;
*cp = '\0';
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.