diff mbox

[11/16] linux-user: support ioprio_{get, set} syscalls

Message ID 1402849113-11402-12-git-send-email-paul@archlinuxmips.org
State New
Headers show

Commit Message

Paul Burton June 15, 2014, 4:18 p.m. UTC
Add support for the ioprio_get & ioprio_set syscalls, allowing their
use by target programs.

Signed-off-by: Paul Burton <paul@archlinuxmips.org>
---
 linux-user/syscall.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

Comments

Riku Voipio June 20, 2014, 12:54 p.m. UTC | #1
On Sun, Jun 15, 2014 at 05:18:28PM +0100, Paul Burton wrote:
> Add support for the ioprio_get & ioprio_set syscalls, allowing their
> use by target programs.
> 
> Signed-off-by: Paul Burton <paul@archlinuxmips.org>
> ---
>  linux-user/syscall.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 0830205..c7f176a 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -252,6 +252,12 @@ _syscall2(int, capget, struct __user_cap_header_struct *, header,
>            struct __user_cap_data_struct *, data);
>  _syscall2(int, capset, struct __user_cap_header_struct *, header,
>            struct __user_cap_data_struct *, data);
> +#ifdef __NR_ioprio_get
> +_syscall2(int, ioprio_get, int, which, int, who)
> +#endif
> +#ifdef __NR_ioprio_set
> +_syscall3(int, ioprio_set, int, which, int, who, int, ioprio)
> +#endif

Since this is only used if both host and guest, thes needs to be
protected by both TARGET_NR_ioprio_get and __NR_ioprio_get. Else we get
compile error on some targets:

qemu/linux-user/syscall.c:256:16: error: ‘ioprio_get’ defined but not used [-Werror=unused-function]
 _syscall2(int, ioprio_get, int, which, int, who)
                ^
qemu/linux-user/syscall.c:147:13: note: in definition of macro ‘_syscall2’
 static type name (type1 arg1,type2 arg2)  \
             ^

>  static bitmask_transtbl fcntl_flags_tbl[] = {
>    { TARGET_O_ACCMODE,   TARGET_O_WRONLY,    O_ACCMODE,   O_WRONLY,    },
> @@ -9460,6 +9466,18 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
>          break;
>  #endif
>  
> +#if defined(TARGET_NR_ioprio_get) && defined(__NR_ioprio_get)
> +    case TARGET_NR_ioprio_get:
> +        ret = get_errno(ioprio_get(arg1, arg2));
> +        break;
> +#endif
> +
> +#if defined(TARGET_NR_ioprio_set) && defined(__NR_ioprio_set)
> +    case TARGET_NR_ioprio_set:
> +        ret = get_errno(ioprio_set(arg1, arg2, arg3));
> +        break;
> +#endif
> +
>      default:
>      unimplemented:
>          gemu_log("qemu: Unsupported syscall: %d\n", num);
> -- 
> 2.0.0
>
diff mbox

Patch

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 0830205..c7f176a 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -252,6 +252,12 @@  _syscall2(int, capget, struct __user_cap_header_struct *, header,
           struct __user_cap_data_struct *, data);
 _syscall2(int, capset, struct __user_cap_header_struct *, header,
           struct __user_cap_data_struct *, data);
+#ifdef __NR_ioprio_get
+_syscall2(int, ioprio_get, int, which, int, who)
+#endif
+#ifdef __NR_ioprio_set
+_syscall3(int, ioprio_set, int, which, int, who, int, ioprio)
+#endif
 
 static bitmask_transtbl fcntl_flags_tbl[] = {
   { TARGET_O_ACCMODE,   TARGET_O_WRONLY,    O_ACCMODE,   O_WRONLY,    },
@@ -9460,6 +9466,18 @@  abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
         break;
 #endif
 
+#if defined(TARGET_NR_ioprio_get) && defined(__NR_ioprio_get)
+    case TARGET_NR_ioprio_get:
+        ret = get_errno(ioprio_get(arg1, arg2));
+        break;
+#endif
+
+#if defined(TARGET_NR_ioprio_set) && defined(__NR_ioprio_set)
+    case TARGET_NR_ioprio_set:
+        ret = get_errno(ioprio_set(arg1, arg2, arg3));
+        break;
+#endif
+
     default:
     unimplemented:
         gemu_log("qemu: Unsupported syscall: %d\n", num);