trace: [*-user] Add events to trace guest syscalls in syscall emulation mode
Adds two events to trace syscalls in syscall emulation mode (*-user): * guest_user_syscall: Emitted before the syscall is emulated; contains the syscall number and arguments. * guest_user_syscall_ret: Emitted after the syscall is emulated; contains the syscall number and return value. Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu> Message-id: 146651712411.12388.10024905980452504938.stgit@fimbulvetr.bsc.es Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
							parent
							
								
									06a1e0c197
								
							
						
					
					
						commit
						9c15e70086
					
				| @ -315,12 +315,14 @@ abi_long do_freebsd_syscall(void *cpu_env, int num, abi_long arg1, | ||||
|                             abi_long arg5, abi_long arg6, abi_long arg7, | ||||
|                             abi_long arg8) | ||||
| { | ||||
|     CPUState *cpu = ENV_GET_CPU(cpu_env); | ||||
|     abi_long ret; | ||||
|     void *p; | ||||
| 
 | ||||
| #ifdef DEBUG | ||||
|     gemu_log("freebsd syscall %d\n", num); | ||||
| #endif | ||||
|     trace_guest_user_syscall(cpu, num, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); | ||||
|     if(do_strace) | ||||
|         print_freebsd_syscall(num, arg1, arg2, arg3, arg4, arg5, arg6); | ||||
| 
 | ||||
| @ -400,6 +402,7 @@ abi_long do_freebsd_syscall(void *cpu_env, int num, abi_long arg1, | ||||
| #endif | ||||
|     if (do_strace) | ||||
|         print_freebsd_syscall_ret(num, ret); | ||||
|     trace_guest_user_syscall_ret(cpu, num, ret); | ||||
|     return ret; | ||||
|  efault: | ||||
|     ret = -TARGET_EFAULT; | ||||
| @ -410,12 +413,14 @@ abi_long do_netbsd_syscall(void *cpu_env, int num, abi_long arg1, | ||||
|                            abi_long arg2, abi_long arg3, abi_long arg4, | ||||
|                            abi_long arg5, abi_long arg6) | ||||
| { | ||||
|     CPUState *cpu = ENV_GET_CPU(cpu_env); | ||||
|     abi_long ret; | ||||
|     void *p; | ||||
| 
 | ||||
| #ifdef DEBUG | ||||
|     gemu_log("netbsd syscall %d\n", num); | ||||
| #endif | ||||
|     trace_guest_user_syscall(cpu, num, arg1, arg2, arg3, arg4, arg5, arg6, 0, 0); | ||||
|     if(do_strace) | ||||
|         print_netbsd_syscall(num, arg1, arg2, arg3, arg4, arg5, arg6); | ||||
| 
 | ||||
| @ -472,6 +477,7 @@ abi_long do_netbsd_syscall(void *cpu_env, int num, abi_long arg1, | ||||
| #endif | ||||
|     if (do_strace) | ||||
|         print_netbsd_syscall_ret(num, ret); | ||||
|     trace_guest_user_syscall_ret(cpu, num, ret); | ||||
|     return ret; | ||||
|  efault: | ||||
|     ret = -TARGET_EFAULT; | ||||
| @ -482,12 +488,14 @@ abi_long do_openbsd_syscall(void *cpu_env, int num, abi_long arg1, | ||||
|                             abi_long arg2, abi_long arg3, abi_long arg4, | ||||
|                             abi_long arg5, abi_long arg6) | ||||
| { | ||||
|     CPUState *cpu = ENV_GET_CPU(cpu_env); | ||||
|     abi_long ret; | ||||
|     void *p; | ||||
| 
 | ||||
| #ifdef DEBUG | ||||
|     gemu_log("openbsd syscall %d\n", num); | ||||
| #endif | ||||
|     trace_guest_user_syscall(cpu, num, arg1, arg2, arg3, arg4, arg5, arg6, 0, 0); | ||||
|     if(do_strace) | ||||
|         print_openbsd_syscall(num, arg1, arg2, arg3, arg4, arg5, arg6); | ||||
| 
 | ||||
| @ -544,6 +552,7 @@ abi_long do_openbsd_syscall(void *cpu_env, int num, abi_long arg1, | ||||
| #endif | ||||
|     if (do_strace) | ||||
|         print_openbsd_syscall_ret(num, ret); | ||||
|     trace_guest_user_syscall_ret(cpu, num, ret); | ||||
|     return ret; | ||||
|  efault: | ||||
|     ret = -TARGET_EFAULT; | ||||
|  | ||||
| @ -6690,6 +6690,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, | ||||
| #ifdef DEBUG | ||||
|     gemu_log("syscall %d", num); | ||||
| #endif | ||||
|     trace_guest_user_syscall(cpu, num, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); | ||||
|     if(do_strace) | ||||
|         print_syscall(num, arg1, arg2, arg3, arg4, arg5, arg6); | ||||
| 
 | ||||
| @ -11182,6 +11183,7 @@ fail: | ||||
| #endif | ||||
|     if(do_strace) | ||||
|         print_syscall_ret(num, ret); | ||||
|     trace_guest_user_syscall_ret(cpu, num, ret); | ||||
|     return ret; | ||||
| efault: | ||||
|     ret = -TARGET_EFAULT; | ||||
|  | ||||
							
								
								
									
										16
									
								
								trace-events
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								trace-events
									
									
									
									
									
								
							| @ -156,3 +156,19 @@ memory_region_tb_write(int cpu_index, uint64_t addr, uint64_t value, unsigned si | ||||
| # | ||||
| # Targets: TCG(all) | ||||
| disable vcpu tcg guest_mem_before(TCGv vaddr, uint8_t info) "info=%d", "vaddr=0x%016"PRIx64" info=%d" | ||||
| 
 | ||||
| # @num: System call number. | ||||
| # @arg*: System call argument value. | ||||
| # | ||||
| # Start executing a guest system call in syscall emulation mode. | ||||
| # | ||||
| # Targets: TCG(all) | ||||
| disable vcpu guest_user_syscall(uint64_t num, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5, uint64_t arg6, uint64_t arg7, uint64_t arg8) "num=0x%016"PRIx64" arg1=0x%016"PRIx64" arg2=0x%016"PRIx64" arg3=0x%016"PRIx64" arg4=0x%016"PRIx64" arg5=0x%016"PRIx64" arg6=0x%016"PRIx64" arg7=0x%016"PRIx64" arg8=0x%016"PRIx64 | ||||
| 
 | ||||
| # @num: System call number. | ||||
| # @ret: System call result value. | ||||
| # | ||||
| # Finish executing a guest system call in syscall emulation mode. | ||||
| # | ||||
| # Targets: TCG(all) | ||||
| disable vcpu guest_user_syscall_ret(uint64_t num, uint64_t ret) "num=0x%016"PRIx64" ret=0x%016"PRIx64 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Lluís Vilanova
						Lluís Vilanova