diff options
Diffstat (limited to 'kernel/old/include/user.h')
-rw-r--r-- | kernel/old/include/user.h | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/kernel/old/include/user.h b/kernel/old/include/user.h deleted file mode 100644 index 4d9402f..0000000 --- a/kernel/old/include/user.h +++ /dev/null @@ -1,138 +0,0 @@ -/** -** @file user.h -** -** @author CSCI-452 class of 20245 -** -** @brief Declarations of user-level code management routines -*/ - -#ifndef USER_H_ -#define USER_H_ - -#include <common.h> - -#include <procs.h> -#include <x86/arch.h> - -// default value for EFLAGS in new processes -#define DEFAULT_EFLAGS (EFL_MB1 | EFL_IF) - -/* -** General (C and/or assembly) definitions -*/ - -#ifndef ASM_SRC - -/* -** Start of C-only definitions -*/ - -/* -** Types -*/ - -/* -** Blob file organization -** -** The file begins with a four-byte magic number and a four-byte integer -** indicating the number of ELF files contained in the blob. This is -** followed by an array of 32-byte file table entries, and then the contents -** of the ELF files in the order they appear in the program file table. -** -** Bytes Contents -** ----- ---------------------------- -** 0 - 3 File magic number ("BLB\0") -** 4 - 7 Number of ELF files in blob ("n") -** 8 - n*32+8 Program file table -** n*32+9 - ? ELF file contents -** -** Each program file table entry contains the following information: -** -** name File name (up to 19 characters long) -** offset Byte offset to the ELF header for this file -** size Size of this ELF file, in bytes -** flags Flags related to this file -*/ - -// user program blob header -typedef struct header_s { - char magic[4]; - uint32_t num; -} header_t; - -// length of the file name field -#define NAMELEN 20 - -// program descriptor -typedef struct prog_s { - char name[NAMELEN]; // truncated name (15 chars) - uint32_t offset; // offset from the beginning of the blob - uint32_t size; // size of this ELF module - uint32_t flags; // miscellaneous flags -} prog_t; - -/* -** Globals -*/ - -/* -** Prototypes -*/ - -/** -** Name: user_init -** -** Initializes the user support module. -*/ -void user_init( void ); - -/** -** Name: user_locate -** -** Locates a user program in the user code archive. -** -** @param what The ID of the user program to find -** -** @return pointer to the program table entry in the code archive, or NULL -*/ -prog_t *user_locate( uint_t what ); - -/** -** Name: user_duplicate -** -** Duplicates the memory setup for an existing process. -** -** @param new The PCB for the new copy of the program -** @param old The PCB for the existing the program -** -** @return the status of the duplicate attempt -*/ -int user_duplicate( pcb_t *new, pcb_t *old ); - -/** -** Name: user_load -** -** Loads a user program from the user code archive into memory. -** Allocates all needed frames and sets up the VM tables. -** -** @param prog A pointer to the program table entry to be loaded -** @param pcb The PCB for the program being loaded -** @param args The argument vector for the program -** -** @return the status of the load attempt -*/ -int user_load( prog_t *prog, pcb_t *pcb, const char **args ); - -/** -** Name: user_cleanup -** -** "Unloads" a user program. Deallocates all memory frames and -** cleans up the VM structures. -** -** @param pcb The PCB of the program to be cleaned up -*/ -void user_cleanup( pcb_t *pcb ); - -#endif /* !ASM_SRC */ - -#endif |