Received: by 10.213.65.68 with SMTP id h4csp813656imn; Tue, 27 Mar 2018 09:13:58 -0700 (PDT) X-Google-Smtp-Source: AG47ELvnV8g9J+KNZKxMAVIDMOf0+y49SZKrfBP8YQfUCJOR3jcate3MTomolpMJ0pbkbaOfIi6I X-Received: by 10.99.169.1 with SMTP id u1mr19848067pge.251.1522167238675; Tue, 27 Mar 2018 09:13:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522167238; cv=none; d=google.com; s=arc-20160816; b=bk8xOCytxV26DTxfw8x/LgsifOCXg5q8cnz0jPOW6sHnT3LD43bhYUvERAQevMaVj2 nk76iKDSlV+akdoC6XAfGMmr3ZWFR5bNoCje6/tXKoTeLo9lUqtoroD8hKBeVHNZC0OY JxJMQwkXIM9ryhwV1cRsKv79Bw+JygLlGeXFXx6PK1hQ4hKTw/jmOHYCeGMT1vhTmXg6 hCur8I3ZUJsvpsZVKDvQ2287t7FD1NMtSs29+buKEi5Cjq7XUJpHScjfachSRpynCLJP 6c2FoeyD4u2vbLznzez4/kX6Ke6m397lsbZtSLzNY6ctBtXNnR4S4gdrKLU2duCYo2aK 0dMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=xVwFGv+/I9atxn4JdDGYKa243pdI7ykgnSwA7s6EMwU=; b=O0mol19q48ko1v1Qx43yXVsOJnZdarRW3oNqNcAi2/O0Tfnizk7/v+p9map5xgmalT vj/3JjuwCdd9+8VZb/P/TOToRprWEjcbbBDL+2XUyqo6Wmhcnzj8NQr+3ph4sbgjkoK9 V6tFzoParoBl2gRN5FyD/GV52uiwnNunIDNU2PzlzCigX8Tt+nE896d/7GubePNrhmXt 8x+VyNWTGPhPvxDDeByez6t6zPtopj7o/04UdMXGUHSk4LWbAZ7UWbEO1SIgcd+Hftu/ S9JHZOWueYZSS4Bqy7tdIgdPgNrY6zGTDwqIzVYqyr+IhlIxLLrwbVSqkUa4ecn/yF3G EGkg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u137si1043374pgb.651.2018.03.27.09.13.23; Tue, 27 Mar 2018 09:13:58 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752709AbeC0QGV (ORCPT + 99 others); Tue, 27 Mar 2018 12:06:21 -0400 Received: from mail.efficios.com ([167.114.142.138]:51290 "EHLO mail.efficios.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752356AbeC0QGS (ORCPT ); Tue, 27 Mar 2018 12:06:18 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.efficios.com (Postfix) with ESMTP id C454B1A5056; Tue, 27 Mar 2018 12:06:17 -0400 (EDT) Received: from mail.efficios.com ([127.0.0.1]) by localhost (mail02.efficios.com [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 0NbF-wYHAHhn; Tue, 27 Mar 2018 12:06:16 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mail.efficios.com (Postfix) with ESMTP id B227A1A5022; Tue, 27 Mar 2018 12:06:16 -0400 (EDT) X-Virus-Scanned: amavisd-new at efficios.com Received: from mail.efficios.com ([127.0.0.1]) by localhost (mail02.efficios.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id fPL0LOYGZrDH; Tue, 27 Mar 2018 12:06:16 -0400 (EDT) Received: from thinkos.internal.efficios.com (192-222-157-41.qc.cable.ebox.net [192.222.157.41]) by mail.efficios.com (Postfix) with ESMTPSA id 588DE1A7FFF; Tue, 27 Mar 2018 12:06:16 -0400 (EDT) From: Mathieu Desnoyers To: Peter Zijlstra , "Paul E . McKenney" , Boqun Feng , Andy Lutomirski , Dave Watson Cc: linux-kernel@vger.kernel.org, linux-api@vger.kernel.org, Paul Turner , Andrew Morton , Russell King , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Andrew Hunter , Andi Kleen , Chris Lameter , Ben Maurer , Steven Rostedt , Josh Triplett , Linus Torvalds , Catalin Marinas , Will Deacon , Michael Kerrisk , Mathieu Desnoyers Subject: [RFC PATCH for 4.17 01/21] uapi headers: Provide types_32_64.h Date: Tue, 27 Mar 2018 12:05:22 -0400 Message-Id: <20180327160542.28457-2-mathieu.desnoyers@efficios.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180327160542.28457-1-mathieu.desnoyers@efficios.com> References: <20180327160542.28457-1-mathieu.desnoyers@efficios.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Provide helper macros for fields which represent pointers in kernel-userspace ABI. This facilitates handling of 32-bit user-space by 64-bit kernels by defining those fields as 32-bit 0-padding and 32-bit integer on 32-bit architectures, which allows the kernel to treat those as 64-bit integers. The order of padding and 32-bit integer depends on the endianness. Signed-off-by: Mathieu Desnoyers CC: "Paul E. McKenney" CC: Peter Zijlstra CC: Paul Turner CC: Thomas Gleixner CC: Andrew Hunter CC: Andy Lutomirski CC: Andi Kleen CC: Dave Watson CC: Chris Lameter CC: Ingo Molnar CC: "H. Peter Anvin" CC: Ben Maurer CC: Steven Rostedt CC: Josh Triplett CC: Linus Torvalds CC: Andrew Morton CC: Russell King CC: Catalin Marinas CC: Will Deacon CC: Michael Kerrisk CC: Boqun Feng CC: linux-api@vger.kernel.org --- include/uapi/linux/types_32_64.h | 67 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 include/uapi/linux/types_32_64.h diff --git a/include/uapi/linux/types_32_64.h b/include/uapi/linux/types_32_64.h new file mode 100644 index 000000000000..18dc8808d026 --- /dev/null +++ b/include/uapi/linux/types_32_64.h @@ -0,0 +1,67 @@ +#ifndef _UAPI_LINUX_TYPES_32_64_H +#define _UAPI_LINUX_TYPES_32_64_H + +/* + * linux/types_32_64.h + * + * Integer type declaration for pointers across 32-bit and 64-bit systems. + * + * Copyright (c) 2015-2017 Mathieu Desnoyers + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifdef __KERNEL__ +# include +#else +# include +#endif + +#include + +#ifdef __BYTE_ORDER +# if (__BYTE_ORDER == __BIG_ENDIAN) +# define LINUX_BYTE_ORDER_BIG_ENDIAN +# else +# define LINUX_BYTE_ORDER_LITTLE_ENDIAN +# endif +#else +# ifdef __BIG_ENDIAN +# define LINUX_BYTE_ORDER_BIG_ENDIAN +# else +# define LINUX_BYTE_ORDER_LITTLE_ENDIAN +# endif +#endif + +#ifdef __LP64__ +# define LINUX_FIELD_u32_u64(field) uint64_t field +# define LINUX_FIELD_u32_u64_INIT_ONSTACK(field, v) field = (intptr_t)v +#else +# ifdef LINUX_BYTE_ORDER_BIG_ENDIAN +# define LINUX_FIELD_u32_u64(field) uint32_t field ## _padding, field +# define LINUX_FIELD_u32_u64_INIT_ONSTACK(field, v) \ + field ## _padding = 0, field = (intptr_t)v +# else +# define LINUX_FIELD_u32_u64(field) uint32_t field, field ## _padding +# define LINUX_FIELD_u32_u64_INIT_ONSTACK(field, v) \ + field = (intptr_t)v, field ## _padding = 0 +# endif +#endif + +#endif /* _UAPI_LINUX_TYPES_32_64_H */ -- 2.11.0