diff options
Diffstat (limited to 'include/linux/syscalls.h')
| -rw-r--r-- | include/linux/syscalls.h | 44 | 
1 files changed, 28 insertions, 16 deletions
| diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 18cd0684fc4..1f5c18e6f4f 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -62,6 +62,7 @@ struct robust_list_head;  struct getcpu_cache;  struct old_linux_dirent;  struct perf_event_attr; +struct file_handle;  #include <linux/types.h>  #include <linux/aio_abi.h> @@ -125,62 +126,66 @@ extern struct trace_event_functions enter_syscall_print_funcs;  extern struct trace_event_functions exit_syscall_print_funcs;  #define SYSCALL_TRACE_ENTER_EVENT(sname)				\ -	static struct syscall_metadata					\ -	__attribute__((__aligned__(4))) __syscall_meta_##sname;		\ +	static struct syscall_metadata __syscall_meta_##sname;		\  	static struct ftrace_event_call __used				\ -	  __attribute__((__aligned__(4)))				\ -	  __attribute__((section("_ftrace_events")))			\  	  event_enter_##sname = {					\  		.name                   = "sys_enter"#sname,		\  		.class			= &event_class_syscall_enter,	\  		.event.funcs            = &enter_syscall_print_funcs,	\  		.data			= (void *)&__syscall_meta_##sname,\ +		.flags			= TRACE_EVENT_FL_CAP_ANY,	\  	};								\ -	__TRACE_EVENT_FLAGS(enter_##sname, TRACE_EVENT_FL_CAP_ANY) +	static struct ftrace_event_call __used				\ +	  __attribute__((section("_ftrace_events")))			\ +	 *__event_enter_##sname = &event_enter_##sname;  #define SYSCALL_TRACE_EXIT_EVENT(sname)					\ -	static struct syscall_metadata					\ -	__attribute__((__aligned__(4))) __syscall_meta_##sname;		\ +	static struct syscall_metadata __syscall_meta_##sname;		\  	static struct ftrace_event_call __used				\ -	  __attribute__((__aligned__(4)))				\ -	  __attribute__((section("_ftrace_events")))			\  	  event_exit_##sname = {					\  		.name                   = "sys_exit"#sname,		\  		.class			= &event_class_syscall_exit,	\  		.event.funcs		= &exit_syscall_print_funcs,	\  		.data			= (void *)&__syscall_meta_##sname,\ +		.flags			= TRACE_EVENT_FL_CAP_ANY,	\  	};								\ -	__TRACE_EVENT_FLAGS(exit_##sname, TRACE_EVENT_FL_CAP_ANY) +	static struct ftrace_event_call __used				\ +	  __attribute__((section("_ftrace_events")))			\ +	*__event_exit_##sname = &event_exit_##sname;  #define SYSCALL_METADATA(sname, nb)				\  	SYSCALL_TRACE_ENTER_EVENT(sname);			\  	SYSCALL_TRACE_EXIT_EVENT(sname);			\  	static struct syscall_metadata __used			\ -	  __attribute__((__aligned__(4)))			\ -	  __attribute__((section("__syscalls_metadata")))	\  	  __syscall_meta_##sname = {				\  		.name 		= "sys"#sname,			\ +		.syscall_nr	= -1,	/* Filled in at boot */	\  		.nb_args 	= nb,				\  		.types		= types_##sname,		\  		.args		= args_##sname,			\  		.enter_event	= &event_enter_##sname,		\  		.exit_event	= &event_exit_##sname,		\  		.enter_fields	= LIST_HEAD_INIT(__syscall_meta_##sname.enter_fields), \ -	}; +	};							\ +	static struct syscall_metadata __used			\ +	  __attribute__((section("__syscalls_metadata")))	\ +	 *__p_syscall_meta_##sname = &__syscall_meta_##sname;  #define SYSCALL_DEFINE0(sname)					\  	SYSCALL_TRACE_ENTER_EVENT(_##sname);			\  	SYSCALL_TRACE_EXIT_EVENT(_##sname);			\  	static struct syscall_metadata __used			\ -	  __attribute__((__aligned__(4)))			\ -	  __attribute__((section("__syscalls_metadata")))	\  	  __syscall_meta__##sname = {				\  		.name 		= "sys_"#sname,			\ +		.syscall_nr	= -1,	/* Filled in at boot */	\  		.nb_args 	= 0,				\  		.enter_event	= &event_enter__##sname,	\  		.exit_event	= &event_exit__##sname,		\  		.enter_fields	= LIST_HEAD_INIT(__syscall_meta__##sname.enter_fields), \  	};							\ +	static struct syscall_metadata __used			\ +	  __attribute__((section("__syscalls_metadata")))	\ +	 *__p_syscall_meta_##sname = &__syscall_meta__##sname;	\  	asmlinkage long sys_##sname(void)  #else  #define SYSCALL_DEFINE0(name)	   asmlinkage long sys_##name(void) @@ -311,6 +316,8 @@ asmlinkage long sys_clock_settime(clockid_t which_clock,  				const struct timespec __user *tp);  asmlinkage long sys_clock_gettime(clockid_t which_clock,  				struct timespec __user *tp); +asmlinkage long sys_clock_adjtime(clockid_t which_clock, +				struct timex __user *tx);  asmlinkage long sys_clock_getres(clockid_t which_clock,  				struct timespec __user *tp);  asmlinkage long sys_clock_nanosleep(clockid_t which_clock, int flags, @@ -830,5 +837,10 @@ asmlinkage long sys_mmap_pgoff(unsigned long addr, unsigned long len,  			unsigned long prot, unsigned long flags,  			unsigned long fd, unsigned long pgoff);  asmlinkage long sys_old_mmap(struct mmap_arg_struct __user *arg); - +asmlinkage long sys_name_to_handle_at(int dfd, const char __user *name, +				      struct file_handle __user *handle, +				      int __user *mnt_id, int flag); +asmlinkage long sys_open_by_handle_at(int mountdirfd, +				      struct file_handle __user *handle, +				      int flags);  #endif | 
