All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 07/27] score: create head files elf.h emergency-restart.h errno.h
@ 2009-06-09  6:26 ` liqin.chen
  0 siblings, 0 replies; 16+ messages in thread
From: liqin.chen @ 2009-06-09  6:26 UTC (permalink / raw)
  To: linux-arch, linux-kernel; +Cc: Arnd Bergmann, Andrew Morton, torvalds

>From 92de1d59c5c52dc1d64a9f6918b46afa4135afa3 Mon Sep 17 00:00:00 2001
From: Chen Liqin <liqin.chen@sunplusct.com>
Date: Tue, 9 Jun 2009 13:43:08 +0800



Signed-off-by: Chen Liqin <liqin.chen@sunplusct.com>
---
 arch/score/include/asm/elf.h               |   99 
++++++++++++++++++++++++++++
 arch/score/include/asm/emergency-restart.h |    6 ++
 arch/score/include/asm/errno.h             |    7 ++
 3 files changed, 112 insertions(+), 0 deletions(-)
 create mode 100644 arch/score/include/asm/elf.h
 create mode 100644 arch/score/include/asm/emergency-restart.h
 create mode 100644 arch/score/include/asm/errno.h

diff --git a/arch/score/include/asm/elf.h b/arch/score/include/asm/elf.h
new file mode 100644
index 0000000..8324363
--- /dev/null
+++ b/arch/score/include/asm/elf.h
@@ -0,0 +1,99 @@
+#ifndef _ASM_SCORE_ELF_H
+#define _ASM_SCORE_ELF_H
+
+/* ELF register definitions */
+#define ELF_NGREG      45
+#define ELF_NFPREG     33
+#define EM_SCORE7      135
+
+/* Relocation types. */
+#define R_SCORE_NONE           0
+#define R_SCORE_HI16           1
+#define R_SCORE_LO16           2
+#define R_SCORE_BCMP           3
+#define R_SCORE_24             4
+#define R_SCORE_PC19           5
+#define R_SCORE16_11           6
+#define R_SCORE16_PC8          7
+#define R_SCORE_ABS32          8
+#define R_SCORE_ABS16          9
+#define R_SCORE_DUMMY2         10
+#define R_SCORE_GP15           11
+#define R_SCORE_GNU_VTINHERIT  12
+#define R_SCORE_GNU_VTENTRY    13
+#define R_SCORE_GOT15          14
+#define R_SCORE_GOT_LO16       15
+#define R_SCORE_CALL15         16
+#define R_SCORE_GPREL32                17
+#define R_SCORE_REL32          18
+#define R_SCORE_DUMMY_HI16     19
+#define R_SCORE_IMM30          20
+#define R_SCORE_IMM32          21
+
+typedef unsigned long elf_greg_t;
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+typedef double elf_fpreg_t;
+typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
+
+#define elf_check_arch(x)      ((x)->e_machine == EM_SCORE7)
+
+/*
+ * These are used to set parameters in the core dumps.
+ */
+#define ELF_CLASS      ELFCLASS32
+
+/*
+ * These are used to set parameters in the core dumps.
+ */
+#define ELF_DATA       ELFDATA2LSB
+#define ELF_ARCH       EM_SCORE7
+
+#define SET_PERSONALITY(ex)                                    \
+do {                                                           \
+       set_personality(PER_LINUX);                             \
+} while (0)
+
+struct task_struct;
+struct pt_regs;
+
+#define USE_ELF_CORE_DUMP
+#define ELF_EXEC_PAGESIZE      PAGE_SIZE
+
+/* This yields a mask that user programs can use to figure out what
+   instruction set this cpu supports.  This could be done in userspace,
+   but it's not easy, and we've already done it here.  */
+
+#define ELF_HWCAP      (0)
+
+/* This yields a string that ld.so will use to load implementation
+   specific libraries for optimization.  This is more specific in
+   intent than poking at uname or /proc/cpuinfo.
+
+   For the moment, we have only optimizations for the Intel generations,
+   but that could change... */
+
+#define ELF_PLATFORM   (NULL)
+
+#define ELF_PLAT_INIT(_r, load_addr)                                   \
+do {                                                                   \
+       _r->regs[1] = _r->regs[2] = _r->regs[3] = _r->regs[4] = 0;      \
+       _r->regs[5] = _r->regs[6] = _r->regs[7] = _r->regs[8] = 0;      \
+       _r->regs[9] = _r->regs[10] = _r->regs[11] = _r->regs[12] = 0;   \
+       _r->regs[13] = _r->regs[14] = _r->regs[15] = _r->regs[16] = 0;  \
+       _r->regs[17] = _r->regs[18] = _r->regs[19] = _r->regs[20] = 0;  \
+       _r->regs[21] = _r->regs[22] = _r->regs[23] = _r->regs[24] = 0;  \
+       _r->regs[25] = _r->regs[26] = _r->regs[27] = _r->regs[28] = 0;  \
+       _r->regs[30] = _r->regs[31] = 0;                                \
+} while (0)
+
+/* This is the location that an ET_DYN program is loaded if exec'ed. 
Typical
+   use of this is to invoke "./ld.so someprog" to test out a new version 
of
+   the loader.  We need to make sure that it is out of the way of the 
program
+   that it will "exec", and that there is sufficient room for the brk. */
+
+#ifndef ELF_ET_DYN_BASE
+#define ELF_ET_DYN_BASE                (TASK_SIZE / 3 * 2)
+#endif
+
+#endif /* _ASM_SCORE_ELF_H */
diff --git a/arch/score/include/asm/emergency-restart.h 
b/arch/score/include/asm/emergency-restart.h
new file mode 100644
index 0000000..ca31e98
--- /dev/null
+++ b/arch/score/include/asm/emergency-restart.h
@@ -0,0 +1,6 @@
+#ifndef _ASM_SCORE_EMERGENCY_RESTART_H
+#define _ASM_SCORE_EMERGENCY_RESTART_H
+
+#include <asm-generic/emergency-restart.h>
+
+#endif /* _ASM_SCORE_EMERGENCY_RESTART_H */
diff --git a/arch/score/include/asm/errno.h 
b/arch/score/include/asm/errno.h
new file mode 100644
index 0000000..7cd3e1f
--- /dev/null
+++ b/arch/score/include/asm/errno.h
@@ -0,0 +1,7 @@
+#ifndef _ASM_SCORE_ERRNO_H
+#define _ASM_SCORE_ERRNO_H
+
+#include <asm-generic/errno.h>
+#define EMAXERRNO 1024
+
+#endif /* _ASM_SCORE_ERRNO_H */
-- 
1.6.2


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH 07/27] score: create head files elf.h emergency-restart.h errno.h
@ 2009-06-09  6:26 ` liqin.chen
  0 siblings, 0 replies; 16+ messages in thread
From: liqin.chen @ 2009-06-09  6:26 UTC (permalink / raw)
  To: linux-arch, linux-kernel; +Cc: Arnd Bergmann, Andrew Morton, torvalds

From 92de1d59c5c52dc1d64a9f6918b46afa4135afa3 Mon Sep 17 00:00:00 2001
From: Chen Liqin <liqin.chen@sunplusct.com>
Date: Tue, 9 Jun 2009 13:43:08 +0800



Signed-off-by: Chen Liqin <liqin.chen@sunplusct.com>
---
 arch/score/include/asm/elf.h               |   99 
++++++++++++++++++++++++++++
 arch/score/include/asm/emergency-restart.h |    6 ++
 arch/score/include/asm/errno.h             |    7 ++
 3 files changed, 112 insertions(+), 0 deletions(-)
 create mode 100644 arch/score/include/asm/elf.h
 create mode 100644 arch/score/include/asm/emergency-restart.h
 create mode 100644 arch/score/include/asm/errno.h

diff --git a/arch/score/include/asm/elf.h b/arch/score/include/asm/elf.h
new file mode 100644
index 0000000..8324363
--- /dev/null
+++ b/arch/score/include/asm/elf.h
@@ -0,0 +1,99 @@
+#ifndef _ASM_SCORE_ELF_H
+#define _ASM_SCORE_ELF_H
+
+/* ELF register definitions */
+#define ELF_NGREG      45
+#define ELF_NFPREG     33
+#define EM_SCORE7      135
+
+/* Relocation types. */
+#define R_SCORE_NONE           0
+#define R_SCORE_HI16           1
+#define R_SCORE_LO16           2
+#define R_SCORE_BCMP           3
+#define R_SCORE_24             4
+#define R_SCORE_PC19           5
+#define R_SCORE16_11           6
+#define R_SCORE16_PC8          7
+#define R_SCORE_ABS32          8
+#define R_SCORE_ABS16          9
+#define R_SCORE_DUMMY2         10
+#define R_SCORE_GP15           11
+#define R_SCORE_GNU_VTINHERIT  12
+#define R_SCORE_GNU_VTENTRY    13
+#define R_SCORE_GOT15          14
+#define R_SCORE_GOT_LO16       15
+#define R_SCORE_CALL15         16
+#define R_SCORE_GPREL32                17
+#define R_SCORE_REL32          18
+#define R_SCORE_DUMMY_HI16     19
+#define R_SCORE_IMM30          20
+#define R_SCORE_IMM32          21
+
+typedef unsigned long elf_greg_t;
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+typedef double elf_fpreg_t;
+typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
+
+#define elf_check_arch(x)      ((x)->e_machine == EM_SCORE7)
+
+/*
+ * These are used to set parameters in the core dumps.
+ */
+#define ELF_CLASS      ELFCLASS32
+
+/*
+ * These are used to set parameters in the core dumps.
+ */
+#define ELF_DATA       ELFDATA2LSB
+#define ELF_ARCH       EM_SCORE7
+
+#define SET_PERSONALITY(ex)                                    \
+do {                                                           \
+       set_personality(PER_LINUX);                             \
+} while (0)
+
+struct task_struct;
+struct pt_regs;
+
+#define USE_ELF_CORE_DUMP
+#define ELF_EXEC_PAGESIZE      PAGE_SIZE
+
+/* This yields a mask that user programs can use to figure out what
+   instruction set this cpu supports.  This could be done in userspace,
+   but it's not easy, and we've already done it here.  */
+
+#define ELF_HWCAP      (0)
+
+/* This yields a string that ld.so will use to load implementation
+   specific libraries for optimization.  This is more specific in
+   intent than poking at uname or /proc/cpuinfo.
+
+   For the moment, we have only optimizations for the Intel generations,
+   but that could change... */
+
+#define ELF_PLATFORM   (NULL)
+
+#define ELF_PLAT_INIT(_r, load_addr)                                   \
+do {                                                                   \
+       _r->regs[1] = _r->regs[2] = _r->regs[3] = _r->regs[4] = 0;      \
+       _r->regs[5] = _r->regs[6] = _r->regs[7] = _r->regs[8] = 0;      \
+       _r->regs[9] = _r->regs[10] = _r->regs[11] = _r->regs[12] = 0;   \
+       _r->regs[13] = _r->regs[14] = _r->regs[15] = _r->regs[16] = 0;  \
+       _r->regs[17] = _r->regs[18] = _r->regs[19] = _r->regs[20] = 0;  \
+       _r->regs[21] = _r->regs[22] = _r->regs[23] = _r->regs[24] = 0;  \
+       _r->regs[25] = _r->regs[26] = _r->regs[27] = _r->regs[28] = 0;  \
+       _r->regs[30] = _r->regs[31] = 0;                                \
+} while (0)
+
+/* This is the location that an ET_DYN program is loaded if exec'ed. 
Typical
+   use of this is to invoke "./ld.so someprog" to test out a new version 
of
+   the loader.  We need to make sure that it is out of the way of the 
program
+   that it will "exec", and that there is sufficient room for the brk. */
+
+#ifndef ELF_ET_DYN_BASE
+#define ELF_ET_DYN_BASE                (TASK_SIZE / 3 * 2)
+#endif
+
+#endif /* _ASM_SCORE_ELF_H */
diff --git a/arch/score/include/asm/emergency-restart.h 
b/arch/score/include/asm/emergency-restart.h
new file mode 100644
index 0000000..ca31e98
--- /dev/null
+++ b/arch/score/include/asm/emergency-restart.h
@@ -0,0 +1,6 @@
+#ifndef _ASM_SCORE_EMERGENCY_RESTART_H
+#define _ASM_SCORE_EMERGENCY_RESTART_H
+
+#include <asm-generic/emergency-restart.h>
+
+#endif /* _ASM_SCORE_EMERGENCY_RESTART_H */
diff --git a/arch/score/include/asm/errno.h 
b/arch/score/include/asm/errno.h
new file mode 100644
index 0000000..7cd3e1f
--- /dev/null
+++ b/arch/score/include/asm/errno.h
@@ -0,0 +1,7 @@
+#ifndef _ASM_SCORE_ERRNO_H
+#define _ASM_SCORE_ERRNO_H
+
+#include <asm-generic/errno.h>
+#define EMAXERRNO 1024
+
+#endif /* _ASM_SCORE_ERRNO_H */
-- 
1.6.2

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH 07/27] score: create head files elf.h emergency-restart.h errno.h
  2009-06-09  6:26 ` liqin.chen
  (?)
@ 2009-06-09 17:20 ` Arnd Bergmann
  2009-06-13  6:39     ` liqin.chen
  -1 siblings, 1 reply; 16+ messages in thread
From: Arnd Bergmann @ 2009-06-09 17:20 UTC (permalink / raw)
  To: liqin.chen; +Cc: linux-arch, linux-kernel, Andrew Morton, torvalds

On Tuesday 09 June 2009, liqin.chen@sunplusct.com wrote:
> --- /dev/null
> +++ b/arch/score/include/asm/errno.h
> @@ -0,0 +1,7 @@
> +#ifndef _ASM_SCORE_ERRNO_H
> +#define _ASM_SCORE_ERRNO_H
> +
> +#include <asm-generic/errno.h>
> +#define EMAXERRNO 1024
> +
> +#endif /* _ASM_SCORE_ERRNO_H */

EMAXERRNO is mips specific right now. Do you actually need it somewhere?

	Arnd <><

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 07/27] score: create head files elf.h emergency-restart.h errno.h
  2009-06-09 17:20 ` Arnd Bergmann
@ 2009-06-13  6:39     ` liqin.chen
  0 siblings, 0 replies; 16+ messages in thread
From: liqin.chen @ 2009-06-13  6:39 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Andrew Morton, linux-arch, linux-kernel, torvalds

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="GB2312", Size: 705 bytes --]

Arnd Bergmann <arnd@arndb.de> дÓÚ 2009-06-10 01:20:09:

> On Tuesday 09 June 2009, liqin.chen@sunplusct.com wrote:
> > --- /dev/null
> > +++ b/arch/score/include/asm/errno.h
> > @@ -0,0 +1,7 @@
> > +#ifndef _ASM_SCORE_ERRNO_H
> > +#define _ASM_SCORE_ERRNO_H
> > +
> > +#include <asm-generic/errno.h>
> > +#define EMAXERRNO 1024
> > +
> > +#endif /* _ASM_SCORE_ERRNO_H */
> 
> EMAXERRNO is mips specific right now. Do you actually need it somewhere?
> 

Yes, I used it in entry.S, maybe I could remove this define latter.

Best Regards
Liqin
--
ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 07/27] score: create head files elf.h emergency-restart.h errno.h
@ 2009-06-13  6:39     ` liqin.chen
  0 siblings, 0 replies; 16+ messages in thread
From: liqin.chen @ 2009-06-13  6:39 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Andrew Morton, linux-arch, linux-kernel, torvalds

Arnd Bergmann <arnd@arndb.de> 写于 2009-06-10 01:20:09:

> On Tuesday 09 June 2009, liqin.chen@sunplusct.com wrote:
> > --- /dev/null
> > +++ b/arch/score/include/asm/errno.h
> > @@ -0,0 +1,7 @@
> > +#ifndef _ASM_SCORE_ERRNO_H
> > +#define _ASM_SCORE_ERRNO_H
> > +
> > +#include <asm-generic/errno.h>
> > +#define EMAXERRNO 1024
> > +
> > +#endif /* _ASM_SCORE_ERRNO_H */
> 
> EMAXERRNO is mips specific right now. Do you actually need it somewhere?
> 

Yes, I used it in entry.S, maybe I could remove this define latter.

Best Regards
Liqin
--

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 07/27] score: create head files elf.h emergency-restart.h errno.h
  2009-06-13  6:39     ` liqin.chen
  (?)
@ 2009-06-13 22:23     ` Arnd Bergmann
  2009-06-15 12:11         ` liqin.chen
  -1 siblings, 1 reply; 16+ messages in thread
From: Arnd Bergmann @ 2009-06-13 22:23 UTC (permalink / raw)
  To: liqin.chen; +Cc: Andrew Morton, linux-arch, linux-kernel, torvalds

On Saturday 13 June 2009, liqin.chen@sunplusct.com wrote:
> > 
> > EMAXERRNO is mips specific right now. Do you actually need it somewhere?
> > 
> 
> Yes, I used it in entry.S, maybe I could remove this define latter.
> 

Ok. Note that the maximum error number that is supposed to get sent back
to user space is 511. Most architectures check the return value of the
system call to be between -4095 and zero upon entering user space.
Checking it in the kernel gives you the chance to override the
error status from a system call with force_successful_syscall_return().

If that is your intention, you should probably leave the definition in there.
Powerpc uses _LAST_ERRNO for the same purpose, which is somewhat inconsistent
with mips and also uses a different value to compare against.

	Arnd <><

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 07/27] score: create head files elf.h emergency-restart.h errno.h
  2009-06-13 22:23     ` Arnd Bergmann
@ 2009-06-15 12:11         ` liqin.chen
  0 siblings, 0 replies; 16+ messages in thread
From: liqin.chen @ 2009-06-15 12:11 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Andrew Morton, linux-arch, linux-kernel, torvalds

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="GB2312", Size: 1170 bytes --]

Arnd Bergmann <arnd@arndb.de> дÓÚ 2009-06-14 06:23:06:

> On Saturday 13 June 2009, liqin.chen@sunplusct.com wrote:
> > > 
> > > EMAXERRNO is mips specific right now. Do you actually need it 
somewhere?
> > > 
> > 
> > Yes, I used it in entry.S, maybe I could remove this define latter.
> > 
> 
> Ok. Note that the maximum error number that is supposed to get sent back
> to user space is 511. Most architectures check the return value of the
> system call to be between -4095 and zero upon entering user space.
> Checking it in the kernel gives you the chance to override the
> error status from a system call with force_successful_syscall_return().
> 
> If that is your intention, you should probably leave the definition in 
there.
> Powerpc uses _LAST_ERRNO for the same purpose, which is somewhat 
inconsistent
> with mips and also uses a different value to compare against.
> 

Maybe I can don't use EMAXERRNO in score code. But I think define a 
maximum error number in asm-generic/errno.h is better.

ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH 07/27] score: create head files elf.h emergency-restart.h errno.h
@ 2009-06-15 12:11         ` liqin.chen
  0 siblings, 0 replies; 16+ messages in thread
From: liqin.chen @ 2009-06-15 12:11 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: Andrew Morton, linux-arch, linux-kernel, torvalds

Arnd Bergmann <arnd@arndb.de> 写于 2009-06-14 06:23:06:

> On Saturday 13 June 2009, liqin.chen@sunplusct.com wrote:
> > > 
> > > EMAXERRNO is mips specific right now. Do you actually need it 
somewhere?
> > > 
> > 
> > Yes, I used it in entry.S, maybe I could remove this define latter.
> > 
> 
> Ok. Note that the maximum error number that is supposed to get sent back
> to user space is 511. Most architectures check the return value of the
> system call to be between -4095 and zero upon entering user space.
> Checking it in the kernel gives you the chance to override the
> error status from a system call with force_successful_syscall_return().
> 
> If that is your intention, you should probably leave the definition in 
there.
> Powerpc uses _LAST_ERRNO for the same purpose, which is somewhat 
inconsistent
> with mips and also uses a different value to compare against.
> 

Maybe I can don't use EMAXERRNO in score code. But I think define a 
maximum error number in asm-generic/errno.h is better.


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH] asm-generic: add EMAXERRNO
  2009-06-15 12:11         ` liqin.chen
  (?)
@ 2009-06-15 13:30         ` Arnd Bergmann
  2009-06-15 13:31           ` Matthew Wilcox
  2009-06-15 13:33             ` liqin.chen
  -1 siblings, 2 replies; 16+ messages in thread
From: Arnd Bergmann @ 2009-06-15 13:30 UTC (permalink / raw)
  To: liqin.chen; +Cc: Andrew Morton, linux-arch, linux-kernel, torvalds

Some architectures want to flag error returns from a syscall based on
the return value. The range from zero to -511 is for errors that
we can return to user space, so add a #define for this to
include/asm-generic/errno.h.

Reported-by: Chen Liquin <liqin.chen@sunplusct.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/asm-generic/errno.h |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

On Monday 15 June 2009, liqin.chen@sunplusct.com wrote:

> Maybe I can don't use EMAXERRNO in score code. But I think define a 
> maximum error number in asm-generic/errno.h is better.
> 

How about this one?

diff --git a/include/asm-generic/errno.h b/include/asm-generic/errno.h
index e8852c0..16bb31d 100644
--- a/include/asm-generic/errno.h
+++ b/include/asm-generic/errno.h
@@ -106,4 +106,8 @@
 #define	EOWNERDEAD	130	/* Owner died */
 #define	ENOTRECOVERABLE	131	/* State not recoverable */
 
+#ifdef __KERNEL__
+#define	EMAXERRNO	511	/* maximum errno value we return to user */
+#endif
+
 #endif
-- 
1.6.3.1

 


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH] asm-generic: add EMAXERRNO
  2009-06-15 13:30         ` [PATCH] asm-generic: add EMAXERRNO Arnd Bergmann
@ 2009-06-15 13:31           ` Matthew Wilcox
  2009-06-15 14:02             ` Arnd Bergmann
  2009-06-15 13:33             ` liqin.chen
  1 sibling, 1 reply; 16+ messages in thread
From: Matthew Wilcox @ 2009-06-15 13:31 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: liqin.chen, Andrew Morton, linux-arch, linux-kernel, torvalds

On Mon, Jun 15, 2009 at 03:30:09PM +0200, Arnd Bergmann wrote:
> Some architectures want to flag error returns from a syscall based on
> the return value. The range from zero to -511 is for errors that
> we can return to user space, so add a #define for this to
> include/asm-generic/errno.h.

I thought we could return anything up to -4095.

-- 
Matthew Wilcox				Intel Open Source Technology Centre
"Bill, look, we understand that you're interested in selling us this
operating system, but compare it to ours.  We can't possibly take such
a retrograde step."

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] asm-generic: add EMAXERRNO
  2009-06-15 13:30         ` [PATCH] asm-generic: add EMAXERRNO Arnd Bergmann
@ 2009-06-15 13:33             ` liqin.chen
  2009-06-15 13:33             ` liqin.chen
  1 sibling, 0 replies; 16+ messages in thread
From: liqin.chen @ 2009-06-15 13:33 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Andrew Morton, linux-arch, linux-arch-owner, linux-kernel, torvalds

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="GB2312", Size: 1349 bytes --]

linux-arch-owner@vger.kernel.org дÓÚ 2009-06-15 21:30:09:

> Some architectures want to flag error returns from a syscall based on
> the return value. The range from zero to -511 is for errors that
> we can return to user space, so add a #define for this to
> include/asm-generic/errno.h.
> 
> Reported-by: Chen Liquin <liqin.chen@sunplusct.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  include/asm-generic/errno.h |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
> 
> On Monday 15 June 2009, liqin.chen@sunplusct.com wrote:
> 
> > Maybe I can don't use EMAXERRNO in score code. But I think define a 
> > maximum error number in asm-generic/errno.h is better.
> > 
> 
> How about this one?
> 
> diff --git a/include/asm-generic/errno.h b/include/asm-generic/errno.h
> index e8852c0..16bb31d 100644
> --- a/include/asm-generic/errno.h
> +++ b/include/asm-generic/errno.h
> @@ -106,4 +106,8 @@
>  #define   EOWNERDEAD   130   /* Owner died */
>  #define   ENOTRECOVERABLE   131   /* State not recoverable */
> 
> +#ifdef __KERNEL__
> +#define   EMAXERRNO   511   /* maximum errno value we return to user */
> +#endif
> +
>  #endif
> -- 
OK, it is easy to use.
ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] asm-generic: add EMAXERRNO
@ 2009-06-15 13:33             ` liqin.chen
  0 siblings, 0 replies; 16+ messages in thread
From: liqin.chen @ 2009-06-15 13:33 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Andrew Morton, linux-arch, linux-arch-owner, linux-kernel, torvalds

linux-arch-owner@vger.kernel.org 写于 2009-06-15 21:30:09:

> Some architectures want to flag error returns from a syscall based on
> the return value. The range from zero to -511 is for errors that
> we can return to user space, so add a #define for this to
> include/asm-generic/errno.h.
> 
> Reported-by: Chen Liquin <liqin.chen@sunplusct.com>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  include/asm-generic/errno.h |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
> 
> On Monday 15 June 2009, liqin.chen@sunplusct.com wrote:
> 
> > Maybe I can don't use EMAXERRNO in score code. But I think define a 
> > maximum error number in asm-generic/errno.h is better.
> > 
> 
> How about this one?
> 
> diff --git a/include/asm-generic/errno.h b/include/asm-generic/errno.h
> index e8852c0..16bb31d 100644
> --- a/include/asm-generic/errno.h
> +++ b/include/asm-generic/errno.h
> @@ -106,4 +106,8 @@
>  #define   EOWNERDEAD   130   /* Owner died */
>  #define   ENOTRECOVERABLE   131   /* State not recoverable */
> 
> +#ifdef __KERNEL__
> +#define   EMAXERRNO   511   /* maximum errno value we return to user */
> +#endif
> +
>  #endif
> -- 
OK, it is easy to use.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] asm-generic: add EMAXERRNO
  2009-06-15 13:31           ` Matthew Wilcox
@ 2009-06-15 14:02             ` Arnd Bergmann
  2009-06-16  3:04                 ` liqin.chen
  0 siblings, 1 reply; 16+ messages in thread
From: Arnd Bergmann @ 2009-06-15 14:02 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: liqin.chen, Andrew Morton, linux-arch, linux-kernel, torvalds

On Monday 15 June 2009, Matthew Wilcox wrote:
> On Mon, Jun 15, 2009 at 03:30:09PM +0200, Arnd Bergmann wrote:
> > Some architectures want to flag error returns from a syscall based on
> > the return value. The range from zero to -511 is for errors that
> > we can return to user space, so add a #define for this to
> > include/asm-generic/errno.h.
> 
> I thought we could return anything up to -4095.

Sort of, yes. Internally to the kernel, we use anything up to 4095,
that's e.g. IS_ERR_VALUE checks for.

Error numbers from 512 to 4095 are internal and should never be seen
by the user.

In reality, it probably does not matter at all because we know what
error numbers we use. Now that you pointed me to include/linux/err.h,
that already defines MAX_ERRNO.

Liqin, I think I'd prefer to just drop my patch again, and you can
use MAX_ERRNO, which is defined in err.h.

	Arnd <><

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] asm-generic: add EMAXERRNO
  2009-06-15 14:02             ` Arnd Bergmann
@ 2009-06-16  3:04                 ` liqin.chen
  0 siblings, 0 replies; 16+ messages in thread
From: liqin.chen @ 2009-06-16  3:04 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Andrew Morton, linux-arch, linux-arch-owner, linux-kernel,
	liqin.chen, Matthew Wilcox, torvalds

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="GB2312", Size: 1304 bytes --]

linux-arch-owner@vger.kernel.org дÓÚ 2009-06-15 22:02:42:

> On Monday 15 June 2009, Matthew Wilcox wrote:
> > On Mon, Jun 15, 2009 at 03:30:09PM +0200, Arnd Bergmann wrote:
> > > Some architectures want to flag error returns from a syscall based 
on
> > > the return value. The range from zero to -511 is for errors that
> > > we can return to user space, so add a #define for this to
> > > include/asm-generic/errno.h.
> > 
> > I thought we could return anything up to -4095.
> 
> Sort of, yes. Internally to the kernel, we use anything up to 4095,
> that's e.g. IS_ERR_VALUE checks for.
> 
> Error numbers from 512 to 4095 are internal and should never be seen
> by the user.
> 
> In reality, it probably does not matter at all because we know what
> error numbers we use. Now that you pointed me to include/linux/err.h,
> that already defines MAX_ERRNO.
> 
> Liqin, I think I'd prefer to just drop my patch again, and you can
> use MAX_ERRNO, which is defined in err.h.
> 
OK.
But I think move MAX_ERRNO define from include/linux/err.h to 
include/asm-generic/errno.h will be more clear. And no harm to
include/linux/err.h file.

liqin
--
ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] asm-generic: add EMAXERRNO
@ 2009-06-16  3:04                 ` liqin.chen
  0 siblings, 0 replies; 16+ messages in thread
From: liqin.chen @ 2009-06-16  3:04 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Andrew Morton, linux-arch, linux-arch-owner, linux-kernel,
	liqin.chen, Matthew Wilcox, torvalds

linux-arch-owner@vger.kernel.org 写于 2009-06-15 22:02:42:

> On Monday 15 June 2009, Matthew Wilcox wrote:
> > On Mon, Jun 15, 2009 at 03:30:09PM +0200, Arnd Bergmann wrote:
> > > Some architectures want to flag error returns from a syscall based 
on
> > > the return value. The range from zero to -511 is for errors that
> > > we can return to user space, so add a #define for this to
> > > include/asm-generic/errno.h.
> > 
> > I thought we could return anything up to -4095.
> 
> Sort of, yes. Internally to the kernel, we use anything up to 4095,
> that's e.g. IS_ERR_VALUE checks for.
> 
> Error numbers from 512 to 4095 are internal and should never be seen
> by the user.
> 
> In reality, it probably does not matter at all because we know what
> error numbers we use. Now that you pointed me to include/linux/err.h,
> that already defines MAX_ERRNO.
> 
> Liqin, I think I'd prefer to just drop my patch again, and you can
> use MAX_ERRNO, which is defined in err.h.
> 
OK.
But I think move MAX_ERRNO define from include/linux/err.h to 
include/asm-generic/errno.h will be more clear. And no harm to
include/linux/err.h file.

liqin
--

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH] asm-generic: add EMAXERRNO
  2009-06-16  3:04                 ` liqin.chen
  (?)
@ 2009-06-16 14:13                 ` Arnd Bergmann
  -1 siblings, 0 replies; 16+ messages in thread
From: Arnd Bergmann @ 2009-06-16 14:13 UTC (permalink / raw)
  To: liqin.chen, linux-kernel
  Cc: Andrew Morton, linux-arch, Matthew Wilcox, torvalds

On Tuesday 16 June 2009, liqin.chen@sunplusct.com wrote:
> But I think move MAX_ERRNO define from include/linux/err.h to 
> include/asm-generic/errno.h will be more clear. And no harm to
> include/linux/err.h file.

Don't know. I think err.h makes more sense because that is
for kernel-internal users like the much more common IS_ERR(),
while include/asm-generic/errno.h is strictly for kernel/user
interfaces.

	Arnd <><

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2009-06-16 14:13 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-06-09  6:26 [PATCH 07/27] score: create head files elf.h emergency-restart.h errno.h liqin.chen
2009-06-09  6:26 ` liqin.chen
2009-06-09 17:20 ` Arnd Bergmann
2009-06-13  6:39   ` liqin.chen
2009-06-13  6:39     ` liqin.chen
2009-06-13 22:23     ` Arnd Bergmann
2009-06-15 12:11       ` liqin.chen
2009-06-15 12:11         ` liqin.chen
2009-06-15 13:30         ` [PATCH] asm-generic: add EMAXERRNO Arnd Bergmann
2009-06-15 13:31           ` Matthew Wilcox
2009-06-15 14:02             ` Arnd Bergmann
2009-06-16  3:04               ` liqin.chen
2009-06-16  3:04                 ` liqin.chen
2009-06-16 14:13                 ` Arnd Bergmann
2009-06-15 13:33           ` liqin.chen
2009-06-15 13:33             ` liqin.chen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.