diff --git a/headers/private/kernel/util/syscall_args.h b/headers/private/kernel/util/syscall_args.h new file mode 100644 index 0000000000..f988b8b172 --- /dev/null +++ b/headers/private/kernel/util/syscall_args.h @@ -0,0 +1,30 @@ +// syscall_args.h + +#ifndef _SYSCALL_ARGS_H +#define _SYSCALL_ARGS_H + +#include + +// copy_ref_var_from_user +template +inline +status_t +copy_ref_var_from_user(T *user, T &kernel) +{ + if (CHECK_USER_ADDRESS(user)) + return B_BAD_ADDRESS; + return user_memcpy(&kernel, user, sizeof(T)); +} + +// copy_ref_var_to_user +template +inline +status_t +copy_ref_var_to_user(T &kernel, T *user) +{ + if (CHECK_USER_ADDRESS(user)) + return B_BAD_ADDRESS; + return user_memcpy(user, &kernel, sizeof(T)); +} + +#endif // _SYSCALL_ARGS_H