| // Copyright 2016 The Fuchsia Authors |
| // |
| // Use of this source code is governed by a MIT-style |
| // license that can be found in the LICENSE file or at |
| // https://opensource.org/licenses/MIT |
| |
| #include "priv.h" |
| |
| // zx_status_t zx_syscall_test_0 |
| zx_status_t sys_syscall_test_0(void) { return 0; } |
| // zx_status_t zx_syscall_test_1 |
| zx_status_t sys_syscall_test_1(int a) { return a; } |
| // zx_status_t zx_syscall_test_2 |
| zx_status_t sys_syscall_test_2(int a, int b) { return a + b; } |
| // zx_status_t zx_syscall_test_3 |
| zx_status_t sys_syscall_test_3(int a, int b, int c) { return a + b + c; } |
| // zx_status_t zx_syscall_test_4 |
| zx_status_t sys_syscall_test_4(int a, int b, int c, int d) { return a + b + c + d; } |
| // zx_status_t zx_syscall_test_5 |
| zx_status_t sys_syscall_test_5(int a, int b, int c, int d, int e) { return a + b + c + d + e; } |
| // zx_status_t zx_syscall_test_6 |
| zx_status_t sys_syscall_test_6(int a, int b, int c, int d, int e, int f) { |
| return a + b + c + d + e + f; |
| } |
| // zx_status_t zx_syscall_test_7 |
| zx_status_t sys_syscall_test_7(int a, int b, int c, int d, int e, int f, int g) { |
| return a + b + c + d + e + f + g; |
| } |
| // zx_status_t zx_syscall_test_8 |
| zx_status_t sys_syscall_test_8(int a, int b, int c, int d, int e, int f, int g, int h) { |
| return a + b + c + d + e + f + g + h; |
| } |
| // zx_status_t zx_syscall_test_wrapper |
| zx_status_t sys_syscall_test_wrapper(int a, int b, int c) { |
| if (a < 0 || b < 0 || c < 0) { |
| return ZX_ERR_INVALID_ARGS; |
| } |
| int ret = a + b + c; |
| return (ret > 50 ? ZX_ERR_OUT_OF_RANGE : ret); |
| } |
| |
| // zx_status_t zx_syscall_test_handle_create |
| // |
| // Unconditionally create a valid handle. If we return a non-OK status, the |
| // syscall wrappers should not copy the handle back to userspace. |
| zx_status_t sys_syscall_test_handle_create(zx_status_t return_value, user_out_handle* handle_out) { |
| if (sys_event_create(0, handle_out) != ZX_OK) { |
| return ZX_ERR_INTERNAL; |
| } |
| return return_value; |
| } |