Cleanup JOS references and add typedefs
authorDavid Zhu <yuzhu@cs.berkeley.edu>
Wed, 22 Apr 2009 01:22:30 +0000 (18:22 -0700)
committerDavid Zhu <yuzhu@cs.berkeley.edu>
Wed, 22 Apr 2009 01:22:30 +0000 (18:22 -0700)
    Cleaned up all legacy references to JOS and turned them into ROSs.  Also typedefed all structs to be a
    *_t type.

49 files changed:
CODING
GNUmakefile
boot/Makefrag
boot/main.c
conf/env.mk
inc/assert.h
inc/elf.h
inc/env.h
inc/error.h
inc/kbdreg.h
inc/lib.h
inc/malloc.h
inc/memlayout.h
inc/mmu.h
inc/queue.h
inc/stab.h
inc/stdarg.h
inc/stdio.h
inc/string.h
inc/syscall.h
inc/trap.h
inc/types.h
inc/x86.h
kern/Makefrag
kern/console.h
kern/env.c
kern/env.h
kern/kclock.h
kern/kdebug.c
kern/kdebug.h
kern/kernel.ld
kern/monitor.c
kern/monitor.h
kern/pmap.c
kern/pmap.h
kern/sched.h
kern/smp.c
kern/syscall.c
kern/syscall.h
kern/testing.c
kern/testing.h
kern/trap.c
kern/trap.h
lib/libmain.c
lib/panic.c
lib/printf.c
lib/printfmt.c
user/hello.c
user/user.ld

diff --git a/CODING b/CODING
index 55d11d7..03456d9 100644 (file)
--- a/CODING
+++ b/CODING
@@ -1,4 +1,4 @@
-JOS CODING STANDARDS
+ROS CODING STANDARDS
 
 It's easier on everyone if all authors working on a shared
 code base are consistent in the way they write their programs.
index 95f2e88..273147a 100644 (file)
@@ -73,7 +73,7 @@ PERL  := perl
 # Only optimize to -O1 to discourage inlining, which complicates backtraces.
 CFLAGS := $(CFLAGS) $(DEFS) $(LABDEFS) -D$(ARCH) -O -fno-builtin -fno-stack-protector -I$(TOP) -MD -Wall -Wno-format -Wno-unused -gstabs
 
-# Linker flags for JOS user programs
+# Linker flags for ROS user programs
 ULDFLAGS := -T user/user.ld
 
 # Lists that the */Makefrag makefile fragments will add to
@@ -92,8 +92,8 @@ all:
 .PRECIOUS: %.o $(OBJDIR)/boot/%.o $(OBJDIR)/kern/%.o \
        $(OBJDIR)/lib/%.o $(OBJDIR)/fs/%.o $(OBJDIR)/user/%.o
 
-KERN_CFLAGS := $(CFLAGS) -DJOS_KERNEL -gstabs
-USER_CFLAGS := $(CFLAGS) -DJOS_USER -gstabs
+KERN_CFLAGS := $(CFLAGS) -DROS_KERNEL -gstabs
+USER_CFLAGS := $(CFLAGS) -DROS_USER -gstabs
 
 
 
index 843e932..5fc6cfd 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Makefile fragment for the JOS kernel.
+# Makefile fragment for the ROS kernel.
 # This is NOT a complete makefile;
 # you must run GNU make in the top-level directory
 # where the GNUmakefile is located.
index a7cee69..a2b3f97 100644 (file)
@@ -34,7 +34,7 @@
  **********************************************************************/
 
 #define SECTSIZE       512
-#define ELFHDR         ((struct Elf *) 0x10000) // scratch space
+#define ELFHDR         ((elf_t *) 0x10000) // scratch space
 
 void readsect(void*, uint32_t);
 void readseg(uint32_t, uint32_t, uint32_t);
@@ -42,7 +42,7 @@ void readseg(uint32_t, uint32_t, uint32_t);
 void
 cmain(void)
 {
-       struct Proghdr *ph, *eph;
+       proghdr_t *ph, *eph;
 
        // read 1st page off disk
        readseg((uint32_t) ELFHDR, SECTSIZE*8, 0);
@@ -52,7 +52,7 @@ cmain(void)
                goto bad;
 
        // load each program segment (ignores ph flags)
-       ph = (struct Proghdr *) ((uint8_t *) ELFHDR + ELFHDR->e_phoff);
+       ph = (proghdr_t *) ((uint8_t *) ELFHDR + ELFHDR->e_phoff);
        eph = ph + ELFHDR->e_phnum;
        for (; ph < eph; ph++)
                readseg(ph->p_va, ph->p_memsz, ph->p_offset);
index 1518fe9..5a9815b 100644 (file)
@@ -1,4 +1,4 @@
-# env.mk - configuration variables for the JOS lab
+# env.mk - configuration variables for the ROS lab
 
 
 # '$(V)' controls whether the lab makefiles print verbose commands (the
index 3d9656e..1f762d3 100644 (file)
@@ -1,7 +1,7 @@
 /* See COPYRIGHT for copyright information. */
 
-#ifndef JOS_INC_ASSERT_H
-#define JOS_INC_ASSERT_H
+#ifndef ROS_INC_ASSERT_H
+#define ROS_INC_ASSERT_H
 
 #include <inc/stdio.h>
 
@@ -17,4 +17,4 @@ void _panic(const char* NTS, int, const char* NTS, ...) __attribute__((noreturn)
 // static_assert(x) will generate a compile-time error if 'x' is false.
 #define static_assert(x)       switch (x) case 0: case (x):
 
-#endif /* !JOS_INC_ASSERT_H */
+#endif /* !ROS_INC_ASSERT_H */
index 2fb4257..f7bef79 100644 (file)
--- a/inc/elf.h
+++ b/inc/elf.h
@@ -1,11 +1,11 @@
-#ifndef JOS_INC_ELF_H
-#define JOS_INC_ELF_H
+#ifndef ROS_INC_ELF_H
+#define ROS_INC_ELF_H
 
 #define ELF_MAGIC 0x464C457FU  /* "\x7FELF" in little endian */
 
 #include <inc/types.h>
 
-struct Elf {
+typedef struct Elf {
        uint32_t e_magic;       // must equal ELF_MAGIC
        uint8_t e_elf[12];
        uint16_t e_type;
@@ -21,9 +21,9 @@ struct Elf {
        uint16_t e_shentsize;
        uint16_t e_shnum;
        uint16_t e_shstrndx;
-};
+} elf_t;
 
-struct Proghdr {
+typedef struct Proghdr {
        uint32_t p_type;
        uint32_t p_offset;
        uint32_t p_va;
@@ -32,9 +32,9 @@ struct Proghdr {
        uint32_t p_memsz;
        uint32_t p_flags;
        uint32_t p_align;
-};
+} proghdr_t;
 
-struct Secthdr {
+typedef struct Secthdr {
        uint32_t sh_name;
        uint32_t sh_type;
        uint32_t sh_flags;
@@ -45,7 +45,7 @@ struct Secthdr {
        uint32_t sh_info;
        uint32_t sh_addralign;
        uint32_t sh_entsize;
-};
+} secthdr_t;
 
 // Values for Proghdr::p_type
 #define ELF_PROG_LOAD          1
@@ -64,4 +64,4 @@ struct Secthdr {
 // Values for Secthdr::sh_name
 #define ELF_SHN_UNDEF          0
 
-#endif /* !JOS_INC_ELF_H */
+#endif /* !ROS_INC_ELF_H */
index 51f1c47..f9c19db 100644 (file)
--- a/inc/env.h
+++ b/inc/env.h
@@ -1,13 +1,16 @@
 /* See COPYRIGHT for copyright information. */
 
-#ifndef JOS_INC_ENV_H
-#define JOS_INC_ENV_H
+#ifndef ROS_INC_ENV_H
+#define ROS_INC_ENV_H
 
 #include <inc/types.h>
 #include <inc/queue.h>
 #include <inc/trap.h>
 #include <inc/memlayout.h>
 
+struct Env;
+typedef struct Env env_t;
+
 typedef int32_t envid_t;
 
 // An environment ID 'envid_t' has three parts:
@@ -36,8 +39,8 @@ typedef int32_t envid_t;
 #define ENV_NOT_RUNNABLE       2
 
 struct Env {
-       struct Trapframe env_tf;        // Saved registers
-       LIST_ENTRY(Env) env_link;       // Free list link pointers
+       trapframe_t env_tf;     // Saved registers
+       LIST_ENTRY(env_t) env_link;     // Free list link pointers
        envid_t env_id;                 // Unique environment identifier
        envid_t env_parent_id;          // env_id of this env's parent
        unsigned env_status;            // Status of the environment
@@ -49,4 +52,4 @@ struct Env {
 
 };
 
-#endif // !JOS_INC_ENV_H
+#endif // !ROS_INC_ENV_H
index 6906da5..d7ed9e0 100644 (file)
@@ -1,7 +1,7 @@
 /* See COPYRIGHT for copyright information. */
 
-#ifndef JOS_INC_ERROR_H
-#define JOS_INC_ERROR_H
+#ifndef ROS_INC_ERROR_H
+#define ROS_INC_ERROR_H
 
 // Kernel error codes -- keep in sync with list in lib/printfmt.c.
 #define E_UNSPECIFIED  1       // Unspecified or unknown problem
@@ -15,4 +15,4 @@
 
 #define        MAXERROR        6
 
-#endif // !JOS_INC_ERROR_H */
+#endif // !ROS_INC_ERROR_H */
index 7c6d740..0c7ffea 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef JOS_KBDREG_H
-#define JOS_KBDREG_H
+#ifndef ROS_KBDREG_H
+#define ROS_KBDREG_H
 
 // Special keycodes
 #define KEY_HOME       0xE0
@@ -80,4 +80,4 @@
 #define        KBR_RSTDONE     0xAA    /* reset complete */
 #define        KBR_ECHO        0xEE    /* echo response */
 
-#endif /* !JOS_KBDREG_H */
+#endif /* !ROS_KBDREG_H */
index 6f21a01..31aa564 100644 (file)
--- a/inc/lib.h
+++ b/inc/lib.h
@@ -4,8 +4,8 @@
 // and is intended to be linked into all user-mode applications
 // (NOT the kernel or boot loader).
 
-#ifndef JOS_INC_LIB_H
-#define JOS_INC_LIB_H 1
+#ifndef ROS_INC_LIB_H
+#define ROS_INC_LIB_H 1
 
 #include <inc/types.h>
 #include <inc/stdio.h>
@@ -21,9 +21,9 @@
 
 // libos.c or entry.S
 extern char *binaryname;
-extern volatile struct Env *env;
-extern volatile struct Env envs[NENV];
-extern volatile struct Page pages[];
+extern volatile env_t *env;
+extern volatile env_t envs[NENV];
+extern volatile page_t pages[];
 void   exit(void);
 
 // readline.c
@@ -48,4 +48,4 @@ int   sys_env_destroy(envid_t);
 #define        O_EXCL          0x0400          /* error if already exists */
 #define O_MKDIR                0x0800          /* create directory, not regular file */
 
-#endif // !JOS_INC_LIB_H
+#endif // !ROS_INC_LIB_H
index bef7267..c9fbec8 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef JOS_INC_MALLOC_H
-#define JOS_INC_MALLOC_H 1
+#ifndef ROS_INC_MALLOC_H
+#define ROS_INC_MALLOC_H 1
 
 void *malloc(size_t size);
 void free(void *addr);
index a2248b9..91f0ef6 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef JOS_INC_MEMLAYOUT_H
-#define JOS_INC_MEMLAYOUT_H
+#ifndef ROS_INC_MEMLAYOUT_H
+#define ROS_INC_MEMLAYOUT_H
 
 #ifndef __ASSEMBLER__
 #include <inc/types.h>
@@ -73,7 +73,7 @@
  *
  * (*) Note: The kernel ensures that "Invalid Memory" (ULIM) is *never*
  *     mapped.  "Empty Memory" is normally unmapped, but user programs may
- *     map pages there if desired.  JOS user programs map pages temporarily
+ *     map pages there if desired.  ROS user programs map pages temporarily
  *     at UTEMP.
  */
 
@@ -157,7 +157,6 @@ typedef uint32_t pde_t;
 extern volatile pte_t vpt[];     // VA of "virtual page table"
 extern volatile pde_t vpd[];     // VA of current page directory
 
-
 /*
  * Page descriptor structures, mapped at UPAGES.
  * Read/write to the kernel, read-only to user programs.
@@ -166,11 +165,15 @@ extern volatile pde_t vpd[];     // VA of current page directory
  * You can map a Page * to the corresponding physical address
  * with page2pa() in kern/pmap.h.
  */
-LIST_HEAD(Page_list, Page);
-typedef LIST_ENTRY(Page) Page_LIST_entry_t;
+
+struct Page;
+typedef struct Page page_t;
+
+LIST_HEAD(page_list_t, page_t);
+typedef LIST_ENTRY(page_t) page_list_entry_t;
 
 struct Page {
-       Page_LIST_entry_t pp_link;      /* free list link */
+       page_list_entry_t pp_link;      /* free list link */
 
        // pp_ref is the count of pointers (usually in page table entries)
        // to this page, for pages allocated using page_alloc.
@@ -181,4 +184,4 @@ struct Page {
 };
 
 #endif /* !__ASSEMBLER__ */
-#endif /* !JOS_INC_MEMLAYOUT_H */
+#endif /* !ROS_INC_MEMLAYOUT_H */
index adf8122..4ea4a45 100644 (file)
--- a/inc/mmu.h
+++ b/inc/mmu.h
@@ -1,5 +1,5 @@
-#ifndef JOS_INC_MMU_H
-#define JOS_INC_MMU_H
+#ifndef ROS_INC_MMU_H
+#define ROS_INC_MMU_H
 
 /*
  * This file contains definitions for the x86 memory management unit (MMU),
 #include <inc/types.h>
 
 // Segment Descriptors
-struct Segdesc {
+typedef struct Segdesc {
        unsigned sd_lim_15_0 : 16;  // Low bits of segment limit
        unsigned sd_base_15_0 : 16; // Low bits of segment base address
        unsigned sd_base_23_16 : 8; // Middle bits of segment base address
@@ -181,19 +181,19 @@ struct Segdesc {
        unsigned sd_db : 1;         // 0 = 16-bit segment, 1 = 32-bit segment
        unsigned sd_g : 1;          // Granularity: limit scaled by 4K when set
        unsigned sd_base_31_24 : 8; // High bits of segment base address
-};
+} segdesc_t;
 // Null segment
-#define SEG_NULL       (struct Segdesc){ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+#define SEG_NULL       (segdesc_t){ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
 // Segment that is loadable but faults when used
-#define SEG_FAULT      (struct Segdesc){ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0 }
+#define SEG_FAULT      (segdesc_t){ 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0 }
 // Normal segment
-#define SEG(type, base, lim, dpl) (struct Segdesc)                     \
+#define SEG(type, base, lim, dpl) (segdesc_t)                                          \
 { ((lim) >> 12) & 0xffff, (base) & 0xffff, ((base) >> 16) & 0xff,      \
-    type, 1, dpl, 1, (unsigned) (lim) >> 28, 0, 0, 1, 1,               \
+    type, 1, dpl, 1, (unsigned) (lim) >> 28, 0, 0, 1, 1,                       \
     (unsigned) (base) >> 24 }
-#define SEG16(type, base, lim, dpl) (struct Segdesc)                   \
-{ (lim) & 0xffff, (base) & 0xffff, ((base) >> 16) & 0xff,              \
-    type, 1, dpl, 1, (unsigned) (lim) >> 16, 0, 0, 1, 0,               \
+#define SEG16(type, base, lim, dpl) (segdesc_t)                                                \
+{ (lim) & 0xffff, (base) & 0xffff, ((base) >> 16) & 0xff,                      \
+    type, 1, dpl, 1, (unsigned) (lim) >> 16, 0, 0, 1, 0,                       \
     (unsigned) (base) >> 24 }
 
 #endif /* !__ASSEMBLER__ */
@@ -231,7 +231,7 @@ struct Segdesc {
 #ifndef __ASSEMBLER__
 
 // Task state segment format (as described by the Pentium architecture book)
-struct Taskstate {
+typedef struct Taskstate {
        uint32_t ts_link;       // Old ts selector
        uintptr_t ts_esp0;      // Stack pointers and segment selectors
        uint16_t ts_ss0;        //   after an increase in privilege level
@@ -269,10 +269,10 @@ struct Taskstate {
        uint16_t ts_padding10;
        uint16_t ts_t;          // Trap on task switch
        uint16_t ts_iomb;       // I/O map base address
-};
+} taskstate_t;
 
 // Gate descriptors for interrupts and traps
-struct Gatedesc {
+typedef struct Gatedesc {
        unsigned gd_off_15_0 : 16;   // low 16 bits of offset in segment
        unsigned gd_ss : 16;         // segment selector
        unsigned gd_args : 5;        // # args, 0 for interrupt/trap gates
@@ -282,7 +282,7 @@ struct Gatedesc {
        unsigned gd_dpl : 2;         // DPL - highest ring allowed to use this
        unsigned gd_p : 1;           // Present
        unsigned gd_off_31_16 : 16;  // high bits of offset in segment
-};
+} gatedesc_t;
 
 // Set up a normal interrupt/trap gate descriptor.
 // - istrap: 1 for a trap (= exception) gate, 0 for an interrupt gate.
@@ -319,11 +319,11 @@ struct Gatedesc {
 }
 
 // Pseudo-descriptors used for LGDT, LLDT and LIDT instructions.
-struct Pseudodesc {
+typedef struct Pseudodesc {
        uint16_t pd_lim;                // Limit
        uint32_t pd_base;               // Base address
-} __attribute__ ((packed));
+} __attribute__ ((packed)) pseudodesc_t;
 
 #endif /* !__ASSEMBLER__ */
 
-#endif /* !JOS_INC_MMU_H */
+#endif /* !ROS_INC_MMU_H */
index 7680415..cc903d5 100644 (file)
@@ -32,8 +32,8 @@
  * TAILQ and CIRCLEQ definitions have been removed.   - August 9, 2005
  */
 
-#ifndef JOS_INC_QUEUE_H
-#define JOS_INC_QUEUE_H
+#ifndef ROS_INC_QUEUE_H
+#define ROS_INC_QUEUE_H
 
 /*
  * A list is headed by a single forward pointer (or an array of forward
  */
 #if 0
 
-struct Frob
+typedef struct Frob
 {
        int frobozz;
-       LIST_ENTRY(Frob) frob_link;     /* this contains the list element pointers */
-};
+       LIST_ENTRY(frob_t) frob_link;   /* this contains the list element pointers */
+} frob_t;
 
-LIST_HEAD(Frob_list, Frob)             /* defines struct Frob_list as a list of Frob */
+LIST_HEAD(frob_list_t, frob_t)         /* defines struct Frob_list as a list of Frob */
 
-struct Frob_list flist;                        /* declare a Frob list */
+frob_list_t flist;                     /* declare a Frob list */
 
 LIST_INIT(&flist);                     /* clear flist (globals are cleared anyway) */
 flist = LIST_HEAD_INITIALIZER(&flist); /* alternate way to clear flist */
@@ -65,7 +65,7 @@ flist = LIST_HEAD_INITIALIZER(&flist);        /* alternate way to clear flist */
 if(LIST_EMPTY(&flist))                 /* check whether list is empty */
        printf("list is empty\n");
 
-struct Frob *f = LIST_FIRST(&flist);   /* f is first element in list */
+frob_t *f = LIST_FIRST(&flist);        /* f is first element in list */
 f = LIST_NEXT(f, frob_link);           /* now f is next (second) element in list */
 f = LIST_NEXT(f, frob_link);           /* now f is next (third) element in list */
 
@@ -102,14 +102,14 @@ LIST_INSERT_HEAD(&flist, g, frob_link);   /* add g as first element in list */
  * elements to be linked into the list.  A pointer to the head of the list can later be
  * declared as:
  * 
- *       struct HEADNAME *headp;
+ *       HEADNAME *headp;
  * 
  * (The names head and headp are user selectable.)
  */
-#define        LIST_HEAD(name, type)                                           \
-struct name {                                                          \
-       struct type *lh_first;  /* first element */                     \
-}
+#define        LIST_HEAD(name, type)                                   \
+typedef struct {                                                               \
+       type *lh_first; /* first element */                     \
+} name;
 
 /*
  * Set a list head variable to LIST_HEAD_INITIALIZER(head)
@@ -128,8 +128,8 @@ struct name {                                                               \
  */
 #define        LIST_ENTRY(type)                                                \
 struct {                                                               \
-       struct type *le_next;   /* next element */                      \
-       struct type **le_prev;  /* ptr to ptr to this element */        \
+       type *le_next;  /* next element */                      \
+       type **le_prev; /* ptr to ptr to this element */        \
 }
 
 /*
index a76dff5..413b579 100644 (file)
@@ -1,16 +1,16 @@
-#ifndef JOS_STAB_H
-#define JOS_STAB_H
+#ifndef ROS_STAB_H
+#define ROS_STAB_H
 #include <inc/types.h>
 
 // <inc/stab.h>
 // STABS debugging info
 
-// The JOS kernel debugger can understand some debugging information
+// The ROS kernel debugger can understand some debugging information
 // in the STABS format.  For more information on this format, see
 // http://sources.redhat.com/gdb/onlinedocs/stabs_toc.html
 
 // The constants below define some symbol types used by various debuggers
-// and compilers.  JOS uses the N_SO, N_SOL, N_FUN, and N_SLINE types.
+// and compilers.  ROS uses the N_SO, N_SOL, N_FUN, and N_SLINE types.
 
 #define        N_GSYM          0x20    // global symbol
 #define        N_FNAME         0x22    // F77 function name
@@ -48,4 +48,4 @@ typedef struct Stab {
        uintptr_t n_value;      // value of symbol
 } stab_t;
 
-#endif /* !JOS_STAB_H */
+#endif /* !ROS_STAB_H */
index 7e7c451..8548ce6 100644 (file)
@@ -1,7 +1,7 @@
 /*     $NetBSD: stdarg.h,v 1.12 1995/12/25 23:15:31 mycroft Exp $      */
 
-#ifndef JOS_INC_STDARG_H
-#define        JOS_INC_STDARG_H
+#ifndef ROS_INC_STDARG_H
+#define        ROS_INC_STDARG_H
 
 typedef void * TRUSTED va_list;
 
@@ -16,4 +16,4 @@ typedef void * TRUSTED va_list;
 
 #define        va_end(ap)      ((void)0)
 
-#endif /* !JOS_INC_STDARG_H */
+#endif /* !ROS_INC_STDARG_H */
index a055fe2..41e9997 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef JOS_INC_STDIO_H
-#define JOS_INC_STDIO_H
+#ifndef ROS_INC_STDIO_H
+#define ROS_INC_STDIO_H
 
 #include <inc/stdarg.h>
 
@@ -40,4 +40,4 @@ int   vfprintf(int fd, const char *fmt, va_list);
 // lib/readline.c
 char *NTS readline(const char *NTS prompt);
 
-#endif /* !JOS_INC_STDIO_H */
+#endif /* !ROS_INC_STDIO_H */
index 8fe5581..615a2b1 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef JOS_INC_STRING_H
-#define JOS_INC_STRING_H
+#ifndef ROS_INC_STRING_H
+#define ROS_INC_STRING_H
 
 #include <inc/types.h>
 
@@ -21,4 +21,4 @@ void *        memfind(const void *s, int c, size_t len);
 
 long   strtol(const char *s, char **endptr, int base);
 
-#endif /* not JOS_INC_STRING_H */
+#endif /* not ROS_INC_STRING_H */
index b5f92e5..3306cff 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef JOS_INC_SYSCALL_H
-#define JOS_INC_SYSCALL_H
+#ifndef ROS_INC_SYSCALL_H
+#define ROS_INC_SYSCALL_H
 
 /* system call numbers */
 enum
@@ -11,4 +11,4 @@ enum
        NSYSCALLS
 };
 
-#endif /* !JOS_INC_SYSCALL_H */
+#endif /* !ROS_INC_SYSCALL_H */
index 22a28c9..f7ecf7b 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef JOS_INC_TRAP_H
-#define JOS_INC_TRAP_H
+#ifndef ROS_INC_TRAP_H
+#define ROS_INC_TRAP_H
 
 // Trap numbers
 // These are processor defined:
 
 // These are arbitrarily chosen, but with care not to overlap
 // processor defined exceptions or interrupt vectors.
-#define T_SYSCALL   48         // system call
+#define T_SYSCALL   48                         // system call
 #define T_DEFAULT   0xdeadbeef         // catchall
 
 #ifndef __ASSEMBLER__
 
 #include <inc/types.h>
 
-struct PushRegs {
+typedef struct PushRegs {
        /* registers as pushed by pusha */
        uint32_t reg_edi;
        uint32_t reg_esi;
@@ -43,10 +43,10 @@ struct PushRegs {
        uint32_t reg_edx;
        uint32_t reg_ecx;
        uint32_t reg_eax;
-};
+} push_regs_t;
 
-struct Trapframe {
-       struct PushRegs tf_regs;
+typedef struct Trapframe {
+       push_regs_t tf_regs;
        uint16_t tf_es;
        uint16_t tf_padding1;
        uint16_t tf_ds;
@@ -62,13 +62,13 @@ struct Trapframe {
        uintptr_t tf_esp;
        uint16_t tf_ss;
        uint16_t tf_padding4;
-};
+} trapframe_t;
 
 
 #endif /* !__ASSEMBLER__ */
 
-// Must equal 'sizeof(struct Trapframe)'.
+// Must equal 'sizeof(trapframe_t)'.
 // A static_assert in kern/trap.c checks this.
 #define SIZEOF_STRUCT_TRAPFRAME        0x44
 
-#endif /* !JOS_INC_TRAP_H */
+#endif /* !ROS_INC_TRAP_H */
index 55ca187..5ce28ec 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef JOS_INC_TYPES_H
-#define JOS_INC_TYPES_H
+#ifndef ROS_INC_TYPES_H
+#define ROS_INC_TYPES_H
 
 #ifndef NULL
 #define NULL ((void*) 0)
@@ -114,4 +114,4 @@ typedef int32_t off_t;
 }
 /**************************************************************/
 
-#endif /* !JOS_INC_TYPES_H */
+#endif /* !ROS_INC_TYPES_H */
index f7ae09e..48a60d0 100644 (file)
--- a/inc/x86.h
+++ b/inc/x86.h
@@ -1,5 +1,5 @@
-#ifndef JOS_INC_X86_H
-#define JOS_INC_X86_H
+#ifndef ROS_INC_X86_H
+#define ROS_INC_X86_H
 
 #include <inc/types.h>
 #include <inc/mmu.h>
@@ -406,4 +406,4 @@ clflush(uintptr_t* addr) __attribute__((always_inline))
 {
        asm volatile("clflush %0" : : "m"(*addr));
 }
-#endif /* !JOS_INC_X86_H */
+#endif /* !ROS_INC_X86_H */
index 08c64fa..7b9f465 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Makefile fragment for JOS kernel.
+# Makefile fragment for ROS kernel.
 # This is NOT a complete makefile;
 # you must run GNU make in the top-level directory
 # where the GNUmakefile is located.
index d78a6e0..53fb81f 100644 (file)
@@ -2,8 +2,8 @@
 
 #ifndef _CONSOLE_H_
 #define _CONSOLE_H_
-#ifndef JOS_KERNEL
-# error "This is a JOS kernel header; user programs should not #include it"
+#ifndef ROS_KERNEL
+# error "This is a ROS kernel header; user programs should not #include it"
 #endif
 
 #include <inc/types.h>
index b1a48ee..28f0474 100644 (file)
@@ -15,9 +15,9 @@
 #include <kern/trap.h>
 #include <kern/monitor.h>
 
-struct Env *envs = NULL;               // All environments
-struct Env *curenv = NULL;             // The current env
-static struct Env_list env_free_list;  // Free list
+env_t *envs = NULL;            // All environments
+env_t *curenv = NULL;          // The current env
+static env_list_t env_free_list;       // Free list
 
 #define ENVGENSHIFT    12              // >= LOGNENV
 
@@ -30,9 +30,9 @@ static struct Env_list env_free_list; // Free list
 //   On error, sets *env_store to NULL.
 //
 int
-envid2env(envid_t envid, struct Env **env_store, bool checkperm)
+envid2env(envid_t envid, env_t **env_store, bool checkperm)
 {
-       struct Env *e;
+       env_t *e;
 
        // If envid is zero, return the current environment.
        if (envid == 0) {
@@ -41,7 +41,7 @@ envid2env(envid_t envid, struct Env **env_store, bool checkperm)
        }
 
        // Look up the Env structure via the index part of the envid,
-       // then check the env_id field in that struct Env
+       // then check the env_id field in that env_t
        // to ensure that the envid is not stale
        // (i.e., does not refer to a _previous_ environment
        // that used the same slot in the envs[] array).
@@ -95,10 +95,10 @@ env_init(void)
 //     -E_NO_MEM if page directory or table could not be allocated.
 //
 static int
-env_setup_vm(struct Env *e)
+env_setup_vm(env_t *e)
 {
        int i, r;
-       struct Page *p = NULL;
+       page_t *p = NULL;
 
        // Allocate a page for the page directory
        if ((r = page_alloc(&p)) < 0)
@@ -151,11 +151,11 @@ env_setup_vm(struct Env *e)
 //     -E_NO_MEM on memory exhaustion
 //
 int
-env_alloc(struct Env **newenv_store, envid_t parent_id)
+env_alloc(env_t **newenv_store, envid_t parent_id)
 {
        int32_t generation;
        int r;
-       struct Env *e;
+       env_t *e;
 
        if (!(e = LIST_FIRST(&env_free_list)))
                return -E_NO_FREE_ENV;
@@ -211,12 +211,12 @@ env_alloc(struct Env **newenv_store, envid_t parent_id)
 // Panic if any allocation attempt fails.
 //
 static void
-segment_alloc(struct Env *e, void *va, size_t len)
+segment_alloc(env_t *e, void *va, size_t len)
 {
        void *start, *end;
        size_t num_pages;
        int i, r;
-       struct Page *page;
+       page_t *page;
        pte_t *pte;
 
        start = ROUNDDOWN(va, PGSIZE);
@@ -266,7 +266,7 @@ segment_alloc(struct Env *e, void *va, size_t len)
 //  - How might load_icode fail?  What might be wrong with the given input?
 //
 static void
-load_icode(struct Env *e, uint8_t *binary, size_t size)
+load_icode(env_t *e, uint8_t *binary, size_t size)
 {
        // Hints: 
        //  Load each program segment into virtual memory
@@ -297,7 +297,7 @@ load_icode(struct Env *e, uint8_t *binary, size_t size)
        //  to make sure that the environment starts executing there.
        //  What?  (See env_run() and env_pop_tf() below.)
 
-       struct Elf *elfhdr = (struct Elf*)binary;
+       elf_t *elfhdr = (elf_t *)binary;
        int i, r;
 
        // is this an elf?
@@ -311,7 +311,7 @@ load_icode(struct Env *e, uint8_t *binary, size_t size)
        // mappings for the kernel as does boot_pgdir
        lcr3(e->env_cr3);
 
-       struct Proghdr *phdr = (struct Proghdr*)(binary + elfhdr->e_phoff);
+       proghdr_t *phdr = (proghdr_t *)(binary + elfhdr->e_phoff);
        for (i = 0; i < elfhdr->e_phnum; i++, phdr++) {
                if (phdr->p_type != ELF_PROG_LOAD)
                        continue;
@@ -343,7 +343,7 @@ load_icode(struct Env *e, uint8_t *binary, size_t size)
 void
 env_create(uint8_t *binary, size_t size)
 {
-       struct Env *e;
+       env_t *e;
        int r;
 
        if ((r = env_alloc(&e, 0)) < 0)
@@ -355,7 +355,7 @@ env_create(uint8_t *binary, size_t size)
 // Frees env e and all memory it uses.
 // 
 void
-env_free(struct Env *e)
+env_free(env_t *e)
 {
        pte_t *pt;
        uint32_t pdeno, pteno;
@@ -407,7 +407,7 @@ env_free(struct Env *e)
 // to the caller).
 //
 void
-env_destroy(struct Env *e) 
+env_destroy(env_t *e) 
 {
        env_free(e);
 
@@ -431,7 +431,7 @@ env_destroy(struct Env *e)
 // This function does not return.
 //
 void
-env_pop_tf(struct Trapframe *tf)
+env_pop_tf(trapframe_t *tf)
 {
        __asm __volatile("movl %0,%%esp\n"
                "\tpopal\n"
@@ -449,7 +449,7 @@ env_pop_tf(struct Trapframe *tf)
 //  (This function does not return.)
 //
 void
-env_run(struct Env *e)
+env_run(env_t *e)
 {
        // Step 1: If this is a context switch (a new environment is running),
        //         then set 'curenv' to the new environment,
index 675d1d5..040fd9b 100644 (file)
@@ -1,31 +1,31 @@
 /* See COPYRIGHT for copyright information. */
 
-#ifndef JOS_KERN_ENV_H
-#define JOS_KERN_ENV_H
+#ifndef ROS_KERN_ENV_H
+#define ROS_KERN_ENV_H
 
 #include <inc/env.h>
 
-#ifndef JOS_MULTIENV
+#ifndef ROS_MULTIENV
 // Change this value to 1 once you're allowing multiple environments
 // (for UCLA: Lab 3, Part 3; for MIT: Lab 4).
-#define JOS_MULTIENV 0
+#define ROS_MULTIENV 0
 #endif
 
-extern struct Env *envs;               // All environments
-extern struct Env *NORACE curenv;              // Current environment
+extern env_t *envs;            // All environments
+extern env_t *NORACE curenv;           // Current environment
 
-LIST_HEAD(Env_list, Env);              // Declares 'struct Env_list'
+LIST_HEAD(env_list_t, env_t);          // Declares 'struct Env_list'
 
 void   env_init(void);
-int    env_alloc(struct Env **e, envid_t parent_id);
-void   env_free(struct Env *e);
+int            env_alloc(env_t **e, envid_t parent_id);
+void   env_free(env_t *e);
 void   env_create(uint8_t *binary, size_t size);
-void   (IN_HANDLER env_destroy)(struct Env *e);        // Does not return if e == curenv
+void   (IN_HANDLER env_destroy)(env_t *e);     // Does not return if e == curenv
 
-int    envid2env(envid_t envid, struct Env **env_store, bool checkperm);
+int    envid2env(envid_t envid, env_t **env_store, bool checkperm);
 // The following two functions do not return
-void   (IN_HANDLER env_run)(struct Env *e) __attribute__((noreturn));
-void   env_pop_tf(struct Trapframe *tf) __attribute__((noreturn));
+void   (IN_HANDLER env_run)(env_t *e) __attribute__((noreturn));
+void   env_pop_tf(trapframe_t *tf) __attribute__((noreturn));
 
 // For the grading script
 #define ENV_CREATE2(start, size)       {               \
@@ -40,4 +40,4 @@ void  env_pop_tf(struct Trapframe *tf) __attribute__((noreturn));
                (int)_binary_obj_##x##_size);           \
 }
 
-#endif // !JOS_KERN_ENV_H
+#endif // !ROS_KERN_ENV_H
index ecea06e..813d3e8 100644 (file)
@@ -1,9 +1,9 @@
 /* See COPYRIGHT for copyright information. */
 
-#ifndef JOS_KERN_KCLOCK_H
-#define JOS_KERN_KCLOCK_H
-#ifndef JOS_KERNEL
-# error "This is a JOS kernel header; user programs should not #include it"
+#ifndef ROS_KERN_KCLOCK_H
+#define ROS_KERN_KCLOCK_H
+#ifndef ROS_KERNEL
+# error "This is a ROS kernel header; user programs should not #include it"
 #endif
 
 #define        IO_RTC          0x070           /* RTC port */
@@ -30,4 +30,4 @@ unsigned mc146818_read(unsigned reg);
 void mc146818_write(unsigned reg, unsigned datum);
 void kclock_init(void);
 
-#endif // !JOS_KERN_KCLOCK_H
+#endif // !ROS_KERN_KCLOCK_H
index 6c77433..15c2d4b 100644 (file)
 #include <kern/pmap.h>
 #include <kern/env.h>
 
-extern const struct Stab __STAB_BEGIN__[];     // Beginning of stabs table
-extern const struct Stab __STAB_END__[];       // End of stabs table
+extern const stab_t __STAB_BEGIN__[];  // Beginning of stabs table
+extern const stab_t __STAB_END__[];    // End of stabs table
 extern const char __STABSTR_BEGIN__[];         // Beginning of string table
 extern const char __STABSTR_END__[];           // End of string table
 
-struct UserStabData {
-       const struct Stab *stabs;
-       const struct Stab *stab_end;
+typedef struct UserStabData {
+       const stab_t *stabs;
+       const stab_t *stab_end;
        const char *stabstr;
        const char *stabstr_end;
-};
+} user_stab_data_t;
 
 
 // stab_binsearch(stabs, region_left, region_right, type, addr)
@@ -61,7 +61,7 @@ struct UserStabData {
 //     will exit setting left = 118, right = 554.
 //
 static void
-stab_binsearch(const struct Stab *stabs, int *region_left, int *region_right,
+stab_binsearch(const stab_t *stabs, int *region_left, int *region_right,
               int type, uintptr_t addr)
 {
        int l = *region_left, r = *region_right, any_matches = 0;
@@ -115,9 +115,9 @@ stab_binsearch(const struct Stab *stabs, int *region_left, int *region_right,
 //     information into '*info'.
 //
 int
-debuginfo_eip(uintptr_t addr, struct Eipdebuginfo *info)
+debuginfo_eip(uintptr_t addr, eipdebuginfo_t *info)
 {
-       const struct Stab *stabs, *stab_end;
+       const stab_t *stabs, *stab_end;
        const char *stabstr, *stabstr_end;
        int lfile, rfile, lfun, rfun, lline, rline;
 
@@ -141,7 +141,7 @@ debuginfo_eip(uintptr_t addr, struct Eipdebuginfo *info)
                // to __STAB_BEGIN__, __STAB_END__, __STABSTR_BEGIN__, and
                // __STABSTR_END__) in a structure located at virtual address
                // USTABDATA.
-               const struct UserStabData *usd = (const struct UserStabData *) USTABDATA;
+               const user_stab_data_t *usd = (const user_stab_data_t *) USTABDATA;
 
                // Make sure this memory is valid.
                // Return -1 if it is not.  Hint: Call user_mem_check.
index 236af39..2b7ea2e 100644 (file)
@@ -1,20 +1,20 @@
-#ifndef JOS_KERN_KDEBUG_H
-#define JOS_KERN_KDEBUG_H
+#ifndef ROS_KERN_KDEBUG_H
+#define ROS_KERN_KDEBUG_H
 
 #include <inc/types.h>
 
 // Debug information about a particular instruction pointer
-struct Eipdebuginfo {
+typedef struct Eipdebuginfo {
        const char *eip_file;           // Source code filename for EIP
-       int eip_line;                   // Source code linenumber for EIP
+       int eip_line;                           // Source code linenumber for EIP
 
        const char *eip_fn_name;        // Name of function containing EIP
-                                       //  - Note: not null terminated!
-       int eip_fn_namelen;             // Length of function name
+                                                               //  - Note: not null terminated!
+       int eip_fn_namelen;                     // Length of function name
        uintptr_t eip_fn_addr;          // Address of start of function
-       int eip_fn_narg;                // Number of function arguments
-};
+       int eip_fn_narg;                        // Number of function arguments
+} eipdebuginfo_t;
 
-int debuginfo_eip(uintptr_t eip, struct Eipdebuginfo *info);
+int debuginfo_eip(uintptr_t eip, eipdebuginfo_t *info);
 
 #endif
index 1d95c35..03b5d9a 100644 (file)
@@ -1,4 +1,4 @@
-/* Simple linker script for the JOS kernel.
+/* Simple linker script for the ROS kernel.
    See the GNU ld 'info' manual ("info ld") to learn the syntax. */
 
 OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
index 644794d..c6fdda0 100644 (file)
@@ -27,7 +27,7 @@ typedef struct command {
        const char *NTS name;
        const char *NTS desc;
        // return -1 to force monitor to exit
-       int (*func)(int argc, char *NTS *NT COUNT(argc) argv, struct Trapframe* tf);
+       int (*func)(int argc, char *NTS *NT COUNT(argc) argv, trapframe_t *tf);
 } command_t;
 
 static command_t commands[] = {
@@ -43,7 +43,7 @@ static command_t commands[] = {
 
 /***** Implementations of basic kernel monitor commands *****/
 
-int mon_help(int argc, char **argv, struct Trapframe *tf)
+int mon_help(int argc, char **argv, trapframe_t *tf)
 {
        int i;
 
@@ -52,7 +52,7 @@ int mon_help(int argc, char **argv, struct Trapframe *tf)
        return 0;
 }
 
-int mon_kerninfo(int argc, char **argv, struct Trapframe *tf)
+int mon_kerninfo(int argc, char **argv, trapframe_t *tf)
 {
        extern char (SNT _start)[], (SNT etext)[], (SNT edata)[], (SNT end)[];
 
@@ -90,10 +90,10 @@ static char* function_of(uint32_t address)
        return stabstr + best_symtab->n_strx;
 }
 
-int mon_backtrace(int argc, char **argv, struct Trapframe *tf)
+int mon_backtrace(int argc, char **argv, trapframe_t *tf)
 {
        uint32_t* ebp, eip;
-       struct Eipdebuginfo debuginfo;
+       eipdebuginfo_t debuginfo;
        char buf[256];
        int j, i = 1;
        ebp = (uint32_t*)read_ebp();    
@@ -123,7 +123,7 @@ int mon_backtrace(int argc, char **argv, struct Trapframe *tf)
        return 0;
 }
 
-int mon_reboot(int argc, char **argv, struct Trapframe *tf)
+int mon_reboot(int argc, char **argv, trapframe_t *tf)
 {
        cprintf("[Irish Accent]: She's goin' down, Cap'n!\n");
        outb(0x92, 0x3);
@@ -138,7 +138,7 @@ int mon_reboot(int argc, char **argv, struct Trapframe *tf)
        return 0;
 }
 
-int mon_showmapping(int argc, char **argv, struct Trapframe *tf)
+int mon_showmapping(int argc, char **argv, trapframe_t *tf)
 {
        if (argc < 2) {
                cprintf("Shows virtual -> physical mappings for a virtual address range.\n");
@@ -147,7 +147,7 @@ int mon_showmapping(int argc, char **argv, struct Trapframe *tf)
        }
        pde_t* pgdir = (pde_t*)vpd;
        pte_t *pte, *pde;
-       struct Page* page;
+       page_t* page;
        uintptr_t start, i;
        size_t size;
        start = ROUNDDOWN(strtol(argv[1], 0, 16), PGSIZE);
@@ -174,7 +174,7 @@ int mon_showmapping(int argc, char **argv, struct Trapframe *tf)
        return 0;
 }
 
-int mon_setmapperm(int argc, char **argv, struct Trapframe *tf)
+int mon_setmapperm(int argc, char **argv, trapframe_t *tf)
 {
        if (argc < 3) {
                cprintf("Sets VIRT_ADDR's mapping's permissions to PERMS (in hex)\n");
@@ -185,7 +185,7 @@ int mon_setmapperm(int argc, char **argv, struct Trapframe *tf)
        }
        pde_t* pgdir = (pde_t*)vpd;
        pte_t *pte, *pde;
-       struct Page* page;
+       page_t* page;
        uintptr_t va;
        va = ROUNDDOWN(strtol(argv[1], 0, 16), PGSIZE);
        page = page_lookup(pgdir, (void*)va, &pte);
@@ -209,7 +209,7 @@ int mon_setmapperm(int argc, char **argv, struct Trapframe *tf)
        return 0;
 }
 
-int mon_cpuinfo(int argc, char **argv, struct Trapframe *tf)
+int mon_cpuinfo(int argc, char **argv, trapframe_t *tf)
 {
        extern uint8_t num_cpus;
 
@@ -228,7 +228,7 @@ int mon_cpuinfo(int argc, char **argv, struct Trapframe *tf)
 #define WHITESPACE "\t\r\n "
 #define MAXARGS 16
 
-static int runcmd(char *COUNT(CMDBUF_SIZE) real_buf, struct Trapframe* tf) {
+static int runcmd(char *COUNT(CMDBUF_SIZE) real_buf, trapframe_t *tf) {
        char *BND(real_buf, real_buf+CMDBUF_SIZE) buf = real_buf;
        int argc;
        char *NTS argv[MAXARGS];
@@ -267,7 +267,7 @@ static int runcmd(char *COUNT(CMDBUF_SIZE) real_buf, struct Trapframe* tf) {
        return 0;
 }
 
-void monitor(struct Trapframe* tf) {
+void monitor(trapframe_t *tf) {
        char *buf;
 
        cprintf("Welcome to the ROS kernel monitor!\n");
index 2a0fbbd..85ab289 100644 (file)
@@ -1,21 +1,23 @@
-#ifndef JOS_KERN_MONITOR_H
-#define JOS_KERN_MONITOR_H
-#ifndef JOS_KERNEL
-# error "This is a JOS kernel header; user programs should not #include it"
+#ifndef ROS_KERN_MONITOR_H
+#define ROS_KERN_MONITOR_H
+#ifndef ROS_KERNEL
+# error "This is a ROS kernel header; user programs should not #include it"
 #endif
 
+#include <kern/trap.h>
+
 // Activate the kernel monitor,
 // optionally providing a trap frame indicating the current state
 // (NULL if none).
-void (IN_HANDLER monitor)(struct Trapframe *tf);
+void (IN_HANDLER monitor)(trapframe_t *tf);
 
 // Functions implementing monitor commands.
-int mon_help(int argc, char *NTS *NT COUNT(argc) argv, struct Trapframe *tf);
-int mon_kerninfo(int argc, char *NTS *NT COUNT(argc) argv, struct Trapframe *tf);
-int mon_backtrace(int argc, char *NTS *NT COUNT(argc) argv, struct Trapframe *tf);
-int mon_reboot(int argc, char *NTS *NT COUNT(argc) argv, struct Trapframe *tf);
-int mon_showmapping(int argc, char *NTS *NT COUNT(argc) argv, struct Trapframe *tf);
-int mon_setmapperm(int argc, char *NTS *NT COUNT(argc) argv, struct Trapframe *tf);
-int mon_cpuinfo(int argc, char *NTS *NT COUNT(argc) argv, struct Trapframe *tf);
+int mon_help(int argc, char *NTS *NT COUNT(argc) argv, trapframe_t *tf);
+int mon_kerninfo(int argc, char *NTS *NT COUNT(argc) argv, trapframe_t *tf);
+int mon_backtrace(int argc, char *NTS *NT COUNT(argc) argv, trapframe_t *tf);
+int mon_reboot(int argc, char *NTS *NT COUNT(argc) argv, trapframe_t *tf);
+int mon_showmapping(int argc, char *NTS *NT COUNT(argc) argv, trapframe_t *tf);
+int mon_setmapperm(int argc, char *NTS *NT COUNT(argc) argv, trapframe_t *tf);
+int mon_cpuinfo(int argc, char *NTS *NT COUNT(argc) argv, trapframe_t *tf);
 
-#endif // !JOS_KERN_MONITOR_H
+#endif // !ROS_KERN_MONITOR_H
index a73cc50..4f06ffa 100644 (file)
@@ -28,10 +28,10 @@ pde_t* boot_pgdir;          // Virtual address of boot time page directory
 physaddr_t boot_cr3;           // Physical address of boot time page directory
 static char* boot_freemem;     // Pointer to next byte of free mem
 
-struct Page* pages;            // Virtual address of physical page array
-static struct Page_list page_free_list;        // Free list of physical pages
+page_t *pages;         // Virtual address of physical page array
+static page_list_t page_free_list;     // Free list of physical pages
 
-extern struct Env *envs;
+extern env_t *envs;
 
 // Global descriptor table.
 //
@@ -39,7 +39,7 @@ extern struct Env *envs;
 // To load the SS register, the CPL must equal the DPL.  Thus,
 // we must duplicate the segments for the user and the kernel.
 //
-struct Segdesc gdt[] =
+segdesc_t gdt[] =
 {
        // 0x0 - unused (always faults -- for trapping NULL far pointers)
        SEG_NULL,
@@ -60,7 +60,7 @@ struct Segdesc gdt[] =
        [GD_TSS >> 3] = SEG_NULL
 };
 
-struct Pseudodesc gdt_pd = {
+pseudodesc_t gdt_pd = {
        sizeof(gdt) - 1, (unsigned long) gdt
 };
 
@@ -461,8 +461,8 @@ i386_vm_init(void)
        // Your code goes here: 
        
        // round up to the nearest page
-       size_t page_array_size = ROUNDUP(npage*sizeof(struct Page), PGSIZE);
-       pages = (struct Page*)boot_alloc(page_array_size, PGSIZE);
+       size_t page_array_size = ROUNDUP(npage*sizeof(page_t), PGSIZE);
+       pages = (page_t *)boot_alloc(page_array_size, PGSIZE);
        memset(pages, 0, page_array_size);
        if (page_array_size > PTSIZE) {
                warn("page_array_size bigger than PTSIZE, userland will not see all pages");
@@ -471,7 +471,7 @@ i386_vm_init(void)
        boot_map_segment(pgdir, UPAGES, page_array_size, PADDR(pages), PTE_U | PTE_G);
 
        //////////////////////////////////////////////////////////////////////
-       // Make 'envs' point to an array of size 'NENV' of 'struct Env'.
+       // Make 'envs' point to an array of size 'NENV' of 'env_t'.
        // Map this array read-only by the user at linear address UENVS
        // (ie. perm = PTE_U | PTE_P).
        // Permissions:
@@ -479,8 +479,8 @@ i386_vm_init(void)
        //    - the image of envs mapped at UENVS  -- kernel R, user R
        
        // round up to the nearest page
-       size_t env_array_size = ROUNDUP(NENV*sizeof(struct Env), PGSIZE);
-       envs = (struct Env*)boot_alloc(env_array_size, PGSIZE);
+       size_t env_array_size = ROUNDUP(NENV*sizeof(env_t), PGSIZE);
+       envs = (env_t *)boot_alloc(env_array_size, PGSIZE);
        memset(envs, 0, env_array_size);
        if (env_array_size > PTSIZE) {
                warn("env_array_size bigger than PTSIZE, userland will not see all environments");
@@ -569,12 +569,12 @@ check_boot_pgdir(bool pse)
        pgdir = boot_pgdir;
 
        // check pages array
-       n = ROUNDUP(naddrpage*sizeof(struct Page), PGSIZE);
+       n = ROUNDUP(naddrpage*sizeof(page_t), PGSIZE);
        for (i = 0; i < n; i += PGSIZE)
                assert(check_va2pa(pgdir, UPAGES + i) == PADDR(pages) + i);
 
        // check envs array (new test for lab 3)
-       n = ROUNDUP(NENV*sizeof(struct Env), PGSIZE);
+       n = ROUNDUP(NENV*sizeof(env_t), PGSIZE);
        for (i = 0; i < n; i += PGSIZE)
                assert(check_va2pa(pgdir, UENVS + i) == PADDR(envs) + i);
 
@@ -693,7 +693,7 @@ get_vaperms(pde_t *pgdir, uintptr_t va)
                
 // --------------------------------------------------------------
 // Tracking of physical pages.
-// The 'pages' array has one 'struct Page' entry per physical page.
+// The 'pages' array has one 'page_t' entry per physical page.
 // Pages are reference counted, and free pages are kept on a linked list.
 // --------------------------------------------------------------
 
@@ -754,7 +754,7 @@ page_init(void)
 // Note that the corresponding physical page is NOT initialized!
 //
 static void
-page_initpp(struct Page *pp)
+page_initpp(page_t *pp)
 {
        memset(pp, 0, sizeof(*pp));
 }
@@ -774,7 +774,7 @@ page_initpp(struct Page *pp)
 // Hint: use LIST_FIRST, LIST_REMOVE, and page_initpp
 // Hint: pp_ref should not be incremented 
 int
-page_alloc(struct Page **pp_store)
+page_alloc(page_t **pp_store)
 {
        if (LIST_EMPTY(&page_free_list))
                return -E_NO_MEM;
@@ -789,7 +789,7 @@ page_alloc(struct Page **pp_store)
 // (This function should only be called when pp->pp_ref reaches 0.)
 //
 void
-page_free(struct Page *pp)
+page_free(page_t *pp)
 {
        if (pp->pp_ref)
                panic("Attempting to free page with non-zero reference count!");
@@ -801,7 +801,7 @@ page_free(struct Page *pp)
 // freeing it if there are no more refs.
 //
 void
-page_decref(struct Page* pp)
+page_decref(page_t *pp)
 {
        if (--pp->pp_ref == 0)
                page_free(pp);
@@ -828,7 +828,7 @@ pte_t*
 pgdir_walk(pde_t *pgdir, const void *SNT va, int create)
 {
        pde_t* the_pde = &pgdir[PDX(va)];
-       struct Page* new_table;
+       page_t *new_table;
 
        if (*the_pde & PTE_P) {
                if (*the_pde & PTE_PS)
@@ -874,7 +874,7 @@ pgdir_walk(pde_t *pgdir, const void *SNT va, int create)
 // regular pages into something that was already jumbo, and the overloading
 // of the PTE_PS and PTE_PAT flags...
 int
-page_insert(pde_t *pgdir, struct Page *pp, void *va, int perm) 
+page_insert(pde_t *pgdir, page_t *pp, void *va, int perm) 
 {
        pte_t* pte = pgdir_walk(pgdir, va, 1);
        if (!pte)
@@ -901,8 +901,7 @@ page_insert(pde_t *pgdir, struct Page *pp, void *va, int perm)
 // Hint: the TA solution uses pgdir_walk and pa2page.
 //
 // For jumbos, right now this returns the first Page* in the 4MB
-struct Page *
-page_lookup(pde_t *pgdir, void *va, pte_t **pte_store)
+page_t *page_lookup(pde_t *pgdir, void *va, pte_t **pte_store)
 {
        pte_t* pte = pgdir_walk(pgdir, va, 0);
        if (!pte || !(*pte & PTE_P))
@@ -932,7 +931,7 @@ void
 page_remove(pde_t *pgdir, void *va)
 {
        pte_t* pte;
-       struct Page* page;
+       page_t *page;
        page = page_lookup(pgdir, va, &pte);
        if (!page)
                return;
@@ -997,7 +996,7 @@ static void *DANGEROUS user_mem_check_addr;
 // -E_FAULT.
 
 void *COUNT(len)
-user_mem_check(struct Env *env, const void *DANGEROUS va, size_t len, int perm)
+user_mem_check(env_t *env, const void *DANGEROUS va, size_t len, int perm)
 {
        // TODO - will need to sort this out wrt page faulting / PTE_P
        // also could be issues with sleeping and waking up to find pages
@@ -1041,7 +1040,7 @@ user_mem_check(struct Env *env, const void *DANGEROUS va, size_t len, int perm)
 // If it cannot, 'env' is destroyed.
 //
 void *COUNT(len)
-user_mem_assert(struct Env *env, const void *DANGEROUS va, size_t len, int perm)
+user_mem_assert(env_t *env, const void *DANGEROUS va, size_t len, int perm)
 {
     void *COUNT(len) res = user_mem_check(env,va,len,perm | PTE_U);
        if (!res) {
@@ -1056,8 +1055,8 @@ user_mem_assert(struct Env *env, const void *DANGEROUS va, size_t len, int perm)
 void
 page_check(void)
 {
-       struct Page *pp, *pp0, *pp1, *pp2;
-       struct Page_list fl;
+       page_t *pp, *pp0, *pp1, *pp2;
+       page_list_t fl;
        pte_t *ptep;
 
        // should be able to allocate three pages
index f98be20..31a255f 100644 (file)
@@ -1,18 +1,16 @@
 /* See COPYRIGHT for copyright information. */
 
-#ifndef JOS_KERN_PMAP_H
-#define JOS_KERN_PMAP_H
-#ifndef JOS_KERNEL
-# error "This is a JOS kernel header; user programs should not #include it"
+#ifndef ROS_KERN_PMAP_H
+#define ROS_KERN_PMAP_H
+#ifndef ROS_KERNEL
+# error "This is a ROS kernel header; user programs should not #include it"
 #endif
 
 #include <inc/memlayout.h>
 #include <inc/assert.h>
 #include <inc/multiboot.h>
 #include <kern/atomic.h>
-
-struct Env;
-
+#include <kern/env.h>
 
 /* This macro takes a kernel virtual address -- an address that points above
  * KERNBASE, where the machine's maximum 256MB of physical memory is mapped --
@@ -42,14 +40,14 @@ struct Env;
 
 extern char bootstacktop[], bootstack[];
 
-extern struct Page *pages;
+extern page_t *pages;
 extern size_t npage;
 
 extern physaddr_t boot_cr3;
 extern pde_t *boot_pgdir;
 
-extern struct Segdesc (COUNT(SEG_COUNT) gdt)[];
-extern struct Pseudodesc gdt_pd;
+extern segdesc_t (COUNT(SEG_COUNT) gdt)[];
+extern pseudodesc_t gdt_pd;
 
 void   i386_detect_memory(multiboot_info_t *mbi);
 void   i386_print_memory_map(multiboot_info_t *mbi);
@@ -58,22 +56,22 @@ void        i386_vm_init(void);
 
 void   page_init(void);
 void   page_check(void);
-int    page_alloc(struct Page **pp_store);
-void   page_free(struct Page *pp);
-int    page_insert(pde_t *pgdir, struct Page *pp, void *va, int perm);
+int    page_alloc(page_t **pp_store);
+void   page_free(page_t *pp);
+int    page_insert(pde_t *pgdir, page_t *pp, void *va, int perm);
 void   page_remove(pde_t *pgdir, void *va);
-struct Page *page_lookup(pde_t *pgdir, void *va, pte_t **pte_store);
-void   page_decref(struct Page *pp);
+page_t *page_lookup(pde_t *pgdir, void *va, pte_t **pte_store);
+void   page_decref(page_t *pp);
 
 void setup_default_mtrrs(barrier_t* smp_barrier);
 void   tlb_invalidate(pde_t *pgdir, void *va);
 void tlb_flush_global(void);
 
 void *COUNT(len)
-user_mem_check(struct Env *env, const void *DANGEROUS va, size_t len, int perm);
+user_mem_check(env_t *env, const void *DANGEROUS va, size_t len, int perm);
 
 void *COUNT(len)
-user_mem_assert(struct Env *env, const void *DANGEROUS va, size_t len, int perm);
+user_mem_assert(env_t *env, const void *DANGEROUS va, size_t len, int perm);
 
 static inline void cache_flush(void)
 {
@@ -85,32 +83,28 @@ static inline void cacheline_flush(void* addr)
        clflush((uintptr_t*)addr);
 }
 
-static inline ppn_t
-page2ppn(struct Page *pp)
+static inline ppn_t page2ppn(page_t *pp)
 {
        return pp - pages;
 }
 
-static inline physaddr_t
-page2pa(struct Page *pp)
+static inline physaddr_t page2pa(page_t *pp)
 {
        return page2ppn(pp) << PGSHIFT;
 }
 
-static inline struct Page*
-pa2page(physaddr_t pa)
+static inline page_t* pa2page(physaddr_t pa)
 {
        if (PPN(pa) >= npage)
                warn("pa2page called with pa larger than npage");
        return &pages[PPN(pa)];
 }
 
-static inline void*
-page2kva(struct Page *pp)
+static inline void* page2kva(page_t *pp)
 {
        return KADDR(page2pa(pp));
 }
 
 pte_t *pgdir_walk(pde_t *pgdir, const void *va, int create);
 
-#endif /* !JOS_KERN_PMAP_H */
+#endif /* !ROS_KERN_PMAP_H */
index 754f6a0..d751fb5 100644 (file)
@@ -1,12 +1,12 @@
 /* See COPYRIGHT for copyright information. */
 
-#ifndef JOS_KERN_SCHED_H
-#define JOS_KERN_SCHED_H
-#ifndef JOS_KERNEL
-# error "This is a JOS kernel header; user programs should not #include it"
+#ifndef ROS_KERN_SCHED_H
+#define ROS_KERN_SCHED_H
+#ifndef ROS_KERNEL
+# error "This is a ROS kernel header; user programs should not #include it"
 #endif
 
 // This function does not return.
 void sched_yield(void) __attribute__((noreturn));
 
-#endif // !JOS_KERN_SCHED_H
+#endif // !ROS_KERN_SCHED_H
index 9adb47e..f9d86e0 100644 (file)
@@ -20,19 +20,19 @@ uintptr_t smp_stack_top;
 barrier_t generic_barrier;
 
 /* Breaks us out of the waiting loop in smp_boot */
-static void smp_boot_handler(struct Trapframe *tf)
+static void smp_boot_handler(trapframe_t *tf)
 {
        {HANDLER_ATOMIC atomic_dec(&waiting); }
 }
 
-static void smp_mtrr_handler(struct Trapframe *tf)
+static void smp_mtrr_handler(trapframe_t *tf)
 {
        setup_default_mtrrs(&generic_barrier);
 }
 
 void smp_boot(void)
 {
-       struct Page* smp_stack;
+       page_t *smp_stack;
        extern isr_t interrupt_handlers[];
        // NEED TO GRAB A LOWMEM FREE PAGE FOR AP BOOTUP CODE
        // page1 (2nd page) is reserved, hardcoded in pmap.c
@@ -51,7 +51,11 @@ void smp_boot(void)
 
        // set up the local APIC timer to fire 0xf0 once.  hardcoded to break
        // out of the spinloop on waiting.  really just want to wait a little
+<<<<<<< HEAD:kern/smp.c
        lapic_set_timer(0x0000ffff, 0xf0, 0); // TODO - fix timing
+=======
+       lapic_set_timer(SMP_BOOT_TIMEOUT, boot_vector, 0); // TODO - fix timing
+>>>>>>> 45d6e6c... Cleanup JOS references and add typedefs:kern/smp.c
        // set the function handler to respond to this
        register_interrupt_handler(interrupt_handlers, 0xf0, smp_boot_handler);
 
@@ -70,7 +74,11 @@ void smp_boot(void)
        // second SIPI
        waiting = 1;
        send_startup_ipi(0x01);
+<<<<<<< HEAD:kern/smp.c
        lapic_set_timer(0x000fffff, 0xf0, 0); // TODO - fix timing
+=======
+       lapic_set_timer(SMP_BOOT_TIMEOUT, boot_vector, 0); // TODO - fix timing
+>>>>>>> 45d6e6c... Cleanup JOS references and add typedefs:kern/smp.c
        while(waiting) // wait for the second SIPI to take effect
                cpu_relax();
        */
@@ -134,7 +142,7 @@ uint32_t smp_main(void)
        */
        
        // Get a per-core kernel stack
-       struct Page* my_stack;
+       page_t *my_stack;
        if (page_alloc(&my_stack))
                panic("Unable to alloc a per-core stack!");
        memset(page2kva(my_stack), 0, PGSIZE);
@@ -142,30 +150,30 @@ uint32_t smp_main(void)
        // Set up a gdt / gdt_pd for this core, stored at the top of the stack
        // This is necessary, eagle-eyed readers know why
        // GDT should be 4-byte aligned.  TS isn't aligned.  Not sure if it matters.
-       struct Pseudodesc* my_gdt_pd = page2kva(my_stack) + PGSIZE - 
-               sizeof(struct Pseudodesc) - sizeof(struct Segdesc)*SEG_COUNT;
-       struct Segdesc* my_gdt = page2kva(my_stack) + PGSIZE - 
-               sizeof(struct Segdesc)*SEG_COUNT;
+       pseudodesc_t *my_gdt_pd = page2kva(my_stack) + PGSIZE - 
+               sizeof(pseudodesc_t) - sizeof(segdesc_t)*SEG_COUNT;
+       segdesc_t *my_gdt = page2kva(my_stack) + PGSIZE - 
+               sizeof(segdesc_t)*SEG_COUNT;
        // TS also needs to be permanent
-       struct Taskstate* my_ts = page2kva(my_stack) + PGSIZE - 
-               sizeof(struct Pseudodesc) - sizeof(struct Segdesc)*SEG_COUNT - 
-               sizeof(struct Taskstate);
+       taskstate_t *my_ts = page2kva(my_stack) + PGSIZE - 
+               sizeof(pseudodesc_t) - sizeof(segdesc_t)*SEG_COUNT - 
+               sizeof(taskstate_t);
        // Usable portion of the KSTACK grows down from here
        // Won't actually start using this stack til our first interrupt
        // (issues with changing the stack pointer and then trying to "return")
        uintptr_t my_stack_top = (uintptr_t)my_ts;
 
        // Build and load the gdt / gdt_pd
-       memcpy(my_gdt, gdt, sizeof(struct Segdesc)*SEG_COUNT);
-       *my_gdt_pd = (struct Pseudodesc) { 
-               sizeof(struct Segdesc)*SEG_COUNT - 1, (uintptr_t) my_gdt };
+       memcpy(my_gdt, gdt, sizeof(segdesc_t)*SEG_COUNT);
+       *my_gdt_pd = (pseudodesc_t) { 
+               sizeof(segdesc_t)*SEG_COUNT - 1, (uintptr_t) my_gdt };
        asm volatile("lgdt %0" : : "m"(*my_gdt_pd));
 
        // Need to set the TSS so we know where to trap on this core
        my_ts->ts_esp0 = my_stack_top;
        my_ts->ts_ss0 = GD_KD;
        // Initialize the TSS field of my_gdt.
-       my_gdt[GD_TSS >> 3] = SEG16(STS_T32A, (uint32_t) (my_ts), sizeof(struct Taskstate), 0);
+       my_gdt[GD_TSS >> 3] = SEG16(STS_T32A, (uint32_t) (my_ts), sizeof(taskstate_t), 0);
        my_gdt[GD_TSS >> 3].sd_s = 0;
        // Load the TSS
        ltr(GD_TSS);
index 771c922..b5fc6e2 100644 (file)
@@ -55,7 +55,7 @@ static int
 sys_env_destroy(envid_t envid)
 {
        int r;
-       struct Env *e;
+       env_t *e;
 
        if ((r = envid2env(envid, &e, 1)) < 0)
                return r;
@@ -83,7 +83,7 @@ syscall(uint32_t syscallno, uint32_t a1, uint32_t a2, uint32_t a3, uint32_t a4,
        
        switch (syscallno) {
                case 0:
-                       sys_cputs(a1, a2);
+                       sys_cputs((char *DANGEROUS)a1, (size_t)a2);
                        return 0;
                case 1:
                        return sys_cgetc();
index 81ab8e8..67639bc 100644 (file)
@@ -1,7 +1,7 @@
-#ifndef JOS_KERN_SYSCALL_H
-#define JOS_KERN_SYSCALL_H
-#ifndef JOS_KERNEL
-# error "This is a JOS kernel header; user programs should not #include it"
+#ifndef ROS_KERN_SYSCALL_H
+#define ROS_KERN_SYSCALL_H
+#ifndef ROS_KERNEL
+# error "This is ROS kernel header; user programs should not #include it"
 #endif
 
 #include <inc/syscall.h>
@@ -9,4 +9,4 @@
 uint32_t (SYNCHRONOUS syscall)(uint32_t num, uint32_t a1, uint32_t a2,
                                uint32_t a3, uint32_t a4, uint32_t a5);
 
-#endif /* !JOS_KERN_SYSCALL_H */
+#endif /* !ROS_KERN_SYSCALL_H */
index 3919c11..2f7f440 100644 (file)
@@ -235,7 +235,7 @@ void test_bitmasks(void)
 
 checklist_t* the_global_list;
 
-void test_checklist_handler(struct Trapframe *tf)
+void test_checklist_handler(trapframe_t *tf)
 {
        for (int i = 0; i < SMP_BOOT_TIMEOUT; i++);
        for (int i = 0; i < SMP_BOOT_TIMEOUT; i++);
@@ -276,7 +276,7 @@ void test_checklists(void)
 
 /* Helper Functions */
 
-void test_hello_world_handler(struct Trapframe *tf)
+void test_hello_world_handler(trapframe_t *tf)
 {
        cprintf("Incoming IRQ, ISR: %d on core %d with tf at 0x%08x\n", 
                tf->tf_trapno, lapic_get_id(), tf);
@@ -284,7 +284,7 @@ void test_hello_world_handler(struct Trapframe *tf)
 
 uint32_t print_info_lock = 0;
 
-void test_print_info_handler(struct Trapframe *tf)
+void test_print_info_handler(trapframe_t *tf)
 {
        spin_lock_irqsave(&print_info_lock);
        cprintf("----------------------------\n");
@@ -310,7 +310,7 @@ void test_print_info_handler(struct Trapframe *tf)
        spin_unlock_irqsave(&print_info_lock);
 }
 
-void test_barrier_handler(struct Trapframe *tf)
+void test_barrier_handler(trapframe_t *tf)
 {
        cprintf("Round 1: Core %d\n", lapic_get_id());
        waiton_barrier(&test_cpu_array);
index 443fd39..d3f5d74 100644 (file)
@@ -18,8 +18,8 @@ void test_interrupts_irqsave(void);
 void test_bitmasks(void);
 void test_checklists(void);
 
-void test_hello_world_handler(struct Trapframe *tf);
-void test_print_info_handler(struct Trapframe *tf);
-void test_barrier_handler(struct Trapframe *tf);
+void test_hello_world_handler(trapframe_t *tf);
+void test_print_info_handler(trapframe_t *tf);
+void test_barrier_handler(trapframe_t *tf);
 
 #endif /* !ROS_INC_TESTING_H */
index 9c9d45e..3d0b12c 100644 (file)
 #include <kern/syscall.h>
 #include <kern/apic.h>
 
-static struct Taskstate ts;
+static taskstate_t ts;
 
 /* Interrupt descriptor table.  (Must be built at run time because
  * shifted function addresses can't be represented in relocation records.)
  */
-// should align this on an 8 byte boundary (SDM V3A 5-13)
-struct Gatedesc idt[256] = { { 0 } };
-struct Pseudodesc idt_pd = {
+// Aligned on an 8 byte boundary (SDM V3A 5-13)
+gatedesc_t __attribute__ ((aligned (8))) idt[256] = { { 0 } };
+pseudodesc_t idt_pd = {
        sizeof(idt) - 1, (uint32_t) idt
 };
 
@@ -68,7 +68,7 @@ static const char *NTS (IN_HANDLER trapname)(int trapno)
 void
 idt_init(void)
 {
-       extern struct Segdesc gdt[];
+       extern segdesc_t gdt[];
        
        // This table is made in trapentry.S by each macro in that file.
        // It is layed out such that the ith entry is the ith's traphandler's
@@ -104,7 +104,7 @@ idt_init(void)
 
        // Initialize the TSS field of the gdt.
        gdt[GD_TSS >> 3] = SEG16(STS_T32A, (uint32_t) (&ts),
-                                       sizeof(struct Taskstate), 0);
+                                       sizeof(taskstate_t), 0);
        gdt[GD_TSS >> 3].sd_s = 0;
 
        // Load the TSS
@@ -124,7 +124,7 @@ idt_init(void)
 }
 
 void
-(IN_HANDLER print_trapframe)(struct Trapframe *tf)
+(IN_HANDLER print_trapframe)(trapframe_t *tf)
 {
        cprintf("TRAP frame at %p\n", tf);
        print_regs(&tf->tf_regs);
@@ -140,7 +140,7 @@ void
 }
 
 void
-(IN_HANDLER print_regs)(struct PushRegs *regs)
+(IN_HANDLER print_regs)(push_regs_t *regs)
 {
        cprintf("  edi  0x%08x\n", regs->reg_edi);
        cprintf("  esi  0x%08x\n", regs->reg_esi);
@@ -153,7 +153,7 @@ void
 }
 
 static void
-(IN_HANDLER trap_dispatch)(struct Trapframe *tf)
+(IN_HANDLER trap_dispatch)(trapframe_t *tf)
 {
        // Handle processor exceptions.
        
@@ -189,7 +189,7 @@ static void
 }
 
 void
-(IN_HANDLER trap)(struct Trapframe *tf)
+(IN_HANDLER trap)(trapframe_t *tf)
 {
        cprintf("Incoming TRAP frame at %p\n", tf);
 
@@ -221,7 +221,7 @@ void
 }
 
 void
-(IN_HANDLER irq_handler)(struct Trapframe *tf)
+(IN_HANDLER irq_handler)(trapframe_t *tf)
 {
        //if (lapic_get_id())
        //      cprintf("Incoming IRQ, ISR: %d on core %d\n", tf->tf_trapno, lapic_get_id());
@@ -253,7 +253,7 @@ register_interrupt_handler(isr_t table[], uint8_t isr, isr_t handler)
 }
 
 void
-page_fault_handler(struct Trapframe *tf)
+page_fault_handler(trapframe_t *tf)
 {
        uint32_t fault_va;
 
index 1669300..95368b6 100644 (file)
@@ -1,25 +1,25 @@
 /* See COPYRIGHT for copyright information. */
 
-#ifndef JOS_KERN_TRAP_H
-#define JOS_KERN_TRAP_H
-#ifndef JOS_KERNEL
-# error "This is a JOS kernel header; user programs should not #include it"
+#ifndef ROS_KERN_TRAP_H
+#define ROS_KERN_TRAP_H
+#ifndef ROS_KERNEL
+# error "This is an ROS kernel header; user programs should not #include it"
 #endif
 
 #include <inc/trap.h>
 #include <inc/mmu.h>
 
 // func ptr for interrupt service routines
-typedef void (*isr_t)(struct Trapframe* tf);
+typedef void (*isr_t)(trapframe_t* tf);
 
 /* The kernel's interrupt descriptor table */
-extern struct Gatedesc idt[];
+extern gatedesc_t idt[];
 
 void idt_init(void);
 void register_interrupt_handler(isr_t (COUNT(256)table)[], uint8_t isr, isr_t handler);
-void (IN_HANDLER print_regs)(struct PushRegs *regs);
-void (IN_HANDLER print_trapframe)(struct Trapframe *tf);
-void (IN_HANDLER page_fault_handler)(struct Trapframe *);
-void backtrace(struct Trapframe *);
+void (IN_HANDLER print_regs)(push_regs_t *regs);
+void (IN_HANDLER print_trapframe)(trapframe_t *tf);
+void (IN_HANDLER page_fault_handler)(trapframe_t *tf);
+void backtrace(trapframe_t *tf);
 
-#endif /* JOS_KERN_TRAP_H */
+#endif /* ROS_KERN_TRAP_H */
index 4eb61fb..bc48d68 100644 (file)
@@ -5,7 +5,7 @@
 
 extern void umain(int argc, char **argv);
 
-volatile struct Env *env;
+volatile env_t *env;
 char *binaryname = "(PROGRAM NAME UNKNOWN)";
 
 void
index 58f9afd..878cde2 100644 (file)
@@ -6,7 +6,7 @@ char *argv0;
 /*
  * Panic is called on unresolvable fatal errors.
  * It prints "panic: <message>", then causes a breakpoint exception,
- * which causes JOS to enter the JOS kernel monitor.
+ * which causes ROS to enter the ROS kernel monitor.
  */
 void
 _panic(const char *file, int line, const char *fmt,...)
index 59d90c6..4098984 100644 (file)
 // in order to make the lines output to the console atomic
 // and prevent interrupts from causing context switches
 // in the middle of a console output line and such.
-struct printbuf {
+typedef struct printbuf {
        int idx;        // current buffer index
        int cnt;        // total bytes printed so far
        char buf[256];
-};
+} printbuf_t;
 
 
 static void
-putch(int ch, struct printbuf *b)
+putch(int ch, printbuf_t *b)
 {
        b->buf[b->idx++] = ch;
        if (b->idx == 256-1) {
@@ -37,7 +37,7 @@ putch(int ch, struct printbuf *b)
 int
 vcprintf(const char *fmt, va_list ap)
 {
-       struct printbuf b;
+       printbuf_t b;
 
        b.idx = 0;
        b.cnt = 0;
index 1a6ec71..ab26a77 100644 (file)
@@ -37,9 +37,8 @@ static const char * const error_string[MAXERROR + 1] =
  * Print a number (base <= 16) in reverse order,
  * using specified putch function and associated pointer putdat.
  */
-static void
-printnum(void (*putch)(int, void*), void *putdat,
-        unsigned long long num, unsigned base, int width, int padc)
+static void printnum(void (*putch)(int, void*), void *putdat,
+                        unsigned long long num, unsigned base, int width, int padc)
 {
        // first recursively print all preceding (more significant) digits
        if (num >= base) {
@@ -56,8 +55,7 @@ printnum(void (*putch)(int, void*), void *putdat,
 
 // Get an unsigned int of various possible sizes from a varargs list,
 // depending on the lflag parameter.
-static unsigned long long
-getuint(va_list *ap, int lflag)
+static unsigned long long getuint(va_list *ap, int lflag)
 {
        if (lflag >= 2)
                return va_arg(*ap, unsigned long long);
@@ -69,8 +67,7 @@ getuint(va_list *ap, int lflag)
 
 // Same as getuint but signed - can't use getuint
 // because of sign extension
-static long long
-getint(va_list *ap, int lflag)
+static long long getint(va_list *ap, int lflag)
 {
        if (lflag >= 2)
                return va_arg(*ap, long long);
@@ -84,8 +81,7 @@ getint(va_list *ap, int lflag)
 // Main function to format and print a string.
 void printfmt(void (*putch)(int, void*), void *putdat, const char *fmt, ...);
 
-void
-vprintfmt(void (*putch)(int, void*), void *putdat, const char *fmt, va_list ap)
+void vprintfmt(void (*putch)(int, void*), void *putdat, const char *fmt, va_list ap)
 {
        register const char *p;
        register int ch, err;
@@ -247,8 +243,7 @@ vprintfmt(void (*putch)(int, void*), void *putdat, const char *fmt, va_list ap)
        }
 }
 
-void
-printfmt(void (*putch)(int, void*), void *putdat, const char *fmt, ...)
+void printfmt(void (*putch)(int, void*), void *putdat, const char *fmt, ...)
 {
        va_list ap;
 
@@ -257,24 +252,22 @@ printfmt(void (*putch)(int, void*), void *putdat, const char *fmt, ...)
        va_end(ap);
 }
 
-struct sprintbuf {
+typedef struct sprintbuf {
        char *buf;
        char *ebuf;
        int cnt;
-};
+} sprintbuf_t;
 
-static void
-sprintputch(int ch, struct sprintbuf *b)
+static void sprintputch(int ch, sprintbuf_t *b)
 {
        b->cnt++;
        if (b->buf < b->ebuf)
                *b->buf++ = ch;
 }
 
-int
-vsnprintf(char *buf, int n, const char *fmt, va_list ap)
+int vsnprintf(char *buf, int n, const char *fmt, va_list ap)
 {
-       struct sprintbuf b = {buf, buf+n-1, 0};
+       sprintbuf_t b = {buf, buf+n-1, 0};
 
        if (buf == NULL || n < 1)
                return -E_INVAL;
@@ -288,8 +281,7 @@ vsnprintf(char *buf, int n, const char *fmt, va_list ap)
        return b.cnt;
 }
 
-int
-snprintf(char *buf, int n, const char *fmt, ...)
+int snprintf(char *buf, int n, const char *fmt, ...)
 {
        va_list ap;
        int rc;
index eef92ed..af82c1c 100644 (file)
@@ -1,8 +1,7 @@
 // hello, world
 #include <inc/lib.h>
 
-void
-umain(void)
+void umain(void)
 {
        cprintf("goodbye, world!\n");
        // this is just their way of generating a pagefault..., until now!
index 18d949c..e4e96b4 100644 (file)
@@ -1,4 +1,4 @@
-/* Simple linker script for JOS user-level programs.
+/* Simple linker script for ROS user-level programs.
    See the GNU ld 'info' manual ("info ld") to learn the syntax. */
 
 OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")