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 937185b33240870719b6b5913a46e6a441f1ae96fAl Viro#include <linux/list.h> 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "mconsole.h" 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct mconsole_entry { 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct list_head list; 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct mc_request request; 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 17d8d7c28ec0b50ac57ddc909ae6eca1519473f300Paolo 'Blaisorblade' Giarrusso/* All these methods are called in process context. */ 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct mc_device { 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct list_head list; 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char *name; 21f28169d2000177e8b72ccc6d72887be779dceca8Jeff Dike int (*config)(char *, char **); 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int (*get_config)(char *, char *, int, char **); 23894be2a485b75bce9a4d45d3e431aafd4c89f1eaJeff Dike int (*id)(char **, int *, int *); 24f28169d2000177e8b72ccc6d72887be779dceca8Jeff Dike int (*remove)(int, char **); 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CONFIG_CHUNK(str, size, current, chunk, end) \ 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsdo { \ 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds current += strlen(chunk); \ 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if(current >= size) \ 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds str = NULL; \ 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if(str != NULL){ \ 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds strcpy(str, chunk); \ 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds str += strlen(chunk); \ 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } \ 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if(end) \ 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds current++; \ 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} while(0) 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_MCONSOLE 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void mconsole_register_dev(struct mc_device *new); 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void mconsole_register_dev(struct mc_device *new) 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 53