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