bsd-user: Implement strace support for print_ioctl syscall
Signed-off-by: Sean Bruno <sbruno@freebsd.org> Message-id: 1402246651-71099-5-git-send-email-sbruno@freebsd.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
		
							parent
							
								
									80b346040d
								
							
						
					
					
						commit
						b85159a3a3
					
				| 
						 | 
				
			
			@ -80,7 +80,7 @@
 | 
			
		|||
{ TARGET_FREEBSD_NR_getsockopt, "getsockopt", NULL, NULL, NULL },
 | 
			
		||||
{ TARGET_FREEBSD_NR_gettimeofday, "gettimeofday", NULL, NULL, NULL },
 | 
			
		||||
{ TARGET_FREEBSD_NR_getuid, "getuid", "%s()", NULL, NULL },
 | 
			
		||||
{ TARGET_FREEBSD_NR_ioctl, "ioctl", NULL, NULL, NULL },
 | 
			
		||||
{ TARGET_FREEBSD_NR_ioctl, "ioctl", NULL, print_ioctl, NULL },
 | 
			
		||||
{ TARGET_FREEBSD_NR_issetugid, "issetugid", "%s()", NULL, NULL },
 | 
			
		||||
{ TARGET_FREEBSD_NR_kevent, "kevent", NULL, NULL, NULL },
 | 
			
		||||
{ TARGET_FREEBSD_NR_kill, "kill", NULL, NULL, NULL },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -89,6 +89,25 @@ static void print_execve(const struct syscallname *name, abi_long arg1,
 | 
			
		|||
    gemu_log("NULL})");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void print_ioctl(const struct syscallname *name,
 | 
			
		||||
        abi_long arg1, abi_long arg2, abi_long arg3, abi_long arg4,
 | 
			
		||||
        abi_long arg5, abi_long arg6)
 | 
			
		||||
{
 | 
			
		||||
    /* Decode the ioctl request */
 | 
			
		||||
    gemu_log("%s(%d, 0x%0lx { IO%s%s GRP:0x%x('%c') CMD:%d LEN:%d }, 0x"
 | 
			
		||||
            TARGET_ABI_FMT_lx ", ...)",
 | 
			
		||||
            name->name,
 | 
			
		||||
            (int)arg1,
 | 
			
		||||
            (unsigned long)arg2,
 | 
			
		||||
            arg2 & IOC_OUT ? "R" : "",
 | 
			
		||||
            arg2 & IOC_IN ? "W" : "",
 | 
			
		||||
            (unsigned)IOCGROUP(arg2),
 | 
			
		||||
            isprint(IOCGROUP(arg2)) ? (char)IOCGROUP(arg2) : '?',
 | 
			
		||||
            (int)arg2 & 0xFF,
 | 
			
		||||
            (int)IOCPARM_LEN(arg2),
 | 
			
		||||
            arg3);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Variants for the return value output function
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue