| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /* | 
					
						
							|  |  |  |  * This file is subject to the terms and conditions of the GNU General Public | 
					
						
							|  |  |  |  * License.  See the file "COPYING" in the main directory of this archive | 
					
						
							|  |  |  |  * for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 1995, 96, 97, 98, 99, 2000, 01 by Ralf Baechle | 
					
						
							|  |  |  |  * Copyright (C) 1999, 2000 Silicon Graphics, Inc. | 
					
						
							|  |  |  |  * Copyright (C) 2001 MIPS Technologies, Inc. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #include <linux/errno.h> | 
					
						
							|  |  |  | #include <asm/asm.h> | 
					
						
							|  |  |  | #include <asm/asmmacro.h> | 
					
						
							| 
									
										
										
										
											2006-07-07 14:07:18 +01:00
										 |  |  | #include <asm/irqflags.h> | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #include <asm/mipsregs.h> | 
					
						
							|  |  |  | #include <asm/regdef.h> | 
					
						
							|  |  |  | #include <asm/stackframe.h> | 
					
						
							|  |  |  | #include <asm/thread_info.h> | 
					
						
							|  |  |  | #include <asm/unistd.h> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* This duplicates the definition from <linux/sched.h> */ | 
					
						
							|  |  |  | #define PT_TRACESYS	0x00000002	/* tracing system calls */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* This duplicates the definition from <asm/signal.h> */ | 
					
						
							|  |  |  | #define SIGILL		4		/* Illegal instruction (ANSI).  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef CONFIG_MIPS32_O32 | 
					
						
							|  |  |  | /* No O32, so define handle_sys here */ | 
					
						
							|  |  |  | #define handle_sysn32 handle_sys | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	.align  5
 | 
					
						
							|  |  |  | NESTED(handle_sysn32, PT_SIZE, sp) | 
					
						
							|  |  |  | #ifndef CONFIG_MIPS32_O32 | 
					
						
							|  |  |  | 	.set	noat
 | 
					
						
							|  |  |  | 	SAVE_SOME | 
					
						
							| 
									
										
										
										
											2006-09-26 23:43:40 +09:00
										 |  |  | 	TRACE_IRQS_ON_RELOAD | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	STI | 
					
						
							|  |  |  | 	.set	at
 | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	dsubu	t0, v0, __NR_N32_Linux	# check syscall number | 
					
						
							|  |  |  | 	sltiu	t0, t0,	__NR_N32_Linux_syscalls + 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef CONFIG_MIPS32_O32 | 
					
						
							|  |  |  | 	ld	t1, PT_EPC(sp)		# skip syscall on return | 
					
						
							|  |  |  | 	daddiu	t1, 4			# skip to next instruction | 
					
						
							|  |  |  | 	sd	t1, PT_EPC(sp) | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  | 	beqz	t0, not_n32_scall | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	dsll	t0, v0, 3		# offset into table | 
					
						
							|  |  |  | 	ld	t2, (sysn32_call_table - (__NR_N32_Linux * 8))(t0) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	sd	a3, PT_R26(sp)		# save a3 for syscall restarting | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	li	t1, _TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | 
					
						
							|  |  |  | 	LONG_L	t0, TI_FLAGS($28)	# syscall tracing enabled? | 
					
						
							|  |  |  | 	and	t0, t1, t0 | 
					
						
							|  |  |  | 	bnez	t0, n32_syscall_trace_entry | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	jalr	t2			# Do The Real Thing (TM) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	li	t0, -EMAXERRNO - 1	# error? | 
					
						
							|  |  |  | 	sltu	t0, t0, v0 | 
					
						
							|  |  |  | 	sd	t0, PT_R7(sp)		# set error flag | 
					
						
							|  |  |  | 	beqz	t0, 1f | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	dnegu	v0			# error | 
					
						
							|  |  |  | 	sd	v0, PT_R0(sp)		# set flag for syscall restarting | 
					
						
							|  |  |  | 1:	sd	v0, PT_R2(sp)		# result | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	local_irq_disable		# make sure need_resched and | 
					
						
							|  |  |  | 					# signals dont change between | 
					
						
							|  |  |  | 					# sampling and return | 
					
						
							|  |  |  | 	LONG_L  a2, TI_FLAGS($28)	# current->work | 
					
						
							|  |  |  | 	li	t0, _TIF_ALLWORK_MASK | 
					
						
							|  |  |  | 	and	t0, a2, t0 | 
					
						
							|  |  |  | 	bnez	t0, n32_syscall_exit_work | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	j	restore_partial | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n32_syscall_exit_work: | 
					
						
							|  |  |  | 	j	syscall_exit_work_partial | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* ------------------------------------------------------------------------ */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n32_syscall_trace_entry: | 
					
						
							|  |  |  | 	SAVE_STATIC | 
					
						
							|  |  |  | 	move	s0, t2 | 
					
						
							|  |  |  | 	move	a0, sp | 
					
						
							|  |  |  | 	li	a1, 0 | 
					
						
							|  |  |  | 	jal	do_syscall_trace | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-11-30 16:24:57 +00:00
										 |  |  | 	move	t0, s0 | 
					
						
							|  |  |  | 	RESTORE_STATIC | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	ld	a0, PT_R4(sp)		# Restore argument registers | 
					
						
							|  |  |  | 	ld	a1, PT_R5(sp) | 
					
						
							|  |  |  | 	ld	a2, PT_R6(sp) | 
					
						
							|  |  |  | 	ld	a3, PT_R7(sp) | 
					
						
							|  |  |  | 	ld	a4, PT_R8(sp) | 
					
						
							|  |  |  | 	ld	a5, PT_R9(sp) | 
					
						
							| 
									
										
										
										
											2005-11-30 16:24:57 +00:00
										 |  |  | 	jalr	t0 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	li	t0, -EMAXERRNO - 1	# error? | 
					
						
							|  |  |  | 	sltu	t0, t0, v0 | 
					
						
							|  |  |  | 	sd	t0, PT_R7(sp)		# set error flag | 
					
						
							|  |  |  | 	beqz	t0, 1f | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	dnegu	v0			# error | 
					
						
							|  |  |  | 	sd	v0, PT_R0(sp)		# set flag for syscall restarting | 
					
						
							|  |  |  | 1:	sd	v0, PT_R2(sp)		# result | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	j	syscall_exit | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | not_n32_scall: | 
					
						
							|  |  |  | 	/* This is not an n32 compatibility syscall, pass it on to | 
					
						
							|  |  |  | 	   the n64 syscall handlers.  */ | 
					
						
							|  |  |  | 	j	handle_sys64 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	END(handle_sysn32) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | EXPORT(sysn32_call_table) | 
					
						
							|  |  |  | 	PTR	sys_read			/* 6000 */ | 
					
						
							|  |  |  | 	PTR	sys_write | 
					
						
							|  |  |  | 	PTR	sys_open | 
					
						
							|  |  |  | 	PTR	sys_close | 
					
						
							|  |  |  | 	PTR	sys_newstat | 
					
						
							|  |  |  | 	PTR	sys_newfstat			/* 6005 */ | 
					
						
							|  |  |  | 	PTR	sys_newlstat | 
					
						
							|  |  |  | 	PTR	sys_poll | 
					
						
							|  |  |  | 	PTR	sys_lseek | 
					
						
							| 
									
										
										
										
											2009-02-08 16:00:26 +00:00
										 |  |  | 	PTR	sys_mips_mmap | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_mprotect			/* 6010 */ | 
					
						
							|  |  |  | 	PTR	sys_munmap | 
					
						
							|  |  |  | 	PTR	sys_brk | 
					
						
							| 
									
										
										
										
											2009-02-08 16:00:26 +00:00
										 |  |  | 	PTR	sys_32_rt_sigaction | 
					
						
							|  |  |  | 	PTR	sys_32_rt_sigprocmask | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	compat_sys_ioctl		/* 6015 */ | 
					
						
							|  |  |  | 	PTR	sys_pread64 | 
					
						
							|  |  |  | 	PTR	sys_pwrite64 | 
					
						
							|  |  |  | 	PTR	compat_sys_readv | 
					
						
							|  |  |  | 	PTR	compat_sys_writev | 
					
						
							|  |  |  | 	PTR	sys_access			/* 6020 */ | 
					
						
							| 
									
										
										
										
											2008-07-20 13:16:46 +01:00
										 |  |  | 	PTR	sysm_pipe | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	compat_sys_select | 
					
						
							|  |  |  | 	PTR	sys_sched_yield | 
					
						
							|  |  |  | 	PTR	sys_mremap | 
					
						
							|  |  |  | 	PTR	sys_msync			/* 6025 */ | 
					
						
							|  |  |  | 	PTR	sys_mincore | 
					
						
							|  |  |  | 	PTR	sys_madvise | 
					
						
							|  |  |  | 	PTR	sys_shmget | 
					
						
							| 
									
										
										
										
											2006-11-07 18:02:44 +09:00
										 |  |  | 	PTR	sys_shmat | 
					
						
							|  |  |  | 	PTR	compat_sys_shmctl			/* 6030 */ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_dup | 
					
						
							|  |  |  | 	PTR	sys_dup2 | 
					
						
							|  |  |  | 	PTR	sys_pause | 
					
						
							|  |  |  | 	PTR	compat_sys_nanosleep | 
					
						
							|  |  |  | 	PTR	compat_sys_getitimer		/* 6035 */ | 
					
						
							|  |  |  | 	PTR	compat_sys_setitimer | 
					
						
							|  |  |  | 	PTR	sys_alarm | 
					
						
							|  |  |  | 	PTR	sys_getpid | 
					
						
							| 
									
										
										
										
											2009-02-08 16:00:26 +00:00
										 |  |  | 	PTR	sys_32_sendfile | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_socket			/* 6040 */ | 
					
						
							|  |  |  | 	PTR	sys_connect | 
					
						
							|  |  |  | 	PTR	sys_accept | 
					
						
							|  |  |  | 	PTR	sys_sendto | 
					
						
							| 
									
										
											  
											
												net/compat/wext: send different messages to compat tasks
Wireless extensions have the unfortunate problem that events
are multicast netlink messages, and are not independent of
pointer size. Thus, currently 32-bit tasks on 64-bit platforms
cannot properly receive events and fail with all kinds of
strange problems, for instance wpa_supplicant never notices
disassociations, due to the way the 64-bit event looks (to a
32-bit process), the fact that the address is all zeroes is
lost, it thinks instead it is 00:00:00:00:01:00.
The same problem existed with the ioctls, until David Miller
fixed those some time ago in an heroic effort.
A different problem caused by this is that we cannot send the
ASSOCREQIE/ASSOCRESPIE events because sending them causes a
32-bit wpa_supplicant on a 64-bit system to overwrite its
internal information, which is worse than it not getting the
information at all -- so we currently resort to sending a
custom string event that it then parses. This, however, has a
severe size limitation we are frequently hitting with modern
access points; this limitation would can be lifted after this
patch by sending the correct binary, not custom, event.
A similar problem apparently happens for some other netlink
users on x86_64 with 32-bit tasks due to the alignment for
64-bit quantities.
In order to fix these problems, I have implemented a way to
send compat messages to tasks. When sending an event, we send
the non-compat event data together with a compat event data in
skb_shinfo(main_skb)->frag_list. Then, when the event is read
from the socket, the netlink code makes sure to pass out only
the skb that is compatible with the task. This approach was
suggested by David Miller, my original approach required
always sending two skbs but that had various small problems.
To determine whether compat is needed or not, I have used the
MSG_CMSG_COMPAT flag, and adjusted the call path for recv and
recvfrom to include it, even if those calls do not have a cmsg
parameter.
I have not solved one small part of the problem, and I don't
think it is necessary to: if a 32-bit application uses read()
rather than any form of recvmsg() it will still get the wrong
(64-bit) event. However, neither do applications actually do
this, nor would it be a regression.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
											
										 
											2009-07-01 11:26:02 +00:00
										 |  |  | 	PTR	compat_sys_recvfrom | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	compat_sys_sendmsg		/* 6045 */ | 
					
						
							|  |  |  | 	PTR	compat_sys_recvmsg | 
					
						
							|  |  |  | 	PTR	sys_shutdown | 
					
						
							|  |  |  | 	PTR	sys_bind | 
					
						
							|  |  |  | 	PTR	sys_listen | 
					
						
							|  |  |  | 	PTR	sys_getsockname			/* 6050 */ | 
					
						
							|  |  |  | 	PTR	sys_getpeername | 
					
						
							|  |  |  | 	PTR	sys_socketpair | 
					
						
							|  |  |  | 	PTR	compat_sys_setsockopt | 
					
						
							|  |  |  | 	PTR	sys_getsockopt | 
					
						
							|  |  |  | 	PTR	sys_clone			/* 6055 */ | 
					
						
							|  |  |  | 	PTR	sys_fork | 
					
						
							|  |  |  | 	PTR	sys32_execve | 
					
						
							|  |  |  | 	PTR	sys_exit | 
					
						
							| 
									
										
										
										
											2005-02-16 21:18:52 +00:00
										 |  |  | 	PTR	compat_sys_wait4 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_kill			/* 6060 */ | 
					
						
							| 
									
										
										
										
											2010-03-10 15:21:19 -08:00
										 |  |  | 	PTR	sys_newuname | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_semget | 
					
						
							|  |  |  | 	PTR	sys_semop | 
					
						
							| 
									
										
										
										
											2009-02-08 16:00:26 +00:00
										 |  |  | 	PTR	sys_n32_semctl | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_shmdt			/* 6065 */ | 
					
						
							|  |  |  | 	PTR	sys_msgget | 
					
						
							| 
									
										
										
										
											2009-02-08 16:00:26 +00:00
										 |  |  | 	PTR	sys_n32_msgsnd | 
					
						
							|  |  |  | 	PTR	sys_n32_msgrcv | 
					
						
							| 
									
										
										
										
											2006-11-07 18:02:44 +09:00
										 |  |  | 	PTR	compat_sys_msgctl | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	compat_sys_fcntl		/* 6070 */ | 
					
						
							|  |  |  | 	PTR	sys_flock | 
					
						
							|  |  |  | 	PTR	sys_fsync | 
					
						
							|  |  |  | 	PTR	sys_fdatasync | 
					
						
							|  |  |  | 	PTR	sys_truncate | 
					
						
							|  |  |  | 	PTR	sys_ftruncate			/* 6075 */ | 
					
						
							| 
									
										
										
										
											2006-02-21 15:59:00 +09:00
										 |  |  | 	PTR	compat_sys_getdents | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_getcwd | 
					
						
							|  |  |  | 	PTR	sys_chdir | 
					
						
							|  |  |  | 	PTR	sys_fchdir | 
					
						
							|  |  |  | 	PTR	sys_rename			/* 6080 */ | 
					
						
							|  |  |  | 	PTR	sys_mkdir | 
					
						
							|  |  |  | 	PTR	sys_rmdir | 
					
						
							|  |  |  | 	PTR	sys_creat | 
					
						
							|  |  |  | 	PTR	sys_link | 
					
						
							|  |  |  | 	PTR	sys_unlink			/* 6085 */ | 
					
						
							|  |  |  | 	PTR	sys_symlink | 
					
						
							|  |  |  | 	PTR	sys_readlink | 
					
						
							|  |  |  | 	PTR	sys_chmod | 
					
						
							|  |  |  | 	PTR	sys_fchmod | 
					
						
							|  |  |  | 	PTR	sys_chown			/* 6090 */ | 
					
						
							|  |  |  | 	PTR	sys_fchown | 
					
						
							|  |  |  | 	PTR	sys_lchown | 
					
						
							|  |  |  | 	PTR	sys_umask | 
					
						
							| 
									
										
										
										
											2008-10-15 22:02:06 -07:00
										 |  |  | 	PTR	compat_sys_gettimeofday | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	compat_sys_getrlimit		/* 6095 */ | 
					
						
							|  |  |  | 	PTR	compat_sys_getrusage | 
					
						
							| 
									
										
										
										
											2007-02-10 01:46:00 -08:00
										 |  |  | 	PTR	compat_sys_sysinfo | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	compat_sys_times | 
					
						
							| 
									
										
										
										
											2008-08-17 16:49:25 +02:00
										 |  |  | 	PTR	compat_sys_ptrace | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_getuid			/* 6100 */ | 
					
						
							|  |  |  | 	PTR	sys_syslog | 
					
						
							|  |  |  | 	PTR	sys_getgid | 
					
						
							|  |  |  | 	PTR	sys_setuid | 
					
						
							|  |  |  | 	PTR	sys_setgid | 
					
						
							|  |  |  | 	PTR	sys_geteuid			/* 6105 */ | 
					
						
							|  |  |  | 	PTR	sys_getegid | 
					
						
							|  |  |  | 	PTR	sys_setpgid | 
					
						
							|  |  |  | 	PTR	sys_getppid | 
					
						
							|  |  |  | 	PTR	sys_getpgrp | 
					
						
							|  |  |  | 	PTR	sys_setsid			/* 6110 */ | 
					
						
							|  |  |  | 	PTR	sys_setreuid | 
					
						
							|  |  |  | 	PTR	sys_setregid | 
					
						
							|  |  |  | 	PTR	sys_getgroups | 
					
						
							|  |  |  | 	PTR	sys_setgroups | 
					
						
							|  |  |  | 	PTR	sys_setresuid			/* 6115 */ | 
					
						
							|  |  |  | 	PTR	sys_getresuid | 
					
						
							|  |  |  | 	PTR	sys_setresgid | 
					
						
							|  |  |  | 	PTR	sys_getresgid | 
					
						
							|  |  |  | 	PTR	sys_getpgid | 
					
						
							|  |  |  | 	PTR	sys_setfsuid			/* 6120 */ | 
					
						
							|  |  |  | 	PTR	sys_setfsgid | 
					
						
							|  |  |  | 	PTR	sys_getsid | 
					
						
							|  |  |  | 	PTR	sys_capget | 
					
						
							|  |  |  | 	PTR	sys_capset | 
					
						
							| 
									
										
										
										
											2009-02-08 16:00:26 +00:00
										 |  |  | 	PTR	sys_32_rt_sigpending		/* 6125 */ | 
					
						
							| 
									
										
										
										
											2006-02-18 22:47:26 +00:00
										 |  |  | 	PTR	compat_sys_rt_sigtimedwait | 
					
						
							| 
									
										
										
										
											2009-02-08 16:00:26 +00:00
										 |  |  | 	PTR	sys_32_rt_sigqueueinfo | 
					
						
							| 
									
										
										
										
											2006-02-18 22:47:26 +00:00
										 |  |  | 	PTR	sysn32_rt_sigsuspend | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys32_sigaltstack | 
					
						
							|  |  |  | 	PTR	compat_sys_utime		/* 6130 */ | 
					
						
							|  |  |  | 	PTR	sys_mknod | 
					
						
							| 
									
										
										
										
											2009-02-08 16:00:26 +00:00
										 |  |  | 	PTR	sys_32_personality | 
					
						
							| 
									
										
										
										
											2008-11-28 10:09:09 +01:00
										 |  |  | 	PTR	compat_sys_ustat | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	compat_sys_statfs | 
					
						
							|  |  |  | 	PTR	compat_sys_fstatfs		/* 6135 */ | 
					
						
							|  |  |  | 	PTR	sys_sysfs | 
					
						
							|  |  |  | 	PTR	sys_getpriority | 
					
						
							|  |  |  | 	PTR	sys_setpriority | 
					
						
							|  |  |  | 	PTR	sys_sched_setparam | 
					
						
							|  |  |  | 	PTR	sys_sched_getparam		/* 6140 */ | 
					
						
							|  |  |  | 	PTR	sys_sched_setscheduler | 
					
						
							|  |  |  | 	PTR	sys_sched_getscheduler | 
					
						
							|  |  |  | 	PTR	sys_sched_get_priority_max | 
					
						
							|  |  |  | 	PTR	sys_sched_get_priority_min | 
					
						
							| 
									
										
										
										
											2009-02-08 16:00:26 +00:00
										 |  |  | 	PTR	sys_32_sched_rr_get_interval	/* 6145 */ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_mlock | 
					
						
							|  |  |  | 	PTR	sys_munlock | 
					
						
							|  |  |  | 	PTR	sys_mlockall | 
					
						
							|  |  |  | 	PTR	sys_munlockall | 
					
						
							|  |  |  | 	PTR	sys_vhangup			/* 6150 */ | 
					
						
							|  |  |  | 	PTR	sys_pivot_root | 
					
						
							| 
									
										
										
										
											2009-04-03 00:46:47 -07:00
										 |  |  | 	PTR	compat_sys_sysctl | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_prctl | 
					
						
							| 
									
										
										
										
											2006-03-26 01:37:29 -08:00
										 |  |  | 	PTR	compat_sys_adjtimex | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	compat_sys_setrlimit		/* 6155 */ | 
					
						
							|  |  |  | 	PTR	sys_chroot | 
					
						
							|  |  |  | 	PTR	sys_sync | 
					
						
							|  |  |  | 	PTR	sys_acct | 
					
						
							| 
									
										
										
										
											2008-10-15 22:02:06 -07:00
										 |  |  | 	PTR	compat_sys_settimeofday | 
					
						
							| 
									
										
										
										
											2006-10-16 16:49:37 +01:00
										 |  |  | 	PTR	compat_sys_mount		/* 6160 */ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_umount | 
					
						
							|  |  |  | 	PTR	sys_swapon | 
					
						
							|  |  |  | 	PTR	sys_swapoff | 
					
						
							|  |  |  | 	PTR	sys_reboot | 
					
						
							|  |  |  | 	PTR	sys_sethostname			/* 6165 */ | 
					
						
							|  |  |  | 	PTR	sys_setdomainname | 
					
						
							|  |  |  | 	PTR	sys_ni_syscall			/* was create_module */ | 
					
						
							|  |  |  | 	PTR	sys_init_module | 
					
						
							|  |  |  | 	PTR	sys_delete_module | 
					
						
							|  |  |  | 	PTR	sys_ni_syscall			/* 6170, was get_kernel_syms */ | 
					
						
							|  |  |  | 	PTR	sys_ni_syscall			/* was query_module */ | 
					
						
							|  |  |  | 	PTR	sys_quotactl | 
					
						
							| 
									
										
										
										
											2007-11-15 22:20:33 +00:00
										 |  |  | 	PTR	compat_sys_nfsservctl | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_ni_syscall			/* res. for getpmsg */ | 
					
						
							|  |  |  | 	PTR	sys_ni_syscall			/* 6175  for putpmsg */ | 
					
						
							|  |  |  | 	PTR	sys_ni_syscall			/* res. for afs_syscall */ | 
					
						
							|  |  |  | 	PTR	sys_ni_syscall			/* res. for security */ | 
					
						
							|  |  |  | 	PTR	sys_gettid | 
					
						
							| 
									
										
										
										
											2007-05-18 00:46:13 +09:00
										 |  |  | 	PTR	sys_readahead | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_setxattr			/* 6180 */ | 
					
						
							|  |  |  | 	PTR	sys_lsetxattr | 
					
						
							|  |  |  | 	PTR	sys_fsetxattr | 
					
						
							|  |  |  | 	PTR	sys_getxattr | 
					
						
							|  |  |  | 	PTR	sys_lgetxattr | 
					
						
							|  |  |  | 	PTR	sys_fgetxattr			/* 6185 */ | 
					
						
							|  |  |  | 	PTR	sys_listxattr | 
					
						
							|  |  |  | 	PTR	sys_llistxattr | 
					
						
							|  |  |  | 	PTR	sys_flistxattr | 
					
						
							|  |  |  | 	PTR	sys_removexattr | 
					
						
							|  |  |  | 	PTR	sys_lremovexattr		/* 6190 */ | 
					
						
							|  |  |  | 	PTR	sys_fremovexattr | 
					
						
							|  |  |  | 	PTR	sys_tkill | 
					
						
							|  |  |  | 	PTR	sys_ni_syscall | 
					
						
							|  |  |  | 	PTR	compat_sys_futex | 
					
						
							|  |  |  | 	PTR	compat_sys_sched_setaffinity	/* 6195 */ | 
					
						
							|  |  |  | 	PTR	compat_sys_sched_getaffinity | 
					
						
							|  |  |  | 	PTR	sys_cacheflush | 
					
						
							|  |  |  | 	PTR	sys_cachectl | 
					
						
							|  |  |  | 	PTR	sys_sysmips | 
					
						
							|  |  |  | 	PTR	sys_io_setup			/* 6200 */ | 
					
						
							|  |  |  | 	PTR	sys_io_destroy | 
					
						
							|  |  |  | 	PTR	sys_io_getevents | 
					
						
							|  |  |  | 	PTR	sys_io_submit | 
					
						
							|  |  |  | 	PTR	sys_io_cancel | 
					
						
							|  |  |  | 	PTR	sys_exit_group			/* 6205 */ | 
					
						
							|  |  |  | 	PTR	sys_lookup_dcookie | 
					
						
							|  |  |  | 	PTR	sys_epoll_create | 
					
						
							|  |  |  | 	PTR	sys_epoll_ctl | 
					
						
							|  |  |  | 	PTR	sys_epoll_wait | 
					
						
							|  |  |  | 	PTR	sys_remap_file_pages		/* 6210 */ | 
					
						
							|  |  |  | 	PTR	sysn32_rt_sigreturn | 
					
						
							| 
									
										
										
										
											2005-04-13 09:11:22 +00:00
										 |  |  | 	PTR	compat_sys_fcntl64 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_set_tid_address | 
					
						
							|  |  |  | 	PTR	sys_restart_syscall | 
					
						
							| 
									
										
										
										
											2006-11-07 18:02:44 +09:00
										 |  |  | 	PTR	compat_sys_semtimedop			/* 6215 */ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_fadvise64_64 | 
					
						
							|  |  |  | 	PTR	compat_sys_statfs64 | 
					
						
							|  |  |  | 	PTR	compat_sys_fstatfs64 | 
					
						
							|  |  |  | 	PTR	sys_sendfile64 | 
					
						
							| 
									
										
										
										
											2007-02-27 01:21:17 +00:00
										 |  |  | 	PTR	compat_sys_timer_create		/* 6220 */ | 
					
						
							| 
									
										
										
										
											2005-02-16 21:25:03 +00:00
										 |  |  | 	PTR	compat_sys_timer_settime | 
					
						
							|  |  |  | 	PTR	compat_sys_timer_gettime | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_timer_getoverrun | 
					
						
							|  |  |  | 	PTR	sys_timer_delete | 
					
						
							| 
									
										
										
										
											2005-02-16 21:25:03 +00:00
										 |  |  | 	PTR	compat_sys_clock_settime		/* 6225 */ | 
					
						
							|  |  |  | 	PTR	compat_sys_clock_gettime | 
					
						
							|  |  |  | 	PTR	compat_sys_clock_getres | 
					
						
							|  |  |  | 	PTR	compat_sys_clock_nanosleep | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_tgkill | 
					
						
							|  |  |  | 	PTR	compat_sys_utimes		/* 6230 */ | 
					
						
							|  |  |  | 	PTR	sys_ni_syscall			/* sys_mbind */ | 
					
						
							|  |  |  | 	PTR	sys_ni_syscall			/* sys_get_mempolicy */ | 
					
						
							|  |  |  | 	PTR	sys_ni_syscall			/* sys_set_mempolicy */ | 
					
						
							|  |  |  | 	PTR	compat_sys_mq_open | 
					
						
							|  |  |  | 	PTR	sys_mq_unlink			/* 6235 */ | 
					
						
							|  |  |  | 	PTR	compat_sys_mq_timedsend | 
					
						
							|  |  |  | 	PTR	compat_sys_mq_timedreceive | 
					
						
							|  |  |  | 	PTR	compat_sys_mq_notify | 
					
						
							|  |  |  | 	PTR	compat_sys_mq_getsetattr | 
					
						
							|  |  |  | 	PTR	sys_ni_syscall			/* 6240, sys_vserver */ | 
					
						
							| 
									
										
										
										
											2007-02-27 00:56:37 +00:00
										 |  |  | 	PTR	compat_sys_waitid | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	PTR	sys_ni_syscall			/* available, was setaltroot */ | 
					
						
							|  |  |  | 	PTR	sys_add_key | 
					
						
							|  |  |  | 	PTR	sys_request_key | 
					
						
							|  |  |  | 	PTR	sys_keyctl			/* 6245 */ | 
					
						
							| 
									
										
										
										
											2005-04-13 17:43:59 +00:00
										 |  |  | 	PTR	sys_set_thread_area | 
					
						
							| 
									
										
										
										
											2005-08-05 10:31:47 +00:00
										 |  |  | 	PTR	sys_inotify_init | 
					
						
							|  |  |  | 	PTR	sys_inotify_add_watch | 
					
						
							|  |  |  | 	PTR	sys_inotify_rm_watch | 
					
						
							| 
									
										
										
										
											2006-02-08 13:38:50 +00:00
										 |  |  | 	PTR	sys_migrate_pages		/* 6250 */ | 
					
						
							|  |  |  | 	PTR	sys_openat | 
					
						
							|  |  |  | 	PTR	sys_mkdirat | 
					
						
							|  |  |  | 	PTR	sys_mknodat | 
					
						
							|  |  |  | 	PTR	sys_fchownat | 
					
						
							| 
									
										
										
										
											2007-09-12 18:22:04 +02:00
										 |  |  | 	PTR	compat_sys_futimesat		/* 6255 */ | 
					
						
							| 
									
										
										
										
											2006-02-08 13:38:50 +00:00
										 |  |  | 	PTR	sys_newfstatat | 
					
						
							|  |  |  | 	PTR	sys_unlinkat | 
					
						
							|  |  |  | 	PTR	sys_renameat | 
					
						
							|  |  |  | 	PTR	sys_linkat | 
					
						
							|  |  |  | 	PTR	sys_symlinkat			/* 6260 */ | 
					
						
							|  |  |  | 	PTR	sys_readlinkat | 
					
						
							|  |  |  | 	PTR	sys_fchmodat | 
					
						
							|  |  |  | 	PTR	sys_faccessat | 
					
						
							| 
									
										
										
										
											2007-01-10 12:30:50 +00:00
										 |  |  | 	PTR	compat_sys_pselect6 | 
					
						
							| 
									
										
										
										
											2006-02-08 13:38:50 +00:00
										 |  |  | 	PTR	sys_ppoll			/* 6265 */ | 
					
						
							|  |  |  | 	PTR	sys_unshare | 
					
						
							| 
									
										
										
										
											2006-03-31 09:27:20 +01:00
										 |  |  | 	PTR	sys_splice | 
					
						
							| 
									
										
										
										
											2006-04-01 07:49:21 +01:00
										 |  |  | 	PTR	sys_sync_file_range | 
					
						
							| 
									
										
										
										
											2006-04-15 11:16:19 +02:00
										 |  |  | 	PTR	sys_tee | 
					
						
							| 
									
										
										
										
											2008-12-03 17:03:27 +00:00
										 |  |  | 	PTR	compat_sys_vmsplice		/* 6270 */ | 
					
						
							| 
									
										
										
										
											2006-07-02 16:31:14 +01:00
										 |  |  | 	PTR	sys_move_pages | 
					
						
							| 
									
										
										
										
											2006-09-06 22:42:02 +09:00
										 |  |  | 	PTR	compat_sys_set_robust_list | 
					
						
							|  |  |  | 	PTR	compat_sys_get_robust_list | 
					
						
							| 
									
										
										
										
											2006-10-18 15:14:55 +02:00
										 |  |  | 	PTR	compat_sys_kexec_load | 
					
						
							| 
									
										
										
										
											2007-03-06 17:04:49 +00:00
										 |  |  | 	PTR	sys_getcpu			/* 6275 */ | 
					
						
							| 
									
										
										
										
											2007-02-13 00:05:11 +00:00
										 |  |  | 	PTR	compat_sys_epoll_pwait | 
					
						
							| 
									
										
										
										
											2007-03-06 17:04:49 +00:00
										 |  |  | 	PTR	sys_ioprio_set | 
					
						
							|  |  |  | 	PTR	sys_ioprio_get | 
					
						
							| 
									
										
										
										
											2007-05-29 23:29:40 +09:00
										 |  |  | 	PTR	compat_sys_utimensat | 
					
						
							|  |  |  | 	PTR	compat_sys_signalfd		/* 5280 */ | 
					
						
							| 
									
										
											  
											
												timerfd: new timerfd API
This is the new timerfd API as it is implemented by the following patch:
int timerfd_create(int clockid, int flags);
int timerfd_settime(int ufd, int flags,
		    const struct itimerspec *utmr,
		    struct itimerspec *otmr);
int timerfd_gettime(int ufd, struct itimerspec *otmr);
The timerfd_create() API creates an un-programmed timerfd fd.  The "clockid"
parameter can be either CLOCK_MONOTONIC or CLOCK_REALTIME.
The timerfd_settime() API give new settings by the timerfd fd, by optionally
retrieving the previous expiration time (in case the "otmr" parameter is not
NULL).
The time value specified in "utmr" is absolute, if the TFD_TIMER_ABSTIME bit
is set in the "flags" parameter.  Otherwise it's a relative time.
The timerfd_gettime() API returns the next expiration time of the timer, or
{0, 0} if the timerfd has not been set yet.
Like the previous timerfd API implementation, read(2) and poll(2) are
supported (with the same interface).  Here's a simple test program I used to
exercise the new timerfd APIs:
http://www.xmailserver.org/timerfd-test2.c
[akpm@linux-foundation.org: coding-style cleanups]
[akpm@linux-foundation.org: fix ia64 build]
[akpm@linux-foundation.org: fix m68k build]
[akpm@linux-foundation.org: fix mips build]
[akpm@linux-foundation.org: fix alpha, arm, blackfin, cris, m68k, s390, sparc and sparc64 builds]
[heiko.carstens@de.ibm.com: fix s390]
[akpm@linux-foundation.org: fix powerpc build]
[akpm@linux-foundation.org: fix sparc64 more]
Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
Cc: Michael Kerrisk <mtk-manpages@gmx.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Davide Libenzi <davidel@xmailserver.org>
Cc: Michael Kerrisk <mtk-manpages@gmx.net>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Davide Libenzi <davidel@xmailserver.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
											
										 
											2008-02-04 22:27:26 -08:00
										 |  |  | 	PTR	sys_ni_syscall | 
					
						
							| 
									
										
										
										
											2007-05-29 23:29:40 +09:00
										 |  |  | 	PTR	sys_eventfd | 
					
						
							| 
									
										
										
										
											2007-07-26 03:38:24 +01:00
										 |  |  | 	PTR	sys_fallocate | 
					
						
							| 
									
										
										
										
											2008-02-19 00:02:37 +03:00
										 |  |  | 	PTR	sys_timerfd_create | 
					
						
							| 
									
										
										
										
											2009-04-16 09:20:17 -07:00
										 |  |  | 	PTR	compat_sys_timerfd_gettime	/* 5285 */ | 
					
						
							|  |  |  | 	PTR	compat_sys_timerfd_settime | 
					
						
							| 
									
										
										
										
											2008-07-31 11:16:43 +01:00
										 |  |  | 	PTR	sys_signalfd4 | 
					
						
							|  |  |  | 	PTR	sys_eventfd2 | 
					
						
							|  |  |  | 	PTR	sys_epoll_create1 | 
					
						
							|  |  |  | 	PTR	sys_dup3			/* 5290 */ | 
					
						
							|  |  |  | 	PTR	sys_pipe2 | 
					
						
							|  |  |  | 	PTR	sys_inotify_init1 | 
					
						
							| 
									
										
										
										
											2009-04-02 16:59:24 -07:00
										 |  |  | 	PTR	sys_preadv | 
					
						
							|  |  |  | 	PTR	sys_pwritev | 
					
						
							| 
									
										
										
										
											2009-06-26 09:53:57 -07:00
										 |  |  | 	PTR	compat_sys_rt_tgsigqueueinfo	/* 5295 */ | 
					
						
							| 
									
										
											  
											
												perf: Do the big rename: Performance Counters -> Performance Events
Bye-bye Performance Counters, welcome Performance Events!
In the past few months the perfcounters subsystem has grown out its
initial role of counting hardware events, and has become (and is
becoming) a much broader generic event enumeration, reporting, logging,
monitoring, analysis facility.
Naming its core object 'perf_counter' and naming the subsystem
'perfcounters' has become more and more of a misnomer. With pending
code like hw-breakpoints support the 'counter' name is less and
less appropriate.
All in one, we've decided to rename the subsystem to 'performance
events' and to propagate this rename through all fields, variables
and API names. (in an ABI compatible fashion)
The word 'event' is also a bit shorter than 'counter' - which makes
it slightly more convenient to write/handle as well.
Thanks goes to Stephane Eranian who first observed this misnomer and
suggested a rename.
User-space tooling and ABI compatibility is not affected - this patch
should be function-invariant. (Also, defconfigs were not touched to
keep the size down.)
This patch has been generated via the following script:
  FILES=$(find * -type f | grep -vE 'oprofile|[^K]config')
  sed -i \
    -e 's/PERF_EVENT_/PERF_RECORD_/g' \
    -e 's/PERF_COUNTER/PERF_EVENT/g' \
    -e 's/perf_counter/perf_event/g' \
    -e 's/nb_counters/nb_events/g' \
    -e 's/swcounter/swevent/g' \
    -e 's/tpcounter_event/tp_event/g' \
    $FILES
  for N in $(find . -name perf_counter.[ch]); do
    M=$(echo $N | sed 's/perf_counter/perf_event/g')
    mv $N $M
  done
  FILES=$(find . -name perf_event.*)
  sed -i \
    -e 's/COUNTER_MASK/REG_MASK/g' \
    -e 's/COUNTER/EVENT/g' \
    -e 's/\<event\>/event_id/g' \
    -e 's/counter/event/g' \
    -e 's/Counter/Event/g' \
    $FILES
... to keep it as correct as possible. This script can also be
used by anyone who has pending perfcounters patches - it converts
a Linux kernel tree over to the new naming. We tried to time this
change to the point in time where the amount of pending patches
is the smallest: the end of the merge window.
Namespace clashes were fixed up in a preparatory patch - and some
stylistic fallout will be fixed up in a subsequent patch.
( NOTE: 'counters' are still the proper terminology when we deal
  with hardware registers - and these sed scripts are a bit
  over-eager in renaming them. I've undone some of that, but
  in case there's something left where 'counter' would be
  better than 'event' we can undo that on an individual basis
  instead of touching an otherwise nicely automated patch. )
Suggested-by: Stephane Eranian <eranian@google.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Paul Mackerras <paulus@samba.org>
Reviewed-by: Arjan van de Ven <arjan@linux.intel.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: David Howells <dhowells@redhat.com>
Cc: Kyle McMartin <kyle@mcmartin.ca>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: <linux-arch@vger.kernel.org>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
											
										 
											2009-09-21 12:02:48 +02:00
										 |  |  | 	PTR	sys_perf_event_open | 
					
						
							| 
									
										
										
										
											2009-08-03 17:27:19 +01:00
										 |  |  | 	PTR	sys_accept4 | 
					
						
							| 
									
										
										
										
											2009-10-12 23:40:10 -07:00
										 |  |  | 	PTR     compat_sys_recvmmsg | 
					
						
							| 
									
										
										
										
											2007-03-06 17:04:49 +00:00
										 |  |  | 	.size	sysn32_call_table,.-sysn32_call_table |