return 0;
}
+#ifdef CONFIG_RK_CONFIG
+static int ignore_unknown(char *param, char *val)
+{
+ return 0;
+}
+
+int module_parse_kernel_cmdline(const char *name, const struct kernel_param *params, unsigned num)
+{
+ int ret;
+ unsigned i;
+ size_t name_len = strlen(name);
+ struct kernel_param new_params[num];
+ char args[strlen(saved_command_line) + 1];
+
+ if (!num)
+ return 0;
+
+ strcpy(args, saved_command_line);
+ memcpy(new_params, params, sizeof(struct kernel_param) * num);
+
+ for (i = 0; i < num; i++)
+ new_params[i].name = NULL;
+ for (i = 0; i < num; i++) {
+ char *new_name = kmalloc(strlen(params[i].name) + name_len + 2, GFP_KERNEL);
+ if (!new_name) {
+ ret = -ENOMEM;
+ goto out;
+ }
+ sprintf(new_name, "%s.%s", name, params[i].name);
+ new_params[i].name = new_name;
+ }
+
+ ret = parse_args(name, args, new_params, num, ignore_unknown);
+
+out:
+ for (i = 0; i < num; i++)
+ if (new_params[i].name)
+ kfree(new_params[i].name);
+ return ret;
+}
+#endif
+
/* Lazy bastard, eh? */
#define STANDARD_PARAM_DEF(name, type, format, tmptype, strtolfn) \
int param_set_##name(const char *val, const struct kernel_param *kp) \
int param_set_bool(const char *val, const struct kernel_param *kp)
{
bool v;
+ int ret;
/* No equals means "set"... */
if (!val) val = "1";
/* One of =[yYnN01] */
- switch (val[0]) {
- case 'y': case 'Y': case '1':
- v = true;
- break;
- case 'n': case 'N': case '0':
- v = false;
- break;
- default:
- return -EINVAL;
- }
+ ret = strtobool(val, &v);
+ if (ret)
+ return ret;
if (kp->flags & KPARAM_ISBOOL)
*(bool *)kp->arg = v;
return sprintf(buf, "%s\n", vattr->version);
}
-extern struct module_version_attribute __start___modver[], __stop___modver[];
+extern const struct module_version_attribute *__start___modver[];
+extern const struct module_version_attribute *__stop___modver[];
static void __init version_sysfs_builtin(void)
{
- const struct module_version_attribute *vattr;
+ const struct module_version_attribute **p;
struct module_kobject *mk;
int err;
- for (vattr = __start___modver; vattr < __stop___modver; vattr++) {
+ for (p = __start___modver; p < __stop___modver; p++) {
+ const struct module_version_attribute *vattr = *p;
+
mk = locate_module_kobject(vattr->module_name);
if (mk) {
err = sysfs_create_file(&mk->kobj, &vattr->mattr.attr);