162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2001, 2002 Jeff Dike (jdike@karaya.com) 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef __MCONSOLE_KERN_H__ 762306a36Sopenharmony_ci#define __MCONSOLE_KERN_H__ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/list.h> 1062306a36Sopenharmony_ci#include "mconsole.h" 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cistruct mconsole_entry { 1362306a36Sopenharmony_ci struct list_head list; 1462306a36Sopenharmony_ci struct mc_request request; 1562306a36Sopenharmony_ci}; 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci/* All these methods are called in process context. */ 1862306a36Sopenharmony_cistruct mc_device { 1962306a36Sopenharmony_ci struct list_head list; 2062306a36Sopenharmony_ci char *name; 2162306a36Sopenharmony_ci int (*config)(char *, char **); 2262306a36Sopenharmony_ci int (*get_config)(char *, char *, int, char **); 2362306a36Sopenharmony_ci int (*id)(char **, int *, int *); 2462306a36Sopenharmony_ci int (*remove)(int, char **); 2562306a36Sopenharmony_ci}; 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci#define CONFIG_CHUNK(str, size, current, chunk, end) \ 2862306a36Sopenharmony_cido { \ 2962306a36Sopenharmony_ci current += strlen(chunk); \ 3062306a36Sopenharmony_ci if(current >= size) \ 3162306a36Sopenharmony_ci str = NULL; \ 3262306a36Sopenharmony_ci if(str != NULL){ \ 3362306a36Sopenharmony_ci strcpy(str, chunk); \ 3462306a36Sopenharmony_ci str += strlen(chunk); \ 3562306a36Sopenharmony_ci } \ 3662306a36Sopenharmony_ci if(end) \ 3762306a36Sopenharmony_ci current++; \ 3862306a36Sopenharmony_ci} while(0) 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci#ifdef CONFIG_MCONSOLE 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ciextern void mconsole_register_dev(struct mc_device *new); 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci#else 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_cistatic inline void mconsole_register_dev(struct mc_device *new) 4762306a36Sopenharmony_ci{ 4862306a36Sopenharmony_ci} 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci#endif 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci#endif 53