linux-user: Merge pread/pwrite into pread64/pwrite64
The Linux syscalls underlying pread() and pwrite() take a 64 bit offset on all architectures, even if some of them name the syscall "pread/pwrite" rather than "pread64/pwrite64" for historical reasons. So move the four QEMU target architectures (arm, i386, sparc, unicore32) which were defining TARGET_NR_pread/pwrite to define TARGET_NR_pread64/pwrite64 instead, and drop the TARGET_NR_pread/pwrite implementation code completely. (Based on examination of the kernel sources for the four architectures this patch affects.) Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
		
							parent
							
								
									f877d09e63
								
							
						
					
					
						commit
						24c35a504e
					
				@ -182,8 +182,8 @@
 | 
				
			|||||||
#define TARGET_NR_rt_sigtimedwait		(177)
 | 
					#define TARGET_NR_rt_sigtimedwait		(177)
 | 
				
			||||||
#define TARGET_NR_rt_sigqueueinfo		(178)
 | 
					#define TARGET_NR_rt_sigqueueinfo		(178)
 | 
				
			||||||
#define TARGET_NR_rt_sigsuspend		(179)
 | 
					#define TARGET_NR_rt_sigsuspend		(179)
 | 
				
			||||||
#define TARGET_NR_pread			(180)
 | 
					#define TARGET_NR_pread64                       (180)
 | 
				
			||||||
#define TARGET_NR_pwrite			(181)
 | 
					#define TARGET_NR_pwrite64                      (181)
 | 
				
			||||||
#define TARGET_NR_chown			(182)
 | 
					#define TARGET_NR_chown			(182)
 | 
				
			||||||
#define TARGET_NR_getcwd			(183)
 | 
					#define TARGET_NR_getcwd			(183)
 | 
				
			||||||
#define TARGET_NR_capget			(184)
 | 
					#define TARGET_NR_capget			(184)
 | 
				
			||||||
 | 
				
			|||||||
@ -182,8 +182,8 @@
 | 
				
			|||||||
#define TARGET_NR_rt_sigtimedwait	177
 | 
					#define TARGET_NR_rt_sigtimedwait	177
 | 
				
			||||||
#define TARGET_NR_rt_sigqueueinfo	178
 | 
					#define TARGET_NR_rt_sigqueueinfo	178
 | 
				
			||||||
#define TARGET_NR_rt_sigsuspend	179
 | 
					#define TARGET_NR_rt_sigsuspend	179
 | 
				
			||||||
#define TARGET_NR_pread		180
 | 
					#define TARGET_NR_pread64               180
 | 
				
			||||||
#define TARGET_NR_pwrite		181
 | 
					#define TARGET_NR_pwrite64              181
 | 
				
			||||||
#define TARGET_NR_chown		182
 | 
					#define TARGET_NR_chown		182
 | 
				
			||||||
#define TARGET_NR_getcwd		183
 | 
					#define TARGET_NR_getcwd		183
 | 
				
			||||||
#define TARGET_NR_capget		184
 | 
					#define TARGET_NR_capget		184
 | 
				
			||||||
 | 
				
			|||||||
@ -62,8 +62,8 @@
 | 
				
			|||||||
#define TARGET_NR_getpagesize         64 /* Common                                      */
 | 
					#define TARGET_NR_getpagesize         64 /* Common                                      */
 | 
				
			||||||
#define TARGET_NR_msync               65 /* Common in newer 1.3.x revs...               */
 | 
					#define TARGET_NR_msync               65 /* Common in newer 1.3.x revs...               */
 | 
				
			||||||
#define TARGET_NR_vfork               66 /* Common                                      */
 | 
					#define TARGET_NR_vfork               66 /* Common                                      */
 | 
				
			||||||
#define TARGET_NR_pread               67 /* Linux Specific                              */
 | 
					#define TARGET_NR_pread64             67 /* Linux Specific */
 | 
				
			||||||
#define TARGET_NR_pwrite              68 /* Linux Specific                              */
 | 
					#define TARGET_NR_pwrite64            68 /* Linux Specific */
 | 
				
			||||||
#define TARGET_NR_geteuid32           69 /* Linux sparc32, sbrk under SunOS             */
 | 
					#define TARGET_NR_geteuid32           69 /* Linux sparc32, sbrk under SunOS             */
 | 
				
			||||||
#define TARGET_NR_getegid32           70 /* Linux sparc32, sstk under SunOS             */
 | 
					#define TARGET_NR_getegid32           70 /* Linux sparc32, sstk under SunOS             */
 | 
				
			||||||
#define TARGET_NR_mmap                71 /* Common                                      */
 | 
					#define TARGET_NR_mmap                71 /* Common                                      */
 | 
				
			||||||
 | 
				
			|||||||
@ -972,9 +972,6 @@
 | 
				
			|||||||
#ifdef TARGET_NR_prctl
 | 
					#ifdef TARGET_NR_prctl
 | 
				
			||||||
{ TARGET_NR_prctl, "prctl" , NULL, NULL, NULL },
 | 
					{ TARGET_NR_prctl, "prctl" , NULL, NULL, NULL },
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef TARGET_NR_pread
 | 
					 | 
				
			||||||
{ TARGET_NR_pread, "pread" , NULL, NULL, NULL },
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#ifdef TARGET_NR_pread64
 | 
					#ifdef TARGET_NR_pread64
 | 
				
			||||||
{ TARGET_NR_pread64, "pread64" , NULL, NULL, NULL },
 | 
					{ TARGET_NR_pread64, "pread64" , NULL, NULL, NULL },
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -993,9 +990,6 @@
 | 
				
			|||||||
#ifdef TARGET_NR_putpmsg
 | 
					#ifdef TARGET_NR_putpmsg
 | 
				
			||||||
{ TARGET_NR_putpmsg, "putpmsg" , NULL, NULL, NULL },
 | 
					{ TARGET_NR_putpmsg, "putpmsg" , NULL, NULL, NULL },
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef TARGET_NR_pwrite
 | 
					 | 
				
			||||||
{ TARGET_NR_pwrite, "pwrite" , NULL, NULL, NULL },
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#ifdef TARGET_NR_pwrite64
 | 
					#ifdef TARGET_NR_pwrite64
 | 
				
			||||||
{ TARGET_NR_pwrite64, "pwrite64" , NULL, NULL, NULL },
 | 
					{ TARGET_NR_pwrite64, "pwrite64" , NULL, NULL, NULL },
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
@ -7449,24 +7449,6 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
 | 
				
			|||||||
        goto unimplemented;
 | 
					        goto unimplemented;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#ifdef TARGET_NR_pread
 | 
					 | 
				
			||||||
    case TARGET_NR_pread:
 | 
					 | 
				
			||||||
        if (regpairs_aligned(cpu_env))
 | 
					 | 
				
			||||||
            arg4 = arg5;
 | 
					 | 
				
			||||||
        if (!(p = lock_user(VERIFY_WRITE, arg2, arg3, 0)))
 | 
					 | 
				
			||||||
            goto efault;
 | 
					 | 
				
			||||||
        ret = get_errno(pread(arg1, p, arg3, arg4));
 | 
					 | 
				
			||||||
        unlock_user(p, arg2, ret);
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
    case TARGET_NR_pwrite:
 | 
					 | 
				
			||||||
        if (regpairs_aligned(cpu_env))
 | 
					 | 
				
			||||||
            arg4 = arg5;
 | 
					 | 
				
			||||||
        if (!(p = lock_user(VERIFY_READ, arg2, arg3, 1)))
 | 
					 | 
				
			||||||
            goto efault;
 | 
					 | 
				
			||||||
        ret = get_errno(pwrite(arg1, p, arg3, arg4));
 | 
					 | 
				
			||||||
        unlock_user(p, arg2, 0);
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#ifdef TARGET_NR_pread64
 | 
					#ifdef TARGET_NR_pread64
 | 
				
			||||||
    case TARGET_NR_pread64:
 | 
					    case TARGET_NR_pread64:
 | 
				
			||||||
        if (regpairs_aligned(cpu_env)) {
 | 
					        if (regpairs_aligned(cpu_env)) {
 | 
				
			||||||
 | 
				
			|||||||
@ -187,8 +187,8 @@
 | 
				
			|||||||
#define TARGET_NR_rt_sigtimedwait               177
 | 
					#define TARGET_NR_rt_sigtimedwait               177
 | 
				
			||||||
#define TARGET_NR_rt_sigqueueinfo               178
 | 
					#define TARGET_NR_rt_sigqueueinfo               178
 | 
				
			||||||
#define TARGET_NR_rt_sigsuspend                 179
 | 
					#define TARGET_NR_rt_sigsuspend                 179
 | 
				
			||||||
#define TARGET_NR_pread                         180
 | 
					#define TARGET_NR_pread64                       180
 | 
				
			||||||
#define TARGET_NR_pwrite                        181
 | 
					#define TARGET_NR_pwrite64                      181
 | 
				
			||||||
#define TARGET_NR_chown                         182
 | 
					#define TARGET_NR_chown                         182
 | 
				
			||||||
#define TARGET_NR_getcwd                        183
 | 
					#define TARGET_NR_getcwd                        183
 | 
				
			||||||
#define TARGET_NR_capget                        184
 | 
					#define TARGET_NR_capget                        184
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user