Message ID | 20211117160412.71563-12-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | linux-user: simplify safe signal handling | expand |
On Wed, Nov 17, 2021 at 9:04 AM Richard Henderson < richard.henderson@linaro.org> wrote: > Pull the internal errno used by qemu internally its own > header file, for use by safe-syscall.S. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > bsd-user/errno_defs.h | 6 +++++- > bsd-user/special-errno.h | 24 ++++++++++++++++++++++++ > 2 files changed, 29 insertions(+), 1 deletion(-) > create mode 100644 bsd-user/special-errno.h > Reviewed by: Warner Losh <imp@bsdimp.com> > diff --git a/bsd-user/errno_defs.h b/bsd-user/errno_defs.h > index 583ebe8cee..73cfa24b7f 100644 > --- a/bsd-user/errno_defs.h > +++ b/bsd-user/errno_defs.h > @@ -151,6 +151,10 @@ > /* Internal errors: */ > #define TARGET_EJUSTRETURN 254 /* Just return without > modifing regs */ > #define TARGET_ERESTART 255 /* Restart syscall */ > -#define QEMU_ERESTARTSYS TARGET_ERESTART /* compat */ > + > +#include "special-errno.h" > + > +_Static_assert(TARGET_ERESTART == QEMU_ERESTARTSYS, > + "TARGET_ERESTART and QEMU_ERESTARTSYS expected to match"); > > #endif /* ! _ERRNO_DEFS_H_ */ > diff --git a/bsd-user/special-errno.h b/bsd-user/special-errno.h > new file mode 100644 > index 0000000000..03599d9b5a > --- /dev/null > +++ b/bsd-user/special-errno.h > @@ -0,0 +1,24 @@ > +/* SPDX-License-Identifier: BSD-3-Clause */ > +/* > + * QEMU internal errno values for implementing user-only POSIX. > + * > + * Copyright (c) 2021 Linaro, Ltd. > + */ > + > +#ifndef SPECIAL_ERRNO_H > +#define SPECIAL_ERRNO_H > + > +/* > + * All of these are QEMU internal, not visible to the guest. > + * They should be chosen so as to not overlap with any host > + * or guest errno. > + */ > + > +/* > + * This is returned when a system call should be restarted, to tell the > + * main loop that it should wind the guest PC backwards so it will > + * re-execute the syscall after handling any pending signals. > + */ > +#define QEMU_ERESTARTSYS 255 > + > +#endif /* SPECIAL_ERRNO_H */ > -- > 2.25.1 > >
diff --git a/bsd-user/errno_defs.h b/bsd-user/errno_defs.h index 583ebe8cee..73cfa24b7f 100644 --- a/bsd-user/errno_defs.h +++ b/bsd-user/errno_defs.h @@ -151,6 +151,10 @@ /* Internal errors: */ #define TARGET_EJUSTRETURN 254 /* Just return without modifing regs */ #define TARGET_ERESTART 255 /* Restart syscall */ -#define QEMU_ERESTARTSYS TARGET_ERESTART /* compat */ + +#include "special-errno.h" + +_Static_assert(TARGET_ERESTART == QEMU_ERESTARTSYS, + "TARGET_ERESTART and QEMU_ERESTARTSYS expected to match"); #endif /* ! _ERRNO_DEFS_H_ */ diff --git a/bsd-user/special-errno.h b/bsd-user/special-errno.h new file mode 100644 index 0000000000..03599d9b5a --- /dev/null +++ b/bsd-user/special-errno.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ +/* + * QEMU internal errno values for implementing user-only POSIX. + * + * Copyright (c) 2021 Linaro, Ltd. + */ + +#ifndef SPECIAL_ERRNO_H +#define SPECIAL_ERRNO_H + +/* + * All of these are QEMU internal, not visible to the guest. + * They should be chosen so as to not overlap with any host + * or guest errno. + */ + +/* + * This is returned when a system call should be restarted, to tell the + * main loop that it should wind the guest PC backwards so it will + * re-execute the syscall after handling any pending signals. + */ +#define QEMU_ERESTARTSYS 255 + +#endif /* SPECIAL_ERRNO_H */
Pull the internal errno used by qemu internally its own header file, for use by safe-syscall.S. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- bsd-user/errno_defs.h | 6 +++++- bsd-user/special-errno.h | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 bsd-user/special-errno.h