diff mbox series

linux-user/alpha: Fix target rlimits for alpha and rearrange for clarity

Message ID 87y236lpwb.fsf@depni.sinp.msu.ru
State New
Headers show
Series linux-user/alpha: Fix target rlimits for alpha and rearrange for clarity | expand

Commit Message

Serge Belyshev Jan. 15, 2022, 11:32 a.m. UTC
Alpha uses different values of some TARGET_RLIMIT_* constants, which were
missing and caused bugs like #577, fixed thus.  Also rearranged all three
(alpha, mips and sparc) that differ from everyone else for clarity.

Signed-off-by: Serge Belyshev <belyshev@depni.sinp.msu.ru>
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/577
---
 linux-user/syscall_defs.h | 31 ++++++++++++++-----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

Comments

Laurent Vivier Jan. 27, 2022, 1:49 p.m. UTC | #1
Le 15/01/2022 à 12:32, Serge Belyshev a écrit :
> Alpha uses different values of some TARGET_RLIMIT_* constants, which were
> missing and caused bugs like #577, fixed thus.  Also rearranged all three
> (alpha, mips and sparc) that differ from everyone else for clarity.
> 
> Signed-off-by: Serge Belyshev <belyshev@depni.sinp.msu.ru>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/577
> ---
>   linux-user/syscall_defs.h | 31 ++++++++++++++-----------------
>   1 file changed, 14 insertions(+), 17 deletions(-)
> 
> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
> index f23f0a2178..3fcabaeae3 100644
> --- a/linux-user/syscall_defs.h
> +++ b/linux-user/syscall_defs.h
> @@ -730,44 +730,41 @@ struct target_rlimit {
>   #define TARGET_RLIM_INFINITY	((abi_ulong)-1)
>   #endif
>   
> -#if defined(TARGET_MIPS)
>   #define TARGET_RLIMIT_CPU		0
>   #define TARGET_RLIMIT_FSIZE		1
>   #define TARGET_RLIMIT_DATA		2
>   #define TARGET_RLIMIT_STACK		3
>   #define TARGET_RLIMIT_CORE		4
> +#if defined(TARGET_MIPS)
> +#define TARGET_RLIMIT_NOFILE		5
> +#define TARGET_RLIMIT_AS		6
>   #define TARGET_RLIMIT_RSS		7
>   #define TARGET_RLIMIT_NPROC		8
> -#define TARGET_RLIMIT_NOFILE		5
>   #define TARGET_RLIMIT_MEMLOCK		9
> -#define TARGET_RLIMIT_AS		6
> -#define TARGET_RLIMIT_LOCKS		10
> -#define TARGET_RLIMIT_SIGPENDING	11
> -#define TARGET_RLIMIT_MSGQUEUE		12
> -#define TARGET_RLIMIT_NICE		13
> -#define TARGET_RLIMIT_RTPRIO		14
> -#else
> -#define TARGET_RLIMIT_CPU		0
> -#define TARGET_RLIMIT_FSIZE		1
> -#define TARGET_RLIMIT_DATA		2
> -#define TARGET_RLIMIT_STACK		3
> -#define TARGET_RLIMIT_CORE		4
> +#elif defined(TARGET_ALPHA)
> +#define TARGET_RLIMIT_RSS		5
> +#define TARGET_RLIMIT_NOFILE		6
> +#define TARGET_RLIMIT_AS		7
> +#define TARGET_RLIMIT_NPROC		8
> +#define TARGET_RLIMIT_MEMLOCK		9
> +#elif defined(TARGET_SPARC)
>   #define TARGET_RLIMIT_RSS		5
> -#if defined(TARGET_SPARC)
>   #define TARGET_RLIMIT_NOFILE		6
>   #define TARGET_RLIMIT_NPROC		7
> +#define TARGET_RLIMIT_MEMLOCK		8
> +#define TARGET_RLIMIT_AS		9
>   #else
> +#define TARGET_RLIMIT_RSS		5
>   #define TARGET_RLIMIT_NPROC		6
>   #define TARGET_RLIMIT_NOFILE		7
> -#endif
>   #define TARGET_RLIMIT_MEMLOCK		8
>   #define TARGET_RLIMIT_AS		9
> +#endif
>   #define TARGET_RLIMIT_LOCKS		10
>   #define TARGET_RLIMIT_SIGPENDING	11
>   #define TARGET_RLIMIT_MSGQUEUE		12
>   #define TARGET_RLIMIT_NICE		13
>   #define TARGET_RLIMIT_RTPRIO		14
> -#endif
>   
>   struct target_pollfd {
>       int fd;           /* file descriptor */

Reviewed-by: Laurent Vivier <laurent@vivier.eu>

perhaps you could also add RLIMIT_RTTIME (15) and update target_to_host_resource()?

The next step would be to move the generic definitions to a new file in 
linux-user/generic/target_resource.h and the specific ones to linux-user/alpha, linux-user/mips and 
linux-user/sparc.

Thanks,
Laurent
Laurent Vivier Jan. 27, 2022, 2:09 p.m. UTC | #2
Le 15/01/2022 à 12:32, Serge Belyshev a écrit :
> Alpha uses different values of some TARGET_RLIMIT_* constants, which were
> missing and caused bugs like #577, fixed thus.  Also rearranged all three
> (alpha, mips and sparc) that differ from everyone else for clarity.
> 
> Signed-off-by: Serge Belyshev <belyshev@depni.sinp.msu.ru>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/577
> ---
>   linux-user/syscall_defs.h | 31 ++++++++++++++-----------------
>   1 file changed, 14 insertions(+), 17 deletions(-)
> 
> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
> index f23f0a2178..3fcabaeae3 100644
> --- a/linux-user/syscall_defs.h
> +++ b/linux-user/syscall_defs.h
> @@ -730,44 +730,41 @@ struct target_rlimit {
>   #define TARGET_RLIM_INFINITY	((abi_ulong)-1)
>   #endif
>   
> -#if defined(TARGET_MIPS)
>   #define TARGET_RLIMIT_CPU		0
>   #define TARGET_RLIMIT_FSIZE		1
>   #define TARGET_RLIMIT_DATA		2
>   #define TARGET_RLIMIT_STACK		3
>   #define TARGET_RLIMIT_CORE		4
> +#if defined(TARGET_MIPS)
> +#define TARGET_RLIMIT_NOFILE		5
> +#define TARGET_RLIMIT_AS		6
>   #define TARGET_RLIMIT_RSS		7
>   #define TARGET_RLIMIT_NPROC		8
> -#define TARGET_RLIMIT_NOFILE		5
>   #define TARGET_RLIMIT_MEMLOCK		9
> -#define TARGET_RLIMIT_AS		6
> -#define TARGET_RLIMIT_LOCKS		10
> -#define TARGET_RLIMIT_SIGPENDING	11
> -#define TARGET_RLIMIT_MSGQUEUE		12
> -#define TARGET_RLIMIT_NICE		13
> -#define TARGET_RLIMIT_RTPRIO		14
> -#else
> -#define TARGET_RLIMIT_CPU		0
> -#define TARGET_RLIMIT_FSIZE		1
> -#define TARGET_RLIMIT_DATA		2
> -#define TARGET_RLIMIT_STACK		3
> -#define TARGET_RLIMIT_CORE		4
> +#elif defined(TARGET_ALPHA)
> +#define TARGET_RLIMIT_RSS		5
> +#define TARGET_RLIMIT_NOFILE		6
> +#define TARGET_RLIMIT_AS		7
> +#define TARGET_RLIMIT_NPROC		8
> +#define TARGET_RLIMIT_MEMLOCK		9
> +#elif defined(TARGET_SPARC)
>   #define TARGET_RLIMIT_RSS		5
> -#if defined(TARGET_SPARC)
>   #define TARGET_RLIMIT_NOFILE		6
>   #define TARGET_RLIMIT_NPROC		7
> +#define TARGET_RLIMIT_MEMLOCK		8
> +#define TARGET_RLIMIT_AS		9
>   #else
> +#define TARGET_RLIMIT_RSS		5
>   #define TARGET_RLIMIT_NPROC		6
>   #define TARGET_RLIMIT_NOFILE		7
> -#endif
>   #define TARGET_RLIMIT_MEMLOCK		8
>   #define TARGET_RLIMIT_AS		9
> +#endif
>   #define TARGET_RLIMIT_LOCKS		10
>   #define TARGET_RLIMIT_SIGPENDING	11
>   #define TARGET_RLIMIT_MSGQUEUE		12
>   #define TARGET_RLIMIT_NICE		13
>   #define TARGET_RLIMIT_RTPRIO		14
> -#endif
>   
>   struct target_pollfd {
>       int fd;           /* file descriptor */

Applied to my linux-user-for-7.0 branch.

Thanks,
Laurent
Serge Belyshev Jan. 29, 2022, 7:41 p.m. UTC | #3
Laurent Vivier <laurent@vivier.eu> writes:

>
> Reviewed-by: Laurent Vivier <laurent@vivier.eu>

> Applied to my linux-user-for-7.0 branch.

Thanks!

> perhaps you could also add RLIMIT_RTTIME (15) and update target_to_host_resource()?
>
> The next step would be to move the generic definitions to a new file
> in linux-user/generic/target_resource.h and the specific ones to
> linux-user/alpha, linux-user/mips and linux-user/sparc.

Will submit in a moment on top of the previous patch.  End result is cleaner
but slightly bulkier.
diff mbox series

Patch

diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index f23f0a2178..3fcabaeae3 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -730,44 +730,41 @@  struct target_rlimit {
 #define TARGET_RLIM_INFINITY	((abi_ulong)-1)
 #endif
 
-#if defined(TARGET_MIPS)
 #define TARGET_RLIMIT_CPU		0
 #define TARGET_RLIMIT_FSIZE		1
 #define TARGET_RLIMIT_DATA		2
 #define TARGET_RLIMIT_STACK		3
 #define TARGET_RLIMIT_CORE		4
+#if defined(TARGET_MIPS)
+#define TARGET_RLIMIT_NOFILE		5
+#define TARGET_RLIMIT_AS		6
 #define TARGET_RLIMIT_RSS		7
 #define TARGET_RLIMIT_NPROC		8
-#define TARGET_RLIMIT_NOFILE		5
 #define TARGET_RLIMIT_MEMLOCK		9
-#define TARGET_RLIMIT_AS		6
-#define TARGET_RLIMIT_LOCKS		10
-#define TARGET_RLIMIT_SIGPENDING	11
-#define TARGET_RLIMIT_MSGQUEUE		12
-#define TARGET_RLIMIT_NICE		13
-#define TARGET_RLIMIT_RTPRIO		14
-#else
-#define TARGET_RLIMIT_CPU		0
-#define TARGET_RLIMIT_FSIZE		1
-#define TARGET_RLIMIT_DATA		2
-#define TARGET_RLIMIT_STACK		3
-#define TARGET_RLIMIT_CORE		4
+#elif defined(TARGET_ALPHA)
+#define TARGET_RLIMIT_RSS		5
+#define TARGET_RLIMIT_NOFILE		6
+#define TARGET_RLIMIT_AS		7
+#define TARGET_RLIMIT_NPROC		8
+#define TARGET_RLIMIT_MEMLOCK		9
+#elif defined(TARGET_SPARC)
 #define TARGET_RLIMIT_RSS		5
-#if defined(TARGET_SPARC)
 #define TARGET_RLIMIT_NOFILE		6
 #define TARGET_RLIMIT_NPROC		7
+#define TARGET_RLIMIT_MEMLOCK		8
+#define TARGET_RLIMIT_AS		9
 #else
+#define TARGET_RLIMIT_RSS		5
 #define TARGET_RLIMIT_NPROC		6
 #define TARGET_RLIMIT_NOFILE		7
-#endif
 #define TARGET_RLIMIT_MEMLOCK		8
 #define TARGET_RLIMIT_AS		9
+#endif
 #define TARGET_RLIMIT_LOCKS		10
 #define TARGET_RLIMIT_SIGPENDING	11
 #define TARGET_RLIMIT_MSGQUEUE		12
 #define TARGET_RLIMIT_NICE		13
 #define TARGET_RLIMIT_RTPRIO		14
-#endif
 
 struct target_pollfd {
     int fd;           /* file descriptor */