about summary refs log tree commit diff stats
path: root/kernel.soso/main.c
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-01-01 18:22:19 -0800
committerKartik Agaram <vc@akkartik.com>2020-01-01 18:42:48 -0800
commit65409d2312e702a48d3cf5b32479d25266bda3c3 (patch)
tree62a7262fce61f2302109246da4536ce6f8e9ef80 /kernel.soso/main.c
parenta6da50ad30d2e1825575ffef497ab450a8f26e94 (diff)
downloadmu-65409d2312e702a48d3cf5b32479d25266bda3c3.tar.gz
5858
Move script to create a Soso boot image into a sub-directory.

I'm trying to streamline newcomer attention to just a couple of use cases.
Diffstat (limited to 'kernel.soso/main.c')
-rw-r--r--kernel.soso/main.c214
1 files changed, 0 insertions, 214 deletions
diff --git a/kernel.soso/main.c b/kernel.soso/main.c
deleted file mode 100644
index cc457469..00000000
--- a/kernel.soso/main.c
+++ /dev/null
@@ -1,214 +0,0 @@
-#include "screen.h"
-#include "descriptortables.h"
-#include "timer.h"
-#include "multiboot.h"
-#include "fs.h"
-#include "syscalls.h"
-#include "serial.h"
-#include "isr.h"
-#include "vmm.h"
-#include "alloc.h"
-#include "process.h"
-#include "keyboard.h"
-#include "ttydriver.h"
-#include "devfs.h"
-#include "systemfs.h"
-#include "pipe.h"
-#include "sharedmemory.h"
-#include "random.h"
-#include "null.h"
-#include "elf.h"
-#include "debugprint.h"
-#include "ramdisk.h"
-#include "fatfilesystem.h"
-#include "vbe.h"
-#include "fifobuffer.h"
-#include "gfx.h"
-#include "mouse.h"
-#include "sleep.h"
-
-extern uint32 _start;
-extern uint32 _end;
-uint32 gPhysicalKernelStartAddress = (uint32)&_start;
-uint32 gPhysicalKernelEndAddress = (uint32)&_end;
-
-static void* locateInitrd(struct Multiboot *mbi, uint32* size) {
-    if (mbi->mods_count > 0) {
-        uint32 startLocation = *((uint32*)mbi->mods_addr);
-        uint32 endLocation = *(uint32*)(mbi->mods_addr + 4);
-
-        *size = endLocation - startLocation;
-
-        return (void*)startLocation;
-    }
-
-    return NULL;
-}
-
-void printUsageInfo() {
-    char buffer[164];
-
-    sprintf(buffer, "Used kheap:%d", getKernelHeapUsed());
-    Screen_Print(0, 60, buffer);
-
-    sprintf(buffer, "Pages:%d/%d       ", getUsedPageCount(), getTotalPageCount());
-    Screen_Print(1, 60, buffer);
-
-    sprintf(buffer, "Uptime:%d sec   ", getUptimeSeconds());
-    Screen_Print(2, 60, buffer);
-
-    Thread* p = getMainKernelThread();
-
-    int line = 3;
-    sprintf(buffer, "[idle]   cs:%d   ", p->totalContextSwitchCount);
-    Screen_Print(line++, 60, buffer);
-    p = p->next;
-    while (p != NULL) {
-        sprintf(buffer, "thread:%d cs:%d   ", p->threadId, p->totalContextSwitchCount);
-
-        Screen_Print(line++, 60, buffer);
-
-        p = p->next;
-    }
-}
-
-int executeFile(const char *path, char *const argv[], char *const envp[], FileSystemNode* tty) {
-    int result = -1;
-
-    Process* process = getCurrentThread()->owner;
-    if (process) {
-        FileSystemNode* node = getFileSystemNodeAbsoluteOrRelative(path, process);
-        if (node) {
-            File* f = open_fs(node, 0);
-            if (f) {
-                void* image = kmalloc(node->length);
-
-                int32 bytesRead = read_fs(f, node->length, image);
-
-                if (bytesRead > 0) {
-                    Process* newProcess = createUserProcessFromElfData("userProcess", image, argv, envp, process, tty);
-
-                    if (newProcess) {
-                        result = newProcess->pid;
-                    }
-                }
-                close_fs(f);
-
-                kfree(image);
-            }
-
-        }
-    }
-
-    return result;
-}
-
-void printAsciiArt() {
-    printkf("     ________       ________      ________       ________     \n");
-    printkf("    |\\   ____\\     |\\   __  \\    |\\   ____\\     |\\   __  \\    \n");
-    printkf("    \\ \\  \\___|_    \\ \\  \\|\\  \\   \\ \\  \\___|_    \\ \\  \\|\\  \\   \n");
-    printkf("     \\ \\_____  \\    \\ \\  \\\\\\  \\   \\ \\_____  \\    \\ \\  \\\\\\  \\  \n");
-    printkf("      \\|____|\\  \\    \\ \\  \\\\\\  \\   \\|____|\\  \\    \\ \\  \\\\\\  \\ \n");
-    printkf("        ____\\_\\  \\    \\ \\_______\\    ____\\_\\  \\    \\ \\_______\\\n");
-    printkf("       |\\_________\\    \\|_______|   |\\_________\\    \\|_______|\n");
-    printkf("       \\|_________|                 \\|_________|              \n");
-    printkf("\n");
-}
-
-int kmain(struct Multiboot *mboot_ptr) {
-    int stack = 5;
-
-    initializeDescriptorTables();
-
-    initializeSerial();
-
-    uint32 memoryKb = mboot_ptr->mem_upper;//96*1024;
-    initializeMemory(memoryKb);
-
-    initializeVFS();
-    initializeDevFS();
-
-    if (MULTIBOOT_FRAMEBUFFER_TYPE_RGB == mboot_ptr->framebuffer_type) {
-        Gfx_Initialize((uint32*)(uint32)mboot_ptr->framebuffer_addr, mboot_ptr->framebuffer_width, mboot_ptr->framebuffer_height, mboot_ptr->framebuffer_bpp / 32, mboot_ptr->framebuffer_pitch);
-
-        initializeTTYs(TRUE);
-    }
-    else {
-        initializeTTYs(FALSE);
-    }
-    //printkf works after TTY initialization
-
-    printAsciiArt();
-
-    printkf("Lower Memory: %d KB\n", mboot_ptr->mem_lower);
-    printkf("Upper Memory: %d KB\n", mboot_ptr->mem_upper);
-    printkf("Memory initialized for %d MB\n", memoryKb / 1024);
-    printkf("Kernel start: %x - end:%x\n", gPhysicalKernelStartAddress, gPhysicalKernelEndAddress);
-    printkf("Initial stack: %x\n", &stack);
-    printkf("Video: %dx%dx%d Pitch:%d\n", mboot_ptr->framebuffer_width, mboot_ptr->framebuffer_height, mboot_ptr->framebuffer_bpp, mboot_ptr->framebuffer_pitch);
-
-    initializeSystemFS();
-    initializePipes();
-    initializeSharedMemory();
-
-    initializeTasking();
-
-    initialiseSyscalls();
-
-    initializeTimer();
-
-    initializeKeyboard();
-    initializeMouse();
-
-    if (0 != mboot_ptr->cmdline) {
-        printkf("Kernel cmdline:%s\n", (char*)mboot_ptr->cmdline);
-    }
-
-    Debug_initialize("/dev/tty9");
-
-    Serial_PrintF("pitch:%d\n", mboot_ptr->framebuffer_pitch);
-
-    initializeRandom();
-    initializeNull();
-
-    createRamdisk("ramdisk1", 20*1024*1024);
-
-    initializeFatFileSystem();
-
-    printkf("System started!\n");
-
-    char* argv[] = {"shell", NULL};
-    char* envp[] = {"HOME=/", "PATH=/initrd", NULL};
-
-    uint32 initrdSize = 0;
-    uint8* initrdLocation = locateInitrd(mboot_ptr, &initrdSize);
-    if (initrdLocation == NULL) {
-        PANIC("Initrd not found!\n");
-    }
-    else {
-        printkf("Initrd found at %x (%d bytes)\n", initrdLocation, initrdSize);
-        memcpy((uint8*)*(uint32*)getFileSystemNode("/dev/ramdisk1")->privateNodeData, initrdLocation, initrdSize);
-        BOOL mountSuccess = mountFileSystem("/dev/ramdisk1", "/initrd", "fat", 0, 0);
-
-        if (mountSuccess) {
-            printkf("Starting shell on TTYs\n");
-
-            executeFile("/initrd/init", argv, envp, getFileSystemNode("/dev/tty1"));
-        }
-        else {
-            printkf("Mounting initrd failed!\n");
-        }
-    }
-
-    enableScheduler();
-
-    enableInterrupts();
-
-    while(TRUE) {
-        //Idle thread
-
-        halt();
-    }
-
-    return 0;
-}