/* * Copyright (c) 2017-2019, SyLabs, Inc. All rights reserved. * Copyright (c) 2017, SingularityWare, LLC. All rights reserved. * * See the COPYRIGHT.md file at the top-level directory of this distribution and at * https://github.com/sylabs/singularity/blob/master/COPYRIGHT.md. * * This file is part of the Singularity Linux container project. It is subject to the license * terms in the LICENSE.md file found in the top-level directory of this distribution and * at https://github.com/sylabs/singularity/blob/master/LICENSE.md. No part * of Singularity, including this file, may be copied, modified, propagated, or distributed * except according to the terms contained in the LICENSE.md file. * */ #define _GNU_SOURCE #include #include #include #include "include/message.h" #if defined (SINGULARITY_NO_SETNS) && defined (SINGULARITY_SETNS_SYSCALL) #include "include/setns.h" int setns(int fd, int nstype) { singularity_message(DEBUG, "Using syscall() wrapped __NR_setns\n"); return syscall(__NR_setns, fd, nstype); } #elif defined (SINGULARITY_NO_SETNS) && !defined (SINGULARITY_SETNS_SYSCALL) int setns(int fd, int nstype) { (void)fd; (void)nstype; singularity_message(VERBOSE, "setns() not supported at compile time by kernel at time of building\n"); errno = ENOSYS; return -1; } #endif /* SINGULARITY_NO_SETNS && SINGULARITY_SETNS_SYSCALL */