cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

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