public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* vdso feature requests from the Go people
@ 2014-06-13  4:36 Andy Lutomirski
  2014-06-13  4:46 ` Andy Lutomirski
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Andy Lutomirski @ 2014-06-13  4:36 UTC (permalink / raw)
  To: linux-kernel@vger.kernel.org, X86 ML, H. Peter Anvin, Russ Cox,
	Ian Taylor

I was talking to some of the Go people, and they have a couple of IMO
reasonable feature requests.

1. Parsing the vDSO is a PITA.  What if we bundled the reference
parser inside the vdso?  Concretely, we could have AT_VDSO_FINDENTRY
point to a function like:

void *vdso_find_entry(const char *name, const char *version)

Then things like Go and maybe even musl (and klibc?) could just call
that function.  And we'd never have to worry about maintaining
compatibility with more and more weird vdso parsers.

Implementing this could be as simple as shoving parse_vdso.c into the
vdso, although vdso2c could help and allow a really simple in-vdso
implementation.

2. Go uses a segmented stack, and the vdso is quite unfriendly for
segmented stack.  If we can get compiler support, is there a
reasonable way that we could advertise the maximum stack usage of each
vdso entry point?


If we were to implement both, maybe we'd actually want to provide
something like:

struct vdso_entry {
  unsigned long vdso_entry_struct_size;  /* so we can add fields later on */
  void *func;
  unsigned int max_stack;  /* zero if not known */
};

vdso_entry *vdso_find_entry(const char *name, const char *version);

AT_VDSO_FINDENTRY would be set to &vdso_find_entry.

This shouldn't even break CRIU :)

--Andy

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

end of thread, other threads:[~2014-06-15 10:16 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-06-13  4:36 vdso feature requests from the Go people Andy Lutomirski
2014-06-13  4:46 ` Andy Lutomirski
2014-06-13  5:15 ` H. Peter Anvin
2014-06-13  5:23   ` Andy Lutomirski
2014-06-13  5:39     ` H. Peter Anvin
2014-06-15  9:39     ` Stijn Volckaert
2014-06-13  5:39 ` H. Peter Anvin
2014-06-13 15:34   ` Andy Lutomirski
2014-06-13 16:03     ` H. Peter Anvin
2014-06-15 10:15     ` Stijn Volckaert

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox