| #ifndef _ALT_SYSCALL_H |
| #define _ALT_SYSCALL_H |
| |
| #include <linux/errno.h> |
| |
| #ifdef CONFIG_ALT_SYSCALL |
| |
| #include <linux/list.h> |
| #include <asm/syscall.h> |
| |
| #define ALT_SYS_CALL_NAME_MAX 32 |
| |
| struct alt_sys_call_table { |
| char name[ALT_SYS_CALL_NAME_MAX + 1]; |
| sys_call_ptr_t *table; |
| int size; |
| #ifdef CONFIG_IA32_EMULATION |
| sys_call_ptr_t *compat_table; |
| int compat_size; |
| #endif |
| struct list_head node; |
| }; |
| |
| /* |
| * arch_dup_sys_call_table should return the default syscall table, not |
| * the current syscall table, since we want to explicitly not allow |
| * syscall table composition. A selected syscall table should be treated |
| * as a single execution personality. |
| */ |
| |
| int arch_dup_sys_call_table(struct alt_sys_call_table *table); |
| int arch_set_sys_call_table(struct alt_sys_call_table *table); |
| |
| int register_alt_sys_call_table(struct alt_sys_call_table *table); |
| int set_alt_sys_call_table(char __user *name); |
| |
| #else |
| |
| struct alt_sys_call_table; |
| |
| static inline int arch_dup_sys_call_table(struct alt_sys_call_table *table) |
| { |
| return -ENOSYS; |
| } |
| static inline int arch_set_sys_call_table(struct alt_sys_call_table *table) |
| { |
| return -ENOSYS; |
| } |
| static inline int register_alt_sys_call_table(struct alt_sys_call_table *table) |
| { |
| return -ENOSYS; |
| } |
| static inline int set_alt_sys_call_table(char __user *name) |
| { |
| return -ENOSYS; |
| } |
| #endif |
| |
| #endif /* _ALT_SYSCALL_H */ |