diff options
author | H. Peter Anvin <hpa@zytor.com> | 2006-06-22 10:53:03 -0700 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2006-06-22 10:53:03 -0700 |
commit | 200d541cc5258bf7f746da61de4a37b16f7ff283 (patch) | |
tree | ff70e4cbeef861b9c71622dedeba7f8e09d2e558 | |
parent | bc02ec1dee2fa2f86815abbd0601ef0d4371ac0d (diff) | |
parent | 9986d2e5e4c8ee20a9ccc2ec3df6805df4897ebb (diff) | |
download | klibc-200d541cc5258bf7f746da61de4a37b16f7ff283.tar.gz |
Merge with git+ssh://master.kernel.org/pub/scm/libs/klibc/klibc.gitklibc-1.4.3
-rw-r--r-- | usr/klibc/arch/x86_64/MCONFIG | 4 | ||||
-rw-r--r-- | usr/utils/Kbuild | 4 | ||||
-rw-r--r-- | usr/utils/mknod.c | 58 |
3 files changed, 63 insertions, 3 deletions
diff --git a/usr/klibc/arch/x86_64/MCONFIG b/usr/klibc/arch/x86_64/MCONFIG index 8edf343bac9bd..edcd63855b621 100644 --- a/usr/klibc/arch/x86_64/MCONFIG +++ b/usr/klibc/arch/x86_64/MCONFIG @@ -17,10 +17,10 @@ KLIBCARCHREQFLAGS = -m64 ifeq ($(DEBUG),y) KLIBCOPTFLAGS = -Os -fomit-frame-pointer \ - -falign-functions=0 -falign-jumps=0 -falign-loops=0 + -falign-functions=1 -falign-jumps=1 -falign-loops=1 else KLIBCOPTFLAGS = -Os -fno-asynchronous-unwind-tables -fomit-frame-pointer \ - -falign-functions=0 -falign-jumps=0 -falign-loops=0 + -falign-functions=1 -falign-jumps=1 -falign-loops=1 endif KLIBCBITSIZE = 64 KLIBCLDFLAGS = -m elf_x86_64 diff --git a/usr/utils/Kbuild b/usr/utils/Kbuild index b3b8d8a18da2c..75618cc5248e3 100644 --- a/usr/utils/Kbuild +++ b/usr/utils/Kbuild @@ -2,7 +2,7 @@ # Kbuild file for klib utils # -progs := chroot dd mkdir mkfifo mount pivot_root umount +progs := chroot dd mkdir mkfifo mknod mount pivot_root umount progs += true false sleep ln nuke minips cat progs += insmod uname halt @@ -18,6 +18,8 @@ static/mkdir-y := mkdir.o file_mode.o shared/mkdir-y := mkdir.o file_mode.o static/mkfifo-y := mkfifo.o file_mode.o shared/mkfifo-y := mkfifo.o file_mode.o +static/mknod-y := mknod.o file_mode.o +shared/mknod-y := mknod.o file_mode.o static/mount-y := mount_main.o mount_opts.o shared/mount-y := mount_main.o mount_opts.o static/pivot_root-y := pivot_root.o diff --git a/usr/utils/mknod.c b/usr/utils/mknod.c new file mode 100644 index 0000000000000..1facda7b01c13 --- /dev/null +++ b/usr/utils/mknod.c @@ -0,0 +1,58 @@ +#include <stdio.h> +#include <stdlib.h> +#include <sys/stat.h> + +char *progname; + +static __noreturn usage(void) +{ + fprintf(stderr, "Usage: %s name {b|c} major minor\n", progname); + exit(1); +} + +int main(int argc, char *argv[], char *envp[]) +{ + char *name = NULL, *endp; + unsigned int major, minor; + mode_t mode; + dev_t dev; + + progname = argv[0]; + if (argc != 5) + usage(); + + name = argv[1]; + if (!name) { + perror("device"); + usage(); + } + + mode = 0666; + if (argv[2][0] == 'c') + mode |= S_IFCHR; + else if (argv[2][0] == 'b') + mode |= S_IFBLK; + else { + perror("block or char devices."); + usage(); + } + + major = strtol(argv[3], &endp, 0); + if (*endp != '\0') { + perror("major."); + usage(); + } + minor = strtol(argv[4], &endp, 0); + if (*endp != '\0') { + perror("minor."); + usage(); + } + dev = makedev(major, minor); + + if (mknod(name, mode, dev) == -1) { + perror("mknod"); + exit(1); + } + + exit(0); +} |