From patchwork Wed Feb 24 18:34:12 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 8411151 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 42DE09F52D for ; Wed, 24 Feb 2016 18:38:59 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id EC41320376 for ; Wed, 24 Feb 2016 18:38:57 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A1C4F2035B for ; Wed, 24 Feb 2016 18:38:56 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1aYeJM-0008JN-9h; Wed, 24 Feb 2016 18:37:20 +0000 Received: from mail-bl2on0062.outbound.protection.outlook.com ([65.55.169.62] helo=na01-bl2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aYeJB-0007xP-Vp for linux-arm-kernel@lists.infradead.org; Wed, 24 Feb 2016 18:37:12 +0000 Authentication-Results: de.ibm.com; dkim=none (message not signed) header.d=none;de.ibm.com; dmarc=none action=none header.from=caviumnetworks.com; Received: from localhost (95.143.213.121) by BY2PR07MB616.namprd07.prod.outlook.com (10.141.222.156) with Microsoft SMTP Server (TLS) id 15.1.409.15; Wed, 24 Feb 2016 18:36:46 +0000 From: Yury Norov To: , , , , , , , Subject: [PATCH 3/5] all: s390: move wrapper infrastructure to generic headers Date: Wed, 24 Feb 2016 21:34:12 +0300 Message-ID: <1456338854-14901-4-git-send-email-ynorov@caviumnetworks.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1456338854-14901-1-git-send-email-ynorov@caviumnetworks.com> References: <1456338854-14901-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [95.143.213.121] X-ClientProxiedBy: HE1PR01CA0026.eurprd01.prod.exchangelabs.com (25.163.2.164) To BY2PR07MB616.namprd07.prod.outlook.com (10.141.222.156) X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB616; 2:gyNQ8ktTn0vNFN2foAi3NgueN7Kbp9WQ7YM+PKQWP+XrwudC9Sieydm4fSd+Kr5NaJSbvD2QUmTUzWSDH++hYh4YG9NpZvcVsPxi21vQ4WVlWviPX9pK25wpbc89IXaxicHkB1WKSmalseOOb8P3xA==; 3:hRa9++EiuKVbTZUj1g8qqhx0no3JzdyyZ1zIoJ4vSTaKDm5KylAFDBnWk0DM41Jo5x5d1QzlSAabWrtH3+sjEcNQTZBHuNWCdZVJmVJQzyFV8v7SbBGtXOIueOF2LV6Y; 25:xDFEAEEWFWNJfTdTznuHCGZtCnFF78ZSp+Kbamafk64xmyugdbZCyTYUxtGVyslizeOgCKurViAWnOiN//BAG+b2GOCcwUhSqKenfLcccUSDC7YQVT3fjagN7UNioxAGbFe3g4siAzAnadFsYGNLHazJk7BT5ixfZJOdJ9uauZRixQnoT3xI7NjH/YV1/LrCpXivtmknfSbPnSeokMiTK6BVFIRXkmCKWnA9QjFrKTjRPagZQKbHV1229seN0wyaEBHGCVObpbseoEB08Bpihmwykb8qfaQquVzp7EMNYjOzqoPppsuhu0VlwYD6zzQvb8rLDlq3LAXJu6bkCsRSsg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR07MB616; X-MS-Office365-Filtering-Correlation-Id: f956f250-6662-4780-2d9c-08d33d49735f X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB616; 20:pWMD7k4+lkncb0IdXbbZxmgrtuxJJMrQQnoS1al8efC9Bfq1jhOsg6IFS7W0HTwrbACt4RLPSpNmdK/ybH8zffMnITVASw9/ulaMQPeZf0Ght2oi/YabF4PpT8c8fa5szaLgxnbE8XBmJnHVNr6CjtVmwTUaNGhFVX/zsNXWPWIBnQ5aYZBSr3u9wLnKRM70x6QrNkGvE70f9WgZC1aW37jFFzHIyxgMnTNBf7DvV5Kj5FwXRsmc1DnOg2qRc6fh3AqLoc4/VXUQO3gfWzbCq8NFw832u9I9ejkw9jox1zZpKv0a8PpG89Ojkh9Wn1YAx+ANz+4a2EjweBjAdLz+/yBYGmYHBMnjGMu1pS3gPsoChY6HVOOFYQvLhFpiVYz4LuOOwgyx69+uj1oWuB+NtZChUql9Jf2kXBAilLlnpojn1+kIE1oB/UUTvcQL7933mGu91jJ5dHzWkgM274aP7p5NAWOuYJ8nLs37tQog5gANf3yxLyZf2QmT6eD46ibZM9s8zXz0Eu3kzePAziGmMyuNhmDgRePcW2110BzCxgkCss2kENmoM/+dQvJC0Zi5GBJqT+2zPdEzPBA99B9FNMFGO8RAKokUhXD5RZxOkO8= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001); SRVR:BY2PR07MB616; BCL:0; PCL:0; RULEID:; SRVR:BY2PR07MB616; X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB616; 4:UENM0hnwzH0ch06wonXM4J2TVAQdVyJh9y2SAPvX86MhDJ/JKd846UxQcwU3/wYSUKTECzGvZCLGdKNtTR22lt2kjGoTi0oDRC/4Jdc7RP7N+nvqWDutkjVrjLgrIdmhWPWONcjMXsebyTbcdQW/43DyQGoc/irhTlaj7k5he5IjB5P4AX81dSpWrqH16ym+XP+nFT9Y7C+mNYEZ9Kixj174MY/qUO5h/NMCGaZ6A2Skrl/4q32AYlNS8tXlZxS3xKfYDCBeeAMv28gogYNQYAOU+5F7LvLYAYalEZEZro2nWRqzXKgNDTYuawHDtivxBUuA7uvoOi5oK6VWQd82hZmz6NeoH6nctMGKptKHO9fPqVju2V5mwJbfko+L/t/Y X-Forefront-PRVS: 08626BE3A5 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(76506005)(122386002)(40100003)(5004730100002)(1096002)(5008740100001)(33646002)(76176999)(50986999)(5003940100001)(87976001)(48376002)(50466002)(107886002)(19580395003)(5001960100002)(5001770100001)(4001430100002)(66066001)(19580405001)(2906002)(47776003)(2201001)(4326007)(77096005)(189998001)(42186005)(50226001)(92566002)(229853001)(2950100001)(3846002)(586003)(36756003)(6116002)(41533002)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR07MB616; H:localhost; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR07MB616; 23:PqIr1nipLeIA13MSqu8AV/Nx6MZ0Afeoxi1ehyJmkK?= =?us-ascii?Q?3TZO1M2YteihVzQ9r/4qu84SvxM+b4/5XzkDyaBnCBWkqgxN7x39ba/exafq?= =?us-ascii?Q?E4Z4g2HIjf/c5Abt+j1AcJ61q09ynCP5vXle9UhGwgRgISWLZF+/F1E6lM8J?= =?us-ascii?Q?VzStyOZOVxHLkMTAPcvyr6zAMLK/nBIj+mMsOxRWS5Z/GISX2prySuQtNMAs?= =?us-ascii?Q?emhvYXGjltpok4SAwUN7/xXtkyr4YQpFGq21alSYdqyUiyCpYopFjMq8c870?= =?us-ascii?Q?L2MNuNaZlL3FvhShgFWCKrVoAjoJ7MNVjCkrgVE+u1qwfOSOTJZURhBNuD0Y?= =?us-ascii?Q?cdGE8gmub1hcj0HcMfCVhTTyVa2ROCzgAoXIrUzyv0hmXuCI3wHzhQ4zwbdT?= =?us-ascii?Q?wEuDo28VE7giNeEefD25p3JG4j97KmHbJJZvfaRdoMHVkImHxt2GrrUpQT3G?= =?us-ascii?Q?8bQbdKikpmNykIlIhpDjewR/3rnTUOy/0KtIWD3dUp41k9DRsNmvnN4THHzF?= =?us-ascii?Q?dN9geUPQfeyCw2xTwSb9M4TFSFs6GP0uLD8wJYuw/hwVQrpLLdkkj9QKi35r?= =?us-ascii?Q?5yDd+6haU+H7BRF6e41TzAadXZK/JNUy/wxB+xToUA7zpoCK0YWWZGoDQsSR?= =?us-ascii?Q?3sNu9Eu61X5TLSsenBYZuJA1i48hRM1lRnhhByU5cNpYSuHRNyuw6al6d0Xr?= =?us-ascii?Q?BA+084T51j2yyGUagSm6VdAgMCN17BrjyPaYyJfhmETGduMS1DHleDE12t2R?= =?us-ascii?Q?sJZ3EgfcszLlEjDEpaSWHXrCtqlH98PZukcSGvZW6yGsF8q9b/DNRUJt3irm?= =?us-ascii?Q?q2y/aDgJA8Ho4w/aFr9AjseIoexOhThJv1Y2YXMYMALkpV8kDrZSIJllgqhO?= =?us-ascii?Q?mTkeWNwfgMtbGBGVXtvIlQfV5Jp+sHv5KwosSqPz48DZRATkFBepnN7+rdwg?= =?us-ascii?Q?YZLMLhtPBj+miHuKCNDamBwEF1fHJD8/1XqcCD7Wn9NEJPTNFMdfB2a0rAfK?= =?us-ascii?Q?8KxqdAm+B9/YM0OWBIwSkWOtEDmrOZBSJc1mw8o3/ydNLz5gkg8rZ9OG8TaC?= =?us-ascii?Q?DvdzA=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB616; 5:PKTnZW62oLF+PwKXfW2udsBRvXG/NFMuhg+aanEcFZpqVuv+OM29qZQUYjFnK1C4RfLHmKSyC+YculD1lriSsEbsCtZ3PeW+/R0UpEgreKEkKurWe9oDR5NIjyxYq1g37lbZVovWD3EfeJd3vCHunA==; 24:A4nbufUVBv1FRSI49J7IVasPG1CotHXLwjcSnYGgdNXMLQlI8zu5C23Q9B9IxF76tDX3RQI+IAVjDpfSG/P3z6h37CkMWpRmfjYACBVGUgY= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Feb 2016 18:36:46.1271 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR07MB616 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160224_103710_566229_F30963F2 X-CRM114-Status: GOOD ( 12.04 ) X-Spam-Score: -1.9 (-) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: pinskia@gmail.com, Prasun.Kapoor@caviumnetworks.com, Nathan_Lynch@mentor.com, agraf@suse.de, klimov.linux@gmail.com, broonie@kernel.org, bamvor.zhangjian@huawei.com, Yury Norov , joseph@codesourcery.com, christoph.muellner@theobroma-systems.com Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP __SC_COMPAT_CAST for s390 is too specific due to 31-bit pointer length, so it's moved to arch/s390/include/asm/compat.h. Generic declaration assumes that long, unsigned long and pointer types are all 32-bit length. linux/syscalls_structs.h header is introduced, because from now (see next patch) structure types listed there are needed for both normal and compat mode. cond_syscall_wrapped now defined two symbols: sys_foo() and compat_sys_foo(), if compat wrappers are enabled. Here __SC_WRAP() macro is introduced as well. s390 doesn't need it as it uses asm-generated syscall table. But architectures that generate that tables with C code (ARM64/ILP32) should redefine it as '#define __SC_WRAP(name) compat_##name'. Signed-off-by: Yury Norov --- arch/s390/include/asm/compat.h | 17 +++++++++-- arch/s390/kernel/compat_wrapper.c | 51 --------------------------------- include/linux/compat.h | 53 ++++++++++++++++++++++++++++++++++ include/linux/syscalls.h | 57 +------------------------------------ include/linux/syscalls_structs.h | 60 +++++++++++++++++++++++++++++++++++++++ include/uapi/asm-generic/unistd.h | 4 +++ 6 files changed, 133 insertions(+), 109 deletions(-) create mode 100644 include/linux/syscalls_structs.h diff --git a/arch/s390/include/asm/compat.h b/arch/s390/include/asm/compat.h index 352f7bd..f412723 100644 --- a/arch/s390/include/asm/compat.h +++ b/arch/s390/include/asm/compat.h @@ -7,13 +7,26 @@ #include #include -#define __TYPE_IS_PTR(t) (!__builtin_types_compatible_p(typeof(0?(t)0:0ULL), u64)) - #define __SC_DELOUSE(t,v) ({ \ BUILD_BUG_ON(sizeof(t) > 4 && !__TYPE_IS_PTR(t)); \ (t)(__TYPE_IS_PTR(t) ? ((v) & 0x7fffffff) : (v)); \ }) +#define __SC_COMPAT_CAST(t, a) \ +({ \ + long __ReS = a; \ + \ + BUILD_BUG_ON((sizeof(t) > 4) && !__TYPE_IS_L(t) && \ + !__TYPE_IS_UL(t) && !__TYPE_IS_PTR(t)); \ + if (__TYPE_IS_L(t)) \ + __ReS = (s32)a; \ + if (__TYPE_IS_UL(t)) \ + __ReS = (u32)a; \ + if (__TYPE_IS_PTR(t)) \ + __ReS = a & 0x7fffffff; \ + (t)__ReS; \ +}) + #define PSW32_MASK_PER 0x40000000UL #define PSW32_MASK_DAT 0x04000000UL #define PSW32_MASK_IO 0x02000000UL diff --git a/arch/s390/kernel/compat_wrapper.c b/arch/s390/kernel/compat_wrapper.c index ae2cda5..1614e15 100644 --- a/arch/s390/kernel/compat_wrapper.c +++ b/arch/s390/kernel/compat_wrapper.c @@ -8,57 +8,6 @@ #include #include "entry.h" -#define COMPAT_SYSCALL_WRAP1(name, ...) \ - COMPAT_SYSCALL_WRAPx(1, _##name, __VA_ARGS__) -#define COMPAT_SYSCALL_WRAP2(name, ...) \ - COMPAT_SYSCALL_WRAPx(2, _##name, __VA_ARGS__) -#define COMPAT_SYSCALL_WRAP3(name, ...) \ - COMPAT_SYSCALL_WRAPx(3, _##name, __VA_ARGS__) -#define COMPAT_SYSCALL_WRAP4(name, ...) \ - COMPAT_SYSCALL_WRAPx(4, _##name, __VA_ARGS__) -#define COMPAT_SYSCALL_WRAP5(name, ...) \ - COMPAT_SYSCALL_WRAPx(5, _##name, __VA_ARGS__) -#define COMPAT_SYSCALL_WRAP6(name, ...) \ - COMPAT_SYSCALL_WRAPx(6, _##name, __VA_ARGS__) - -#define __SC_COMPAT_TYPE(t, a) \ - __typeof(__builtin_choose_expr(sizeof(t) > 4, 0L, (t)0)) a - -#define __SC_COMPAT_CAST(t, a) \ -({ \ - long __ReS = a; \ - \ - BUILD_BUG_ON((sizeof(t) > 4) && !__TYPE_IS_L(t) && \ - !__TYPE_IS_UL(t) && !__TYPE_IS_PTR(t)); \ - if (__TYPE_IS_L(t)) \ - __ReS = (s32)a; \ - if (__TYPE_IS_UL(t)) \ - __ReS = (u32)a; \ - if (__TYPE_IS_PTR(t)) \ - __ReS = a & 0x7fffffff; \ - (t)__ReS; \ -}) - -/* - * The COMPAT_SYSCALL_WRAP macro generates system call wrappers to be used by - * compat tasks. These wrappers will only be used for system calls where only - * the system call arguments need sign or zero extension or zeroing of the upper - * 33 bits of pointers. - * Note: since the wrapper function will afterwards call a system call which - * again performs zero and sign extension for all system call arguments with - * a size of less than eight bytes, these compat wrappers only touch those - * system call arguments with a size of eight bytes ((unsigned) long and - * pointers). Zero and sign extension for e.g. int parameters will be done by - * the regular system call wrappers. - */ -#define COMPAT_SYSCALL_WRAPx(x, name, ...) \ -asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ -asmlinkage long notrace compat_sys##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__));\ -asmlinkage long notrace compat_sys##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__)) \ -{ \ - return sys##name(__MAP(x,__SC_COMPAT_CAST,__VA_ARGS__)); \ -} - COMPAT_SYSCALL_WRAP2(creat, const char __user *, pathname, umode_t, mode); COMPAT_SYSCALL_WRAP2(link, const char __user *, oldname, const char __user *, newname); COMPAT_SYSCALL_WRAP1(unlink, const char __user *, pathname); diff --git a/include/linux/compat.h b/include/linux/compat.h index a76c917..243b656 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h @@ -28,6 +28,10 @@ #define __SC_DELOUSE(t,v) ((t)(unsigned long)(v)) #endif +#ifndef __TYPE_IS_PTR +#define __TYPE_IS_PTR(t) (!__builtin_types_compatible_p(typeof(0?(t)0:0ULL), u64)) +#endif + #define COMPAT_SYSCALL_DEFINE0(name) \ asmlinkage long compat_sys_##name(void) @@ -718,4 +722,53 @@ asmlinkage long compat_sys_fanotify_mark(int, unsigned int, __u32, __u32, #define is_compat_task() (0) #endif /* CONFIG_COMPAT */ + +#ifdef CONFIG_COMPAT_WRAPPER + +#define COMPAT_SYSCALL_WRAP1(name, ...) COMPAT_SYSCALL_WRAPx(1, _##name, __VA_ARGS__) +#define COMPAT_SYSCALL_WRAP2(name, ...) COMPAT_SYSCALL_WRAPx(2, _##name, __VA_ARGS__) +#define COMPAT_SYSCALL_WRAP3(name, ...) COMPAT_SYSCALL_WRAPx(3, _##name, __VA_ARGS__) +#define COMPAT_SYSCALL_WRAP4(name, ...) COMPAT_SYSCALL_WRAPx(4, _##name, __VA_ARGS__) +#define COMPAT_SYSCALL_WRAP5(name, ...) COMPAT_SYSCALL_WRAPx(5, _##name, __VA_ARGS__) +#define COMPAT_SYSCALL_WRAP6(name, ...) COMPAT_SYSCALL_WRAPx(6, _##name, __VA_ARGS__) + +#ifndef __SC_COMPAT_TYPE +#define __SC_COMPAT_TYPE(t, a) \ + __typeof(__builtin_choose_expr(sizeof(t) > 4, 0L, (t)0)) a +#endif + +#ifndef __SC_COMPAT_CAST +#define __SC_COMPAT_CAST(t, a) ({ \ + BUILD_BUG_ON((sizeof(t) > 4) && !__TYPE_IS_L(t) && \ + !__TYPE_IS_UL(t) && !__TYPE_IS_PTR(t)); \ + ((t) ((t)(-1) < 0 ? (s64)(s32)(a) : (u64)(u32)(a))); \ +}) +#endif + +#ifndef COMPAT_SYSCALL_WRAPx +/* + * The COMPAT_SYSCALL_WRAP macro generates system call wrappers to be used by + * compat tasks. These wrappers will only be used for system calls where only + * the system call arguments need sign or zero extension or zeroing of the upper + * 33 bits of pointers. + * Note: since the wrapper function will afterwards call a system call which + * again performs zero and sign extension for all system call arguments with + * a size of less than eight bytes, these compat wrappers only touch those + * system call arguments with a size of eight bytes ((unsigned) long and + * pointers). Zero and sign extension for e.g. int parameters will be done by + * the regular system call wrappers. + */ +#define COMPAT_SYSCALL_WRAPx(x, name, ...) \ +asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ +asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ + __attribute__((alias(__stringify(compat_SyS##name)))); \ +asmlinkage long notrace compat_SyS##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__)); \ +asmlinkage long notrace compat_SyS##name(__MAP(x,__SC_COMPAT_TYPE,__VA_ARGS__)) \ +{ \ + return sys##name(__MAP(x,__SC_COMPAT_CAST,__VA_ARGS__)); \ +} +#endif + +#endif /* CONFIG_COMPAT_WRAPPER */ + #endif /* _LINUX_COMPAT_H */ diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 185815c..2875b13 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -11,62 +11,7 @@ #ifndef _LINUX_SYSCALLS_H #define _LINUX_SYSCALLS_H -struct epoll_event; -struct iattr; -struct inode; -struct iocb; -struct io_event; -struct iovec; -struct itimerspec; -struct itimerval; -struct kexec_segment; -struct linux_dirent; -struct linux_dirent64; -struct list_head; -struct mmap_arg_struct; -struct msgbuf; -struct user_msghdr; -struct mmsghdr; -struct msqid_ds; -struct new_utsname; -struct nfsctl_arg; -struct __old_kernel_stat; -struct oldold_utsname; -struct old_utsname; -struct pollfd; -struct rlimit; -struct rlimit64; -struct rusage; -struct sched_param; -struct sched_attr; -struct sel_arg_struct; -struct semaphore; -struct sembuf; -struct shmid_ds; -struct sockaddr; -struct stat; -struct stat64; -struct statfs; -struct statfs64; -struct __sysctl_args; -struct sysinfo; -struct timespec; -struct timeval; -struct timex; -struct timezone; -struct tms; -struct utimbuf; -struct mq_attr; -struct compat_stat; -struct compat_timeval; -struct robust_list_head; -struct getcpu_cache; -struct old_linux_dirent; -struct perf_event_attr; -struct file_handle; -struct sigaltstack; -union bpf_attr; - +#include #include #include #include diff --git a/include/linux/syscalls_structs.h b/include/linux/syscalls_structs.h new file mode 100644 index 0000000..a920cbc --- /dev/null +++ b/include/linux/syscalls_structs.h @@ -0,0 +1,60 @@ +#ifndef _LINUX_SYSCALL_STRUCTS_H +#define _LINUX_SYSCALL_STRUCTS_H + +struct epoll_event; +struct iattr; +struct inode; +struct iocb; +struct io_event; +struct iovec; +struct itimerspec; +struct itimerval; +struct kexec_segment; +struct linux_dirent; +struct linux_dirent64; +struct list_head; +struct mmap_arg_struct; +struct msgbuf; +struct user_msghdr; +struct mmsghdr; +struct msqid_ds; +struct new_utsname; +struct nfsctl_arg; +struct __old_kernel_stat; +struct oldold_utsname; +struct old_utsname; +struct pollfd; +struct rlimit; +struct rlimit64; +struct rusage; +struct sched_param; +struct sched_attr; +struct sel_arg_struct; +struct semaphore; +struct sembuf; +struct shmid_ds; +struct sockaddr; +struct stat; +struct stat64; +struct statfs; +struct statfs64; +struct __sysctl_args; +struct sysinfo; +struct timespec; +struct timeval; +struct timex; +struct timezone; +struct tms; +struct utimbuf; +struct mq_attr; +struct compat_stat; +struct compat_timeval; +struct robust_list_head; +struct getcpu_cache; +struct old_linux_dirent; +struct perf_event_attr; +struct file_handle; +struct sigaltstack; +union bpf_attr; + +#endif /* _LINUX_SYSCALL_STRUCTS_H */ diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h index 2622b33..f10a316 100644 --- a/include/uapi/asm-generic/unistd.h +++ b/include/uapi/asm-generic/unistd.h @@ -29,6 +29,10 @@ #define __SC_COMP_3264(_nr, _32, _64, _comp) __SC_3264(_nr, _32, _64) #endif +#ifndef __SC_WRAP +#define __SC_WRAP __SYSCALL +#endif + #define __NR_io_setup 0 __SC_COMP(__NR_io_setup, sys_io_setup, compat_sys_io_setup) #define __NR_io_destroy 1