diff options
Diffstat (limited to 'sys-utils/pivot_root.c')
-rw-r--r-- | sys-utils/pivot_root.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/sys-utils/pivot_root.c b/sys-utils/pivot_root.c new file mode 100644 index 000000000..ba2dbbed0 --- /dev/null +++ b/sys-utils/pivot_root.c @@ -0,0 +1,32 @@ +/* pivot_root.c - Change the root file system */ + +/* Written 2000 by Werner Almesberger */ + +#include <stdio.h> +#include <sys/syscall.h> +#include <unistd.h> + +#define pivot_root(new_root,put_old) syscall(SYS_pivot_root,new_root,put_old) + +#if 0 +/* + * With kernelheaders 2.3.41 or later, and ancient libc, try the following. + */ +#include <errno.h> +#include <linux/unistd.h> +static +_syscall2(int,pivot_root,const char *,new_root,const char *,put_old) +#endif + +int main(int argc, const char **argv) +{ + if (argc != 3) { + fprintf(stderr, "usage: %s new_root put_old\n", argv[0]); + return 1; + } + if (pivot_root(argv[1],argv[2]) < 0) { + perror("pivot_root"); + return 1; + } + return 0; +} |