mirror of
https://github.com/NixOS/nix.git
synced 2025-11-09 03:56:01 +01:00
This is the utility changes from #9968, which were easier to rebase first. I (@Ericson2314) didn't write this code; I just rebased it. Co-Authored-By: Artemis Tosini <me@artem.ist> Co-Authored-By: Audrey Dutcher <audrey@rhelmot.io>
35 lines
692 B
C++
35 lines
692 B
C++
#pragma once
|
|
///@file
|
|
|
|
#include <optional>
|
|
|
|
#include "nix/util/types.hh"
|
|
|
|
namespace nix {
|
|
|
|
/**
|
|
* Save the current mount namespace. Ignored if called more than
|
|
* once.
|
|
*/
|
|
void saveMountNamespace();
|
|
|
|
/**
|
|
* Restore the mount namespace saved by saveMountNamespace(). Ignored
|
|
* if saveMountNamespace() was never called.
|
|
*/
|
|
void restoreMountNamespace();
|
|
|
|
/**
|
|
* Cause this thread to try to not share any FS attributes with the main
|
|
* thread, because this causes setns() in restoreMountNamespace() to
|
|
* fail.
|
|
*
|
|
* This is best effort -- EPERM and ENOSYS failures are just ignored.
|
|
*/
|
|
void tryUnshareFilesystem();
|
|
|
|
bool userNamespacesSupported();
|
|
|
|
bool mountAndPidNamespacesSupported();
|
|
|
|
}
|