aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2006-06-22 10:53:03 -0700
committerH. Peter Anvin <hpa@zytor.com>2006-06-22 10:53:03 -0700
commit200d541cc5258bf7f746da61de4a37b16f7ff283 (patch)
treeff70e4cbeef861b9c71622dedeba7f8e09d2e558
parentbc02ec1dee2fa2f86815abbd0601ef0d4371ac0d (diff)
parent9986d2e5e4c8ee20a9ccc2ec3df6805df4897ebb (diff)
downloadklibc-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/MCONFIG4
-rw-r--r--usr/utils/Kbuild4
-rw-r--r--usr/utils/mknod.c58
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);
+}