mconsole_kern.h revision 1da177e4c3f41524e886b7f1b8a0c1fc7321cac
11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com)
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Licensed under the GPL
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __MCONSOLE_KERN_H__
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __MCONSOLE_KERN_H__
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "linux/config.h"
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "linux/list.h"
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "mconsole.h"
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct mconsole_entry {
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct list_head list;
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct mc_request request;
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct mc_device {
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct list_head list;
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	char *name;
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int (*config)(char *);
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int (*get_config)(char *, char *, int, char **);
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int (*remove)(char *);
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CONFIG_CHUNK(str, size, current, chunk, end) \
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsdo { \
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	current += strlen(chunk); \
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	if(current >= size) \
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		str = NULL; \
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	if(str != NULL){ \
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		strcpy(str, chunk); \
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		str += strlen(chunk); \
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} \
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	if(end) \
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		current++; \
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} while(0)
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_MCONSOLE
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void mconsole_register_dev(struct mc_device *new);
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void mconsole_register_dev(struct mc_device *new)
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Overrides for Emacs so that we follow Linus's tabbing style.
551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Emacs will notice this stuff at the end of the file and automatically
561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * adjust the settings for this buffer only.  This must remain at the end
571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * of the file.
581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ---------------------------------------------------------------------------
591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Local variables:
601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * c-file-style: "linux"
611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * End:
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
63