On Tue, Mar 22, 2016 at 12:21 PM, Barret Rhoden <[email protected]>
wrote:

> On 2016-03-22 at 12:10 Dan Cross <[email protected]> wrote:
> > Added a 'sched_getcpu()' routine that returns the
> > current pcore ID, as an analog to the routine of
> > the same name in Linux. Rebuild your toolchain.
> >
> > Signed-off-by: Dan Cross <[email protected]>
> > ---
> >  .../glibc-2.19-akaros/sysdeps/akaros/Makefile      |  5 +++++
> >  .../sysdeps/akaros/sched_getcpu.c                  | 24
> > ++++++++++++++++++++++ 2 files changed, 29 insertions(+)
> >  create mode 100644
> > tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/sched_getcpu.c
> >
> > diff --git
> > a/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/Makefile
> > b/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/Makefile
> > index fa44dc5..8dd52b0 100644 ---
> > a/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/Makefile
> > +++
> > b/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/Makefile
> > @@ -42,6 +42,11 @@ sysdep_routines += convS2M endif sysdep_headers +=
> > fcall.h +# Scheduling related routines.
> > +ifeq ($(subdir),stdlib)
> > +sysdep_routines += sched_getcpu
> > +endif
> > +
>
> I haven't tried building this yet, but have you been able to link to
> sched_getcpu?  Usually you need to add it to Versions too.  Linux does:
>
> glibc-2.19/sysdeps/unix/sysv/linux/Versions:    epoll_pwait;
>                             sync_file_range; sched_getcpu;
>
> Basically, without something in Versions, glibc can use it internally
> but external programs can't link against it.
>

Interesting; we're already linking against it. But a minimal test program
fails, so I'm updating it. I suspect this is a local customization that we
need to undo.

Anyway, Versions updated.

>
> a/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/sched_getcpu.c
>
> > @@ -0,0 +1,24 @@ +/* Copyright (C) 1991, 1995, 1996, 1997 Free
> > Software Foundation, Inc.
> > +   This file is part of the GNU C Library.
>
> Minor thing, but since you wrote this, you don't need to use the FSF
> CR header.  I've been using:
>
> /* Copyright (c) 2016 Google Inc.
>

Done.

> +#include <ros/procinfo.h>
> > +
> > +int sched_getcpu(void)
> > +{
> > +     return __procinfo.vcoremap[__get_vcoreid()].pcoreid;
> > +}
>
> Try using vcore_id() instead of __get_vcoreid().  #include
> <parlib/vcore.h> for it.  That will use TLS instead of a syscall to get
> the vcoreid.
>

Done.

        - Dan C.

-- 
You received this message because you are subscribed to the Google Groups 
"Akaros" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to