Hi, @bmahler, thank you so much for review it! As the email I sent
to @idownes and @chenzhiwei, we could drop that safely by adding

```
#include <linux/unistd.h>
```

from @RobinDong's patch.

Because this header file comes from kernel headers and it include machine
specific syscall numbers no matter which CPU architecture used.

On the other hand, we can not use

```
#include <unistd.h>
#include <sys/syscall.h>
```

as the source of the syscall numbers because these header files come from
glibc.

```
$ rpm -qf /usr/include/sys/syscall.h
glibc-headers-2.12-1.149.el6_6.5.x86_64
$ rpm -qf /usr/include/unistd.h
glibc-headers-2.12-1.149.el6_6.5.x86_64
```

If use them, would fall into the problem @idownes mentioned in
`linux/ns.hpp` (Old glibc library and new kernel)

```
#ifdef SYS_setns
  int ret = ::syscall(SYS_setns, fd.get(), nstype.get());
#elif __x86_64__
  // A workaround for those hosts that have an old glibc (older than
  // 2.14) but have a new kernel. The magic number '308' here is the
  // syscall number for 'setns' on x86_64 architecture.
  int ret = ::syscall(308, fd.get(), nstype.get());
#else
#error "setns is not available"
#endif
```

I verify `#include <linux/unistd.h>` works on CentOS 6.5, CentOS 7.2 Ubuntu
14.04 with X86 and Debian jessie with ARM. In code level, I verify it works
on all architectures I know [
http://lxr.free-electrons.com/ident?v=3.8;i=__NR_pivot_root] .

@BingLi would like to port Mesos works on System Z, and he blocked by
`__NR_pivot_root ` (https://issues.apache.org/jira/browse/MESOS-5242) as
well. As he commented in ticket, `#include <linux/unistd.h>` could solve
the problem as well.


Appendix[The verify program]:

```
#include <linux/unistd.h>
#include <iostream>

int main(int argc, char const *argv[])
{
  std::cout << __NR_pivot_root << std::endl;
  return 0;
}
```


On Wed, Apr 27, 2016 at 3:24 AM, Benjamin Mahler <bmah...@apache.org> wrote:

> Looks like Vinod shipped MESOS-5121. I just shipped MESOS-5263 following
> the same approach.
>
> Haosdent mentioned some cleanups are possible here so please keep us
> posted if the cleanups are available!
>
> On Sun, Apr 24, 2016 at 1:34 PM, Tomek Janiszewski <jani...@gmail.com>
> wrote:
>
>> Hi,
>>
>> Can anyone shepherd https://issues.apache.org/jira/browse/MESOS-5263?
>> It's similar to https://issues.apache.org/jira/browse/MESOS-5121 and
>> could
>> be resolved in the same manner or it could be done in a way that'll
>> support
>> other platforms as well.
>>
>> Thanks
>> Tomek
>>
>
>


-- 
Best Regards,
Haosdent Huang

Reply via email to