Open MPI logo

Hardware Locality Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Hardware Locality Development mailing list

Subject: Re: [hwloc-devel] last API possible changes
From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2009-09-21 10:04:21


On Sep 21, 2009, at 9:40 AM, Samuel Thibault wrote:

> > So it should be ok to use AC_C_RESTRICT then, right?
>
> But then we can't expose restrict in installed headers since we don't
> know _whether_ and how it is defined.
>

Understood, but is that really our problem? "restrict" is part of the
C language, so portable applications should be able to handle it in
headers that they import, right?

Alternatively, this whole block in cpuset-bits.h could be wrapped in
an "#ifndef restrict", right?:

#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
# define __hwloc_restrict __restrict
#else
# if defined restrict || __STDC_VERSION__ >= 199901L
# define __hwloc_restrict restrict
# else
# define __hwloc_restrict
# endif
#endif

> > So I'd call it a "feature" if hwloc defines "restrict" to one thing
> > and then some other header file defines it to another. :-)
>
> ?
> That would make applications get a warning just because they are for
> instance using at the same time two libraries which both define
> restrict
> to different things.
>

Yes -- and that's a Bad Thing. The differences between those two
libraries should be resolved, lest unexpected things occur because of
a mismatch between what the header exports (and might be redefined)
and what the compiled back-end library expects, no?

> > But then again, Autoconf has a *very strict* policy that generated
> > config.h files are supposed to be private to the application that it
> > is building. OMPI, for example, does *not* have mpi.h include our
> > generated config.h. Instead, our mpi.h has a small number of things
> > set from configure that are required (e.g., size of bool, etc.).
>
> That's why we have both autoheader-generated
> hwloc/include/private/config.h.in and manually-written
> hwloc/include/hwloc/config.h.in
>

Um; right. I should have known that. :-)

-- 
Jeff Squyres
jsquyres_at_[hidden]