2 * This file is part of the Palacios Virtual Machine Monitor developed
3 * by the V3VEE Project with funding from the United States National
4 * Science Foundation and the Department of Energy.
6 * The V3VEE Project is a joint project between Northwestern University
7 * and the University of New Mexico. You can find out more at
10 * Copyright (c) 2011, Kyle C. Hale <kh@u.northwestern.edu>
11 * Copyright (c) 2011, The V3VEE Project <http://www.v3vee.org>
12 * All rights reserved.
14 * Author: Kyle C. Hale <kh@u.northwestern.edu>
16 * This is free software. You are permitted to use,
17 * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
20 #ifndef __VMM_SYSCALL_HIJACK_H__
21 #define __VMM_SYSCALL_HIJACK_H__
27 struct v3_syscall_hook_map {
28 /* 512 is an arbitrary number, I'm not sure that
29 there is a hard limit on the number of syscalls
31 struct v3_syscall_hook * syscall_hooks[512];
34 struct v3_syscall_hook {
35 int (*handler)(struct guest_info * core, uint_t syscall_nr, void * priv_data);
40 struct v3_execve_varchunk {
50 int v3_syscall_handler (struct guest_info * core, uint8_t vector, void * priv_data);
53 int v3_hook_syscall (struct guest_info * core,
55 int (*handler)(struct guest_info * core, uint_t syscall_nr, void * priv_data),
58 int v3_hook_passthrough_syscall (struct guest_info * core, uint_t syscall_nr);
60 int v3_sysopen_handler (struct guest_info * core, uint_t syscall_nr, void * priv_data);
61 int v3_sysmount_handler (struct guest_info * core, uint_t syscall_nr, void * priv_data);
62 int v3_sysexecve_handler (struct guest_info * core, uint_t syscall_nr, void * priv_data);