static int parse_one(char *param, char *val, struct kernel_param *params, unsigned num_params, int (*handle_unknown)(char *param, char *val)) { unsigned int i; /* Find parameter */ for (i = 0; i < num_params; i++) { if (parameq(param, params[i].name)) { DEBUGP("They are equal! Calling %p\n", params[i].set); return params[i].set(val, ¶ms[i]); } } if (handle_unknown) { DEBUGP("Unknown argument: calling %p\n", handle_unknown); return handle_unknown(param, val); } DEBUGP("Unknown argument `%s'\n", param); return -ENOENT; }
static int parse_one(char *param, char *val, const struct kernel_param *params, unsigned num_params, int (*handle_unknown)(char *param, char *val)) { unsigned int i; int err; /* Find parameter */ for (i = 0; i < num_params; i++) { if (parameq(param, params[i].name)) { /* No one handled NULL, so do it here. */ if (!val && params[i].ops->set != param_set_bool) return -EINVAL; DEBUGP("They are equal! Calling %p\n", params[i].ops->set); mutex_lock(¶m_lock); err = params[i].ops->set(val, ¶ms[i]); mutex_unlock(¶m_lock); return err; } } if (handle_unknown) { DEBUGP("Unknown argument: calling %p\n", handle_unknown); return handle_unknown(param, val); } DEBUGP("Unknown argument `%s'\n", param); return -ENOENT; }
static void dispatch(struct pfiled *pfiled, struct io *io) { if (cmdline_verbose) { fprintf(stderr, "io: 0x%p, req: 0x%p, op %u\n", (void *)io, (void *)io->req, io->req->op); } switch (io->req->op) { case X_READ: case X_WRITE: handle_read_write(pfiled, io); break; case X_INFO: handle_info(pfiled, io); break; case X_COPY: handle_copy(pfiled, io); break; case X_DELETE: handle_delete(pfiled, io); break; case X_OPEN: handle_open(pfiled, io); break; case X_CLOSE: handle_close(pfiled, io); break; // case X_SNAPSHOT: case X_SYNC: default: handle_unknown(pfiled, io); } }
static int parse_one(char *param, char *val, struct kernel_param *params, unsigned num_params, int (*handle_unknown)(char *param, char *val)) { unsigned int i; printk("in parse_one(%s, %s)\n", param, val); /* Find parameter */ for (i = 0; i < num_params; i++) { if (parameq(param, params[i].name)) { DEBUGP("They are equal! Calling %p\n", params[i].set); return params[i].set(val, ¶ms[i]); } } if (handle_unknown) { DEBUGP("Unknown argument: calling %p\n", handle_unknown); return handle_unknown(param, val); } /* Ignore unknown args if no handle_unknown function specified */ printk("Unknown argument `%s'\n", param); return 0; }