Added open_read, enabled it to run.
authorPaul Pearce <pearce@eecs.berkeley.edu>
Thu, 28 May 2009 19:19:53 +0000 (15:19 -0400)
committerKevin Klues <klueska@cs.berkeley.edu>
Fri, 5 Jun 2009 01:00:40 +0000 (18:00 -0700)
kern/src/Makefrag
kern/src/manager.c
user/apps/parlib/Makefrag
user/apps/parlib/open_read.c [new file with mode: 0644]
user/parlib/inc/newlib_backend.h
user/parlib/src/newlib_backend.c

index 8b820cb..6d3de32 100644 (file)
@@ -40,7 +40,7 @@ KERN_SRCFILES := $(KERN_SRC_DIR)/entry.S \
 KERN_SRCFILES := $(wildcard $(KERN_SRCFILES))
 
 KERN_APPFILES :=       $(USER_APPS_ROSLIB_DIR)/null \
-                    $(USER_APPS_PARLIB_DIR)/hello 
+                    $(USER_APPS_PARLIB_DIR)/open_read 
 #                                      $(USER_APPS_ROSLIB_DIR)/hello \
 #                                      apps/hello \
 #                                      apps_newlib/null \
index df97bd5..a274fb5 100644 (file)
@@ -39,11 +39,19 @@ void manager(void)
 {
        static uint8_t progress = 0;
        env_t* env_batch[64]; // Fairly arbitrary, just the max I plan to use.
+       
+       if(progress == 0) {
+               progress++;
+               env_batch[0] = ENV_CREATE(parlib_open_read);
+               env_run(env_batch[0]);
+       }
+       return;
 
        switch (progress++) {
                case 0:
+                       
                        for (int i = 2; i < 8; i++)
-                               env_batch[i] = ENV_CREATE(parlib_hello);
+                               env_batch[i] = ENV_CREATE(parlib_open_read);
                        for (int i = 2; i < 8; i++)
                                smp_call_function_single(i, run_env_handler, env_batch[i], 0);
                        int count = 0;
index cdb76fc..3df23a3 100644 (file)
@@ -2,7 +2,8 @@ USER_APPS_PARLIB_DIR = $(USER_APPS_DIR)/parlib
 OBJDIRS += $(USER_APPS_PARLIB_DIR)
 
 USER_APPS_PARLIB_CFLAGS    := $(USER_CFLAGS) \
-                              -I$(USER_PARLIB_NEWLIB_DIR)/include
+                              -I$(USER_PARLIB_NEWLIB_DIR)/include \
+                              -I$(USER_PARLIB_DIR)/inc
 
 USER_APPS_PARLIB_LDFLAGS   := $(USER_LDFLAGS) -static \
                               -T $(USER_APPS_PARLIB_DIR)/apps.ld
diff --git a/user/apps/parlib/open_read.c b/user/apps/parlib/open_read.c
new file mode 100644 (file)
index 0000000..fa4d9f6
--- /dev/null
@@ -0,0 +1,14 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <newlib_backend.h>
+
+int main(int argc, char** argv)
+{
+       printf("Hello world from newlib!!\n");
+       int fd = open("/test/file", O_RDWR, 0);
+       char buf[10];
+       int read_amt = read(fd, buf, 10);
+       printf("FD: %d\nRead Amount: %d\n", fd, read_amt);
+       return 0;
+}
index 51c150d..e21e26b 100644 (file)
@@ -155,7 +155,7 @@ int lseek(int file, int ptr, int dir);
 /* open()
  * Open a file. 
  */
-int open(const char *name, int flags, int mode); 
+//int open(const char *name, int flags, int mode); 
 
 /* read()
  * Read from a file. 
index 1d75811..10a4fd5 100644 (file)
@@ -17,7 +17,6 @@ int debug(const char *fmt, ...) {
        return 0;
 }
 
-
 /* environ
  * A pointer to a list of environment variables and their values. 
  * For a minimal environment, this empty list is adequate.