aboutsummaryrefslogtreecommitdiff
path: root/linux/lib
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2021-08-15 00:16:45 -0400
committerAndrew Lee <alee14498@protonmail.com>2021-08-15 00:16:45 -0400
commit723428bebe3105ad3c3406e416402d1831b482c4 (patch)
treeff990e306163515973746ddfb261f29ba8765441 /linux/lib
downloadlinux-0.01-distro-723428bebe3105ad3c3406e416402d1831b482c4.tar.gz
linux-0.01-distro-723428bebe3105ad3c3406e416402d1831b482c4.tar.bz2
linux-0.01-distro-723428bebe3105ad3c3406e416402d1831b482c4.zip
Inital commit
Diffstat (limited to 'linux/lib')
-rw-r--r--linux/lib/Makefile44
-rw-r--r--linux/lib/_exit.c7
-rw-r--r--linux/lib/close.c4
-rw-r--r--linux/lib/ctype.c29
-rw-r--r--linux/lib/dup.c4
-rw-r--r--linux/lib/errno.c1
-rw-r--r--linux/lib/execve.c4
-rw-r--r--linux/lib/open.c19
-rw-r--r--linux/lib/setsid.c4
-rw-r--r--linux/lib/string.c8
-rw-r--r--linux/lib/wait.c10
-rw-r--r--linux/lib/write.c4
12 files changed, 138 insertions, 0 deletions
diff --git a/linux/lib/Makefile b/linux/lib/Makefile
new file mode 100644
index 0000000..a06698d
--- /dev/null
+++ b/linux/lib/Makefile
@@ -0,0 +1,44 @@
+#
+# Makefile for some libs needed in the kernel.
+#
+# Note! Dependencies are done automagically by 'make dep', which also
+# removes any old dependencies. DON'T put your own dependencies here
+# unless it's something special (ie not a .c file).
+#
+
+AR =gar
+AS =gas
+LD =gld
+LDFLAGS =-s -x
+CC =gcc
+CFLAGS =-Wall -O -fstrength-reduce -fomit-frame-pointer -fcombine-regs \
+ -finline-functions -mstring-insns -nostdinc -I../include
+CPP =gcc -E -nostdinc -I../include
+
+.c.s:
+ $(CC) $(CFLAGS) \
+ -S -o $*.s $<
+.s.o:
+ $(AS) -c -o $*.o $<
+.c.o:
+ $(CC) $(CFLAGS) \
+ -c -o $*.o $<
+
+OBJS = ctype.o _exit.o open.o close.o errno.o write.o dup.o setsid.o \
+ execve.o wait.o string.o
+
+lib.a: $(OBJS)
+ $(AR) rcs lib.a $(OBJS)
+ sync
+
+clean:
+ rm -f core *.o *.a tmp_make
+ for i in *.c;do rm -f `basename $$i .c`.s;done
+
+dep:
+ sed '/\#\#\# Dependencies/q' < Makefile > tmp_make
+ (for i in *.c;do echo -n `echo $$i | sed 's,\.c,\.s,'`" "; \
+ $(CPP) -M $$i;done) >> tmp_make
+ cp tmp_make Makefile
+
+### Dependencies:
diff --git a/linux/lib/_exit.c b/linux/lib/_exit.c
new file mode 100644
index 0000000..44a74e1
--- /dev/null
+++ b/linux/lib/_exit.c
@@ -0,0 +1,7 @@
+#define __LIBRARY__
+#include <unistd.h>
+
+volatile void _exit(int exit_code)
+{
+ __asm__("int $0x80"::"a" (__NR_exit),"b" (exit_code));
+}
diff --git a/linux/lib/close.c b/linux/lib/close.c
new file mode 100644
index 0000000..182d7eb
--- /dev/null
+++ b/linux/lib/close.c
@@ -0,0 +1,4 @@
+#define __LIBRARY__
+#include <unistd.h>
+
+_syscall1(int,close,int,fd)
diff --git a/linux/lib/ctype.c b/linux/lib/ctype.c
new file mode 100644
index 0000000..bf58aac
--- /dev/null
+++ b/linux/lib/ctype.c
@@ -0,0 +1,29 @@
+#include <ctype.h>
+
+char _ctmp;
+unsigned char _ctype[] = {0x00, /* EOF */
+_C,_C,_C,_C,_C,_C,_C,_C, /* 0-7 */
+_C,_C|_S,_C|_S,_C|_S,_C|_S,_C|_S,_C,_C, /* 8-15 */
+_C,_C,_C,_C,_C,_C,_C,_C, /* 16-23 */
+_C,_C,_C,_C,_C,_C,_C,_C, /* 24-31 */
+_S|_SP,_P,_P,_P,_P,_P,_P,_P, /* 32-39 */
+_P,_P,_P,_P,_P,_P,_P,_P, /* 40-47 */
+_D,_D,_D,_D,_D,_D,_D,_D, /* 48-55 */
+_D,_D,_P,_P,_P,_P,_P,_P, /* 56-63 */
+_P,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U|_X,_U, /* 64-71 */
+_U,_U,_U,_U,_U,_U,_U,_U, /* 72-79 */
+_U,_U,_U,_U,_U,_U,_U,_U, /* 80-87 */
+_U,_U,_U,_P,_P,_P,_P,_P, /* 88-95 */
+_P,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L|_X,_L, /* 96-103 */
+_L,_L,_L,_L,_L,_L,_L,_L, /* 104-111 */
+_L,_L,_L,_L,_L,_L,_L,_L, /* 112-119 */
+_L,_L,_L,_P,_P,_P,_P,_C, /* 120-127 */
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 128-143 */
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 144-159 */
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 160-175 */
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 176-191 */
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 192-207 */
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 208-223 */
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 224-239 */
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; /* 240-255 */
+
diff --git a/linux/lib/dup.c b/linux/lib/dup.c
new file mode 100644
index 0000000..03bd5d0
--- /dev/null
+++ b/linux/lib/dup.c
@@ -0,0 +1,4 @@
+#define __LIBRARY__
+#include <unistd.h>
+
+_syscall1(int,dup,int,fd)
diff --git a/linux/lib/errno.c b/linux/lib/errno.c
new file mode 100644
index 0000000..6e7bb62
--- /dev/null
+++ b/linux/lib/errno.c
@@ -0,0 +1 @@
+int errno;
diff --git a/linux/lib/execve.c b/linux/lib/execve.c
new file mode 100644
index 0000000..03772e3
--- /dev/null
+++ b/linux/lib/execve.c
@@ -0,0 +1,4 @@
+#define __LIBRARY__
+#include <unistd.h>
+
+_syscall3(int,execve,const char *,file,char **,argv,char **,envp)
diff --git a/linux/lib/open.c b/linux/lib/open.c
new file mode 100644
index 0000000..057039c
--- /dev/null
+++ b/linux/lib/open.c
@@ -0,0 +1,19 @@
+#define __LIBRARY__
+#include <unistd.h>
+#include <stdarg.h>
+
+int open(const char * filename, int flag, ...)
+{
+ register int res;
+ va_list arg;
+
+ va_start(arg,flag);
+ __asm__("int $0x80"
+ :"=a" (res)
+ :"0" (__NR_open),"b" (filename),"c" (flag),
+ "d" (va_arg(arg,int)));
+ if (res>=0)
+ return res;
+ errno = -res;
+ return -1;
+}
diff --git a/linux/lib/setsid.c b/linux/lib/setsid.c
new file mode 100644
index 0000000..730abf0
--- /dev/null
+++ b/linux/lib/setsid.c
@@ -0,0 +1,4 @@
+#define __LIBRARY__
+#include <unistd.h>
+
+_syscall0(pid_t,setsid)
diff --git a/linux/lib/string.c b/linux/lib/string.c
new file mode 100644
index 0000000..f6befd9
--- /dev/null
+++ b/linux/lib/string.c
@@ -0,0 +1,8 @@
+#ifndef __GNUC__
+#error I want gcc!
+#endif
+
+#define extern
+#define inline
+#define __LIBRARY__
+#include <string.h>
diff --git a/linux/lib/wait.c b/linux/lib/wait.c
new file mode 100644
index 0000000..a14555c
--- /dev/null
+++ b/linux/lib/wait.c
@@ -0,0 +1,10 @@
+#define __LIBRARY__
+#include <unistd.h>
+#include <sys/wait.h>
+
+_syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
+
+pid_t wait(int * wait_stat)
+{
+ return waitpid(-1,wait_stat,0);
+}
diff --git a/linux/lib/write.c b/linux/lib/write.c
new file mode 100644
index 0000000..2613f17
--- /dev/null
+++ b/linux/lib/write.c
@@ -0,0 +1,4 @@
+#define __LIBRARY__
+#include <unistd.h>
+
+_syscall3(int,write,int,fd,const char *,buf,off_t,count)