/*
 * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com)
 * Licensed under the GPL
 */

#ifndef __MCONSOLE_KERN_H__
#define __MCONSOLE_KERN_H__

#include <linux/list.h>
#include "mconsole.h"

struct mconsole_entry {
	struct list_head list;
	struct mc_request request;
};

/* All these methods are called in process context. */
struct mc_device {
	struct list_head list;
	char *name;
	int (*config)(char *, char **);
	int (*get_config)(char *, char *, int, char **);
	int (*id)(char **, int *, int *);
	int (*remove)(int, char **);
};

#define CONFIG_CHUNK(str, size, current, chunk, end) \
do { \
	current += strlen(chunk); \
	if(current >= size) \
		str = NULL; \
	if(str != NULL){ \
		strcpy(str, chunk); \
		str += strlen(chunk); \
	} \
	if(end) \
		current++; \
} while(0)

#ifdef CONFIG_MCONSOLE

extern void mconsole_register_dev(struct mc_device *new);

#else

static inline void mconsole_register_dev(struct mc_device *new)
{
}

#endif

#endif
