From: Jiri Olsa <jolsa@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
"David Ahern" <dsahern@gmail.com>,
"Ingo Molnar" <mingo@kernel.org>,
"Namhyung Kim" <namhyung@kernel.org>,
"Peter Zijlstra" <a.p.zijlstra@chello.nl>,
"Matt Fleming" <matt@codeblueprint.co.uk>,
"Raphaël Beamonte" <raphael.beamonte@gmail.com>
Subject: [PATCH 1/5] tools: Add err.h with ERR_PTR PTR_ERR interface
Date: Mon, 7 Sep 2015 10:38:03 +0200 [thread overview]
Message-ID: <1441615087-13886-2-git-send-email-jolsa@kernel.org> (raw)
In-Reply-To: <1441615087-13886-1-git-send-email-jolsa@kernel.org>
Adding part of the kernel's <linux/err.h> interface:
inline void * __must_check ERR_PTR(long error);
inline long __must_check PTR_ERR(__force const void *ptr);
inline bool __must_check IS_ERR(__force const void *ptr);
it will be used to propagate error through pointers
in following patches.
Link: http://lkml.kernel.org/n/tip-ufgnyf683uab69anmmrabgdf@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
tools/include/linux/err.h | 49 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
create mode 100644 tools/include/linux/err.h
diff --git a/tools/include/linux/err.h b/tools/include/linux/err.h
new file mode 100644
index 000000000000..c9ada48f5156
--- /dev/null
+++ b/tools/include/linux/err.h
@@ -0,0 +1,49 @@
+#ifndef __TOOLS_LINUX_ERR_H
+#define __TOOLS_LINUX_ERR_H
+
+#include <linux/compiler.h>
+#include <linux/types.h>
+
+#include <asm/errno.h>
+
+/*
+ * Original kernel header comment:
+ *
+ * Kernel pointers have redundant information, so we can use a
+ * scheme where we can return either an error code or a normal
+ * pointer with the same return value.
+ *
+ * This should be a per-architecture thing, to allow different
+ * error and pointer decisions.
+ *
+ * Userspace note:
+ * The same principle works for userspace, because 'error' pointers
+ * fall down to the unused hole far from user space, as described
+ * in Documentation/x86/x86_64/mm.txt for x86_64 arch:
+ *
+ * 0000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm hole caused by [48:63] sign extension
+ * ffffffffffe00000 - ffffffffffffffff (=2 MB) unused hole
+ *
+ * It should be the same case for other architectures, because
+ * this code is used in generic kernel code.
+ */
+#define MAX_ERRNO 4095
+
+#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
+
+static inline void * __must_check ERR_PTR(long error)
+{
+ return (void *) error;
+}
+
+static inline long __must_check PTR_ERR(__force const void *ptr)
+{
+ return (long) ptr;
+}
+
+static inline bool __must_check IS_ERR(__force const void *ptr)
+{
+ return IS_ERR_VALUE((unsigned long)ptr);
+}
+
+#endif /* _LINUX_ERR_H */
--
2.4.3
next prev parent reply other threads:[~2015-09-07 8:38 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-07 8:38 [PATCHv2 0/5] perf tools: Enhance parsing events tracepoint error output Jiri Olsa
2015-09-07 8:38 ` Jiri Olsa [this message]
2015-09-08 20:22 ` [PATCH 1/5] tools: Add err.h with ERR_PTR PTR_ERR interface Raphaël Beamonte
2015-09-08 20:24 ` Raphaël Beamonte
2015-09-08 21:06 ` Arnaldo Carvalho de Melo
2015-09-08 21:28 ` Raphaël Beamonte
2015-09-08 21:29 ` Raphaël Beamonte
2015-09-16 7:28 ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-09-21 23:41 ` Vinson Lee
2015-09-29 6:35 ` Vinson Lee
2015-09-29 7:14 ` Jiri Olsa
2015-09-29 7:20 ` Jiri Olsa
2015-09-29 7:52 ` He Kuang
2015-09-29 7:57 ` Jiri Olsa
2015-09-29 8:15 ` He Kuang
2015-09-29 10:41 ` Jiri Olsa
2015-09-29 14:52 ` Arnaldo Carvalho de Melo
2015-09-29 15:05 ` [PATCH] perf tool: Fix shadowed declaration in parse-events.c Jiri Olsa
2015-10-01 7:10 ` [tip:perf/core] perf tools: " tip-bot for Jiri Olsa
2015-09-07 8:38 ` [PATCH 2/5] perf tools: Add tools/include into tags directories Jiri Olsa
2015-09-15 7:02 ` [tip:perf/core] perf tools: Add tools/ include " tip-bot for Jiri Olsa
2015-09-07 8:38 ` [PATCH 3/5] perf tools: Propagate error info for the tracepoint parsing Jiri Olsa
2015-09-08 21:42 ` Raphaël Beamonte
2015-09-09 7:50 ` Jiri Olsa
2015-09-12 10:54 ` Matt Fleming
2015-09-16 7:29 ` [tip:perf/core] " tip-bot for Jiri Olsa
2015-09-07 8:38 ` [PATCH 4/5] perf tools: Propagate error info from tp_format Jiri Olsa
2015-09-09 20:58 ` Arnaldo Carvalho de Melo
2015-09-10 8:24 ` Jiri Olsa
2015-09-10 14:16 ` Arnaldo Carvalho de Melo
2015-09-14 20:53 ` Arnaldo Carvalho de Melo
2015-09-14 20:59 ` Raphaël Beamonte
2015-09-14 21:36 ` Arnaldo Carvalho de Melo
2015-09-14 22:05 ` Raphaël Beamonte
2015-09-15 2:35 ` Arnaldo Carvalho de Melo
2015-09-14 21:02 ` Arnaldo Carvalho de Melo
2015-09-16 7:29 ` [tip:perf/core] perf evsel: " tip-bot for Jiri Olsa
2015-09-07 8:38 ` [PATCH 5/5] perf tools: Enhance parsing events tracepoint error output Jiri Olsa
2015-09-10 7:00 ` Namhyung Kim
2015-09-10 8:05 ` Jiri Olsa
2015-09-11 16:09 ` Namhyung Kim
2015-09-11 16:16 ` Jiri Olsa
2015-09-11 17:50 ` Raphaël Beamonte
2015-09-11 18:55 ` Arnaldo Carvalho de Melo
2015-09-11 19:56 ` Raphaël Beamonte
2015-09-11 20:22 ` Arnaldo Carvalho de Melo
2015-09-11 22:01 ` Raphaël Beamonte
2015-09-14 20:59 ` Arnaldo Carvalho de Melo
2015-09-16 7:29 ` [tip:perf/core] " tip-bot for Jiri Olsa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1441615087-13886-2-git-send-email-jolsa@kernel.org \
--to=jolsa@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=dsahern@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=matt@codeblueprint.co.uk \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=raphael.beamonte@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome