Ejemplo n.º 1
0
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, &params[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;
}
Ejemplo n.º 2
0
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(&param_lock);
			err = params[i].ops->set(val, &params[i]);
			mutex_unlock(&param_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;
}
Ejemplo n.º 3
0
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);
	}
}
Ejemplo n.º 4
0
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, &params[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;
}