mconsole.h (2439B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Copyright (C) 2001 Lennert Buytenhek (buytenh@gnu.org) 4 * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) 5 */ 6 7#ifndef __MCONSOLE_H__ 8#define __MCONSOLE_H__ 9 10#ifdef __UM_HOST__ 11#include <stdint.h> 12#define u32 uint32_t 13#endif 14 15#include <sysdep/ptrace.h> 16 17#define MCONSOLE_MAGIC (0xcafebabe) 18#define MCONSOLE_MAX_DATA (512) 19#define MCONSOLE_VERSION 2 20 21struct mconsole_request { 22 u32 magic; 23 u32 version; 24 u32 len; 25 char data[MCONSOLE_MAX_DATA]; 26}; 27 28struct mconsole_reply { 29 u32 err; 30 u32 more; 31 u32 len; 32 char data[MCONSOLE_MAX_DATA]; 33}; 34 35struct mconsole_notify { 36 u32 magic; 37 u32 version; 38 enum { MCONSOLE_SOCKET, MCONSOLE_PANIC, MCONSOLE_HANG, 39 MCONSOLE_USER_NOTIFY } type; 40 u32 len; 41 char data[MCONSOLE_MAX_DATA]; 42}; 43 44struct mc_request; 45 46enum mc_context { MCONSOLE_INTR, MCONSOLE_PROC }; 47 48struct mconsole_command 49{ 50 char *command; 51 void (*handler)(struct mc_request *req); 52 enum mc_context context; 53}; 54 55struct mc_request 56{ 57 int len; 58 int as_interrupt; 59 60 int originating_fd; 61 unsigned int originlen; 62 unsigned char origin[128]; /* sockaddr_un */ 63 64 struct mconsole_request request; 65 struct mconsole_command *cmd; 66 struct uml_pt_regs regs; 67}; 68 69extern char mconsole_socket_name[]; 70 71extern int mconsole_unlink_socket(void); 72extern int mconsole_reply_len(struct mc_request *req, const char *reply, 73 int len, int err, int more); 74extern int mconsole_reply(struct mc_request *req, const char *str, int err, 75 int more); 76 77extern void mconsole_version(struct mc_request *req); 78extern void mconsole_help(struct mc_request *req); 79extern void mconsole_halt(struct mc_request *req); 80extern void mconsole_reboot(struct mc_request *req); 81extern void mconsole_config(struct mc_request *req); 82extern void mconsole_remove(struct mc_request *req); 83extern void mconsole_sysrq(struct mc_request *req); 84extern void mconsole_cad(struct mc_request *req); 85extern void mconsole_stop(struct mc_request *req); 86extern void mconsole_go(struct mc_request *req); 87extern void mconsole_log(struct mc_request *req); 88extern void mconsole_proc(struct mc_request *req); 89extern void mconsole_stack(struct mc_request *req); 90 91extern int mconsole_get_request(int fd, struct mc_request *req); 92extern int mconsole_notify(char *sock_name, int type, const void *data, 93 int len); 94extern char *mconsole_notify_socket(void); 95extern void lock_notify(void); 96extern void unlock_notify(void); 97 98#endif