1*d96bf49bSAlex Bennée /* 2*d96bf49bSAlex Bennée * gdbstub user-mode only APIs 3*d96bf49bSAlex Bennée * 4*d96bf49bSAlex Bennée * Copyright (c) 2022 Linaro Ltd 5*d96bf49bSAlex Bennée * 6*d96bf49bSAlex Bennée * SPDX-License-Identifier: LGPL-2.0+ 7*d96bf49bSAlex Bennée */ 8*d96bf49bSAlex Bennée 9*d96bf49bSAlex Bennée #ifndef GDBSTUB_USER_H 10*d96bf49bSAlex Bennée #define GDBSTUB_USER_H 11*d96bf49bSAlex Bennée 12*d96bf49bSAlex Bennée /** 13*d96bf49bSAlex Bennée * gdb_handlesig() - yield control to gdb 14*d96bf49bSAlex Bennée * @cpu: CPU 15*d96bf49bSAlex Bennée * @sig: if non-zero, the signal number which caused us to stop 16*d96bf49bSAlex Bennée * 17*d96bf49bSAlex Bennée * This function yields control to gdb, when a user-mode-only target 18*d96bf49bSAlex Bennée * needs to stop execution. If @sig is non-zero, then we will send a 19*d96bf49bSAlex Bennée * stop packet to tell gdb that we have stopped because of this signal. 20*d96bf49bSAlex Bennée * 21*d96bf49bSAlex Bennée * This function will block (handling protocol requests from gdb) 22*d96bf49bSAlex Bennée * until gdb tells us to continue target execution. When it does 23*d96bf49bSAlex Bennée * return, the return value is a signal to deliver to the target, 24*d96bf49bSAlex Bennée * or 0 if no signal should be delivered, ie the signal that caused 25*d96bf49bSAlex Bennée * us to stop should be ignored. 26*d96bf49bSAlex Bennée */ 27*d96bf49bSAlex Bennée int gdb_handlesig(CPUState *, int); 28*d96bf49bSAlex Bennée 29*d96bf49bSAlex Bennée /** 30*d96bf49bSAlex Bennée * gdb_signalled() - inform remote gdb of sig exit 31*d96bf49bSAlex Bennée * @as: current CPUArchState 32*d96bf49bSAlex Bennée * @sig: signal number 33*d96bf49bSAlex Bennée */ 34*d96bf49bSAlex Bennée void gdb_signalled(CPUArchState *as, int sig); 35*d96bf49bSAlex Bennée 36*d96bf49bSAlex Bennée /** 37*d96bf49bSAlex Bennée * gdbserver_fork() - disable gdb stub for child processes. 38*d96bf49bSAlex Bennée * @cs: CPU 39*d96bf49bSAlex Bennée */ 40*d96bf49bSAlex Bennée void gdbserver_fork(CPUState *cs); 41*d96bf49bSAlex Bennée 42*d96bf49bSAlex Bennée 43*d96bf49bSAlex Bennée #endif /* GDBSTUB_USER_H */ 44