[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Lost] [Patch] Posix Stubs



+ libc: Ein paar weitere Stubs von Posix-Funktionen
=== src/modules/lib/posix/misc.c
==================================================================
--- src/modules/lib/posix/misc.c	(revision 1407)
+++ src/modules/lib/posix/misc.c	(local)
@@ -35,6 +35,7 @@
 
 #include <unistd.h>
 #include <config.h>
+#include <errno.h>
 
 #ifndef CONFIG_LIBC_NO_STUBS
 /**
@@ -44,5 +45,23 @@
 {
     return 0;
 }
+
+/**
+ * Prozess klonen
+ */
+pid_t fork()
+{
+    errno = EAGAIN;
+    return -1;
+}
+
+/**
+ * Pipe einrichten
+ */
+int pipe(int mode[2])
+{
+    errno = ENFILE;
+    return -1;
+}
 #endif
 
=== src/modules/lib/posix/posix_files.c
==================================================================
--- src/modules/lib/posix/posix_files.c	(revision 1407)
+++ src/modules/lib/posix/posix_files.c	(local)
@@ -39,6 +39,7 @@
 #include <fcntl.h>
 #include <collections.h>
 #include <errno.h>
+#include <config.h>
 
 /// Ein Element das einen Unix-Dateideskriptor mit einem Normalen verknuepft
 struct fd_list_element {
@@ -217,6 +218,7 @@
 {
     return open(filename, O_CREAT | O_WRONLY | O_TRUNC, mode);
 }
+
 /**
  * Aus einem Unix-Dateideskriptor lesen.
  *
@@ -323,3 +325,25 @@
     return 0;
 }
 
+
+#ifndef CONFIG_LIBC_NO_STUBS
+/**
+ * Dateideskriptor duplizieren
+ */
+int dup(int fd)
+{
+    errno = EMFILE;
+    return -1;
+}
+
+/**
+ * Dateideskriptor duplizieren
+ */
+int dup2(int fd, int newfd)
+{
+    errno = EMFILE;
+    return -1;
+}
+
+#endif // ndef CONFIG_LIBC_NO_STUBS
+
=== src/modules/lib/posix/signal.c
==================================================================
--- src/modules/lib/posix/signal.c	(revision 1407)
+++ src/modules/lib/posix/signal.c	(local)
@@ -41,6 +41,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <errno.h>
+#include <sleep.h>
 
 /// Array mit Pointern auf die Signal-Handler
 static sighandler_t signal_handlers [_SIGNO_MAX];
@@ -258,3 +259,27 @@
     return ((sigset->bitmask[signum / 8] & (1 <<(signum % 8))) != 0);
 }
 
+
+#ifndef CONFIG_LIBC_NO_STUBS
+/**
+ * Timer setzen, der beim ablaufen ein SIGALARM sendet
+ */
+long alarm(long seconds)
+{
+    return 0;
+}
+
+/**
+ * Warten bis zeit abgelaufen ist, oder Signal eintrifft
+ *
+ * @return 0 wenn die Zeit abgelaufen ist, oder die Zeit, die noch geschlafen
+ * werden sollte.
+ */
+unsigned int sleep(unsigned int seconds)
+{
+    // TODO: Unterbrechen durch Signale
+    msleep(seconds * 1000);
+    return 0;
+}
+#endif
+