1ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
2ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*--------------------------------------------------------------------*/
3ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*--- Handlers for syscalls on minor variants of Linux kernels.    ---*/
4ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*---                                     syswrap-linux-variants.c ---*/
5ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*--------------------------------------------------------------------*/
6ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
7ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*
8ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   This file is part of Valgrind, a dynamic binary instrumentation
9ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   framework.
10ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
110f157ddb404bcde7815a1c5bf2d7e41c114f3d73sewardj   Copyright (C) 2000-2013 Julian Seward
12ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj      jseward@acm.org
13ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
14ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   This program is free software; you can redistribute it and/or
15ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   modify it under the terms of the GNU General Public License as
16ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   published by the Free Software Foundation; either version 2 of the
17ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   License, or (at your option) any later version.
18ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
19ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   This program is distributed in the hope that it will be useful, but
20ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   WITHOUT ANY WARRANTY; without even the implied warranty of
21ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
22ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   General Public License for more details.
23ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
24ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   You should have received a copy of the GNU General Public License
25ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   along with this program; if not, write to the Free Software
26ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
27ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   02111-1307, USA.
28ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
29ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   The GNU General Public License is contained in the file COPYING.
30ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj*/
31ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
328b68b64759254d514d98328c496cbd88cde4c9a5njn#if defined(VGO_linux)
338b68b64759254d514d98328c496cbd88cde4c9a5njn
348b68b64759254d514d98328c496cbd88cde4c9a5njn/* The files syswrap-generic.c, syswrap-linux.c, syswrap-*-linux.c,
358b68b64759254d514d98328c496cbd88cde4c9a5njn   and associated vki*.h header files, constitute Valgrind's model of how a
368b68b64759254d514d98328c496cbd88cde4c9a5njn   vanilla Linux kernel behaves with respect to syscalls.
37ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
38ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   On a few occasions, it is useful to run with a kernel that has some
39ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   (minor) extensions to the vanilla model, either due to running on a
40ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   hacked kernel, or using a vanilla kernel which has incorporated a
41ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   custom kernel module.  Rather than clutter the standard model, all
42ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   such variant handlers are placed in here.
43ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
44ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   Unlike the C files for the standard model, this file should also
45ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   contain all constants/types needed for said wrappers.  The vki*.h
46ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   headers should not be polluted with non-vanilla info. */
47ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
48ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
49ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_basics.h"
504cfea4f9480393ed6799db463b2e0fb8865a1a2fsewardj#include "pub_core_vki.h"
51ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_threadstate.h"
52ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_aspacemgr.h"
53ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_debuginfo.h"    // VG_(di_notify_*)
54ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_transtab.h"     // VG_(discard_translations)
55ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_debuglog.h"
56ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_libcbase.h"
57ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_libcassert.h"
58ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_libcfile.h"
59ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_libcprint.h"
60ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_libcproc.h"
61ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_mallocfree.h"
62ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_tooliface.h"
63ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_options.h"
64ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_scheduler.h"
65ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_signals.h"
66ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "pub_core_syscall.h"
67ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
68ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "priv_types_n_macros.h"
69ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj#include "priv_syswrap-linux-variants.h"
70ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
71ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
72ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/* ---------------------------------------------------------------
73ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   BProc wrappers
74ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   ------------------------------------------------------------ */
75ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
76ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/* Return 0 means hand to kernel, non-0 means fail w/ that value. */
77ce5a566e128da79452a69db9cfe2ecb81395fdccsewardjInt ML_(linux_variant_PRE_sys_bproc)( UWord arg1, UWord arg2,
78ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj                                      UWord arg3, UWord arg4,
79ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj                                      UWord arg5, UWord arg6 )
80ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj{
81ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj   return 0;
82ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj}
83ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
84ce5a566e128da79452a69db9cfe2ecb81395fdccsewardjvoid ML_(linux_variant_POST_sys_bproc)( UWord arg1, UWord arg2,
85ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj                                        UWord arg3, UWord arg4,
86ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj                                        UWord arg5, UWord arg6 )
87ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj{
88ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj}
89ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
908b68b64759254d514d98328c496cbd88cde4c9a5njn#endif // defined(VGO_linux)
91ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj
92ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*--------------------------------------------------------------------*/
938b68b64759254d514d98328c496cbd88cde4c9a5njn/*--- end                                                          ---*/
94ce5a566e128da79452a69db9cfe2ecb81395fdccsewardj/*--------------------------------------------------------------------*/
95