1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) 4 */ 5 6 #ifndef __MCONSOLE_KERN_H__ 7 #define __MCONSOLE_KERN_H__ 8 9 #include <linux/list.h> 10 #include "mconsole.h" 11 12 struct mconsole_entry { 13 struct list_head list; 14 struct mc_request request; 15 }; 16 17 /* All these methods are called in process context. */ 18 struct mc_device { 19 struct list_head list; 20 char *name; 21 int (*config)(char *, char **); 22 int (*get_config)(char *, char *, int, char **); 23 int (*id)(char **, int *, int *); 24 int (*remove)(int, char **); 25 }; 26 27 #define CONFIG_CHUNK(str, size, current, chunk, end) \ 28 do { \ 29 current += strlen(chunk); \ 30 if(current >= size) \ 31 str = NULL; \ 32 if(str != NULL){ \ 33 strcpy(str, chunk); \ 34 str += strlen(chunk); \ 35 } \ 36 if(end) \ 37 current++; \ 38 } while(0) 39 40 #ifdef CONFIG_MCONSOLE 41 42 extern void mconsole_register_dev(struct mc_device *new); 43 44 #else 45 46 static inline void mconsole_register_dev(struct mc_device *new) 47 { 48 } 49 50 #endif 51 52 #endif 53