LCOV - code coverage report
Current view: top level - arch/um/include/asm - syscall-generic.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 1 0.0 %
Date: 2023-04-06 08:38:28 Functions: 0 0 -

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0-only */
       2             : /*
       3             :  * Access to user system call parameters and results
       4             :  *
       5             :  * See asm-generic/syscall.h for function descriptions.
       6             :  *
       7             :  * Copyright (C) 2015 Mickaël Salaün <mic@digikod.net>
       8             :  */
       9             : 
      10             : #ifndef __UM_SYSCALL_GENERIC_H
      11             : #define __UM_SYSCALL_GENERIC_H
      12             : 
      13             : #include <asm/ptrace.h>
      14             : #include <linux/err.h>
      15             : #include <linux/sched.h>
      16             : #include <sysdep/ptrace.h>
      17             : 
      18             : static inline int syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
      19             : {
      20             : 
      21           0 :         return PT_REGS_SYSCALL_NR(regs);
      22             : }
      23             : 
      24             : static inline void syscall_rollback(struct task_struct *task,
      25             :                                     struct pt_regs *regs)
      26             : {
      27             :         /* do nothing */
      28             : }
      29             : 
      30             : static inline long syscall_get_error(struct task_struct *task,
      31             :                                      struct pt_regs *regs)
      32             : {
      33             :         const long error = regs_return_value(regs);
      34             : 
      35             :         return IS_ERR_VALUE(error) ? error : 0;
      36             : }
      37             : 
      38             : static inline long syscall_get_return_value(struct task_struct *task,
      39             :                                             struct pt_regs *regs)
      40             : {
      41             :         return regs_return_value(regs);
      42             : }
      43             : 
      44             : static inline void syscall_set_return_value(struct task_struct *task,
      45             :                                             struct pt_regs *regs,
      46             :                                             int error, long val)
      47             : {
      48             :         PT_REGS_SET_SYSCALL_RETURN(regs, (long) error ?: val);
      49             : }
      50             : 
      51             : static inline void syscall_get_arguments(struct task_struct *task,
      52             :                                          struct pt_regs *regs,
      53             :                                          unsigned long *args)
      54             : {
      55             :         const struct uml_pt_regs *r = &regs->regs;
      56             : 
      57             :         *args++ = UPT_SYSCALL_ARG1(r);
      58             :         *args++ = UPT_SYSCALL_ARG2(r);
      59             :         *args++ = UPT_SYSCALL_ARG3(r);
      60             :         *args++ = UPT_SYSCALL_ARG4(r);
      61             :         *args++ = UPT_SYSCALL_ARG5(r);
      62             :         *args   = UPT_SYSCALL_ARG6(r);
      63             : }
      64             : 
      65             : /* See arch/x86/um/asm/syscall.h for syscall_get_arch() definition. */
      66             : 
      67             : #endif  /* __UM_SYSCALL_GENERIC_H */

Generated by: LCOV version 1.14