Bad version (?)
This commit is contained in:
@ -65,12 +65,10 @@ extern void ConsoleMain();
|
||||
// External test routines
|
||||
extern void SystemPanic();
|
||||
extern int32 LogWrite (uint8 error, string device, string format, ...);
|
||||
extern void LogAssert (int32 condition, string file, int32 line);
|
||||
|
||||
// Debug print
|
||||
#define Log(dev, ...) { LogWrite(0, dev, __VA_ARGS__); }
|
||||
#define Error(dev, ...) { LogWrite(1, dev, __VA_ARGS__); }
|
||||
#define Panic(dev, ...) { LogWrite(1, dev, __VA_ARGS__); SystemPanic(); }
|
||||
#define Assert(c) { LogAssert(c, __FILE__, __LINE__); }
|
||||
|
||||
#endif
|
||||
|
@ -33,6 +33,8 @@ enum PageFlags
|
||||
PageFrame = 0xFFFFF000
|
||||
};
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
Page Pages[1024];
|
||||
} PageTable;
|
||||
@ -46,28 +48,28 @@ typedef struct {
|
||||
extern PageDirectory* CurrentDirectory;
|
||||
extern PageDirectory* KernelDirectory;
|
||||
|
||||
extern void PagingEnable ();
|
||||
extern void PagingDisable ();
|
||||
extern void PagingSwitchDirectory (PageDirectory* dir);
|
||||
extern void PagingFlushTlb ();
|
||||
extern void PagingInitialize (uint32* kernelEnd);
|
||||
extern void PagingMapPage (uint32 phys, uint32 virt, uint32 flags, PageDirectory* pd);
|
||||
extern void PagingUnmapPage (uint32 virt, PageDirectory* pd);
|
||||
extern uint32 PagingGetPhysical (uint32 virt, PageDirectory* pd);
|
||||
extern void PagingInitialize(volatile uint32* SystemMemory);
|
||||
extern void PagingSwitchPageDirectory (PageDirectory* dir);
|
||||
extern Page* PagingGetPage(uint32 addr, uint8 make, PageDirectory* dir);
|
||||
extern void PagingCopyPagePhysical (uint32, uint32);
|
||||
extern PageTable* PagingCloneTable (PageTable* src, uint32* physAddr);
|
||||
extern PageDirectory* PagingCloneDirectory (PageDirectory* src);
|
||||
|
||||
|
||||
/***************************************************
|
||||
* Physical memory manager *
|
||||
***************************************************/
|
||||
extern uint32 TotalBlocks;
|
||||
extern uint32 TotalFrames;
|
||||
extern uint32 TotalMemory;
|
||||
extern uint32 UsedBlocks;
|
||||
extern uint32 UsedFrames;
|
||||
|
||||
extern void MemPhInitialize (uint32 SystemMemoryKb);
|
||||
extern void MemPhSetBlock (uint32 Block, uint8 value);
|
||||
extern uint32 MemPhGetBlock (uint32 Block);
|
||||
extern uint32 MemPhAllocateBlock ();
|
||||
extern void MemPhFreeBlock (uint32 addr);
|
||||
extern void MemPhReserveBlocks (uint32 address, uint32 length);
|
||||
void MemPhInitialize(uint32 SystemMemoryKb);
|
||||
extern void MemPhSetFrame (uint32 frame, uint8 value);
|
||||
uint32 MemPhGetFrame (uint32 frame);
|
||||
uint32 MemPhFindFreeFrame();
|
||||
void MemPhAllocFrame(Page* page, uint8 isKernel, uint8 isWriteable);
|
||||
void MemPhFreeFrame(Page* page);
|
||||
void MemPhReserveFrames (uint32 address, uint32 length);
|
||||
|
||||
|
||||
/***************************************************
|
||||
@ -83,12 +85,12 @@ typedef struct
|
||||
|
||||
extern MemHeap* KernelHeap;
|
||||
|
||||
extern uint32 MemHeapFindSmallestHole (uint32 size, uint8 page_align, MemHeap* heap);
|
||||
extern int32 MemHeapCompare (uint32 a, uint32 b);
|
||||
extern MemHeap* MemHeapCreate (uint32 start, uint32 end, uint32 max, uint8 flags);
|
||||
extern uint32 MemHeapExpand (uint32 newsz, MemHeap* heap, PageDirectory* pd);
|
||||
extern uint32 MemHeapContract (uint32 newsz, MemHeap* heap, PageDirectory* pd);
|
||||
extern uint32 MemHeapAlloc (uint32 size, uint8 isPageAligned, MemHeap* heap, PageDirectory* pd);
|
||||
extern void MemHeapFree (uint32 address, MemHeap* heap, PageDirectory* pd);
|
||||
extern uint32 MemHeapFindSmallestHole (uint32 size, uint8 page_align, MemHeap* heap);
|
||||
extern int32 MemHeapCompare (uint32 a, uint32 b);
|
||||
extern MemHeap* MemHeapCreate(uint32 start, uint32 end, uint32 max, uint8 flags);
|
||||
extern void MemHeapExpand(uint32 newsz, MemHeap* heap, PageDirectory* pd);
|
||||
extern uint32 MemHeapContract(uint32 newsz, MemHeap* heap, PageDirectory* pd);
|
||||
extern uint32 MemHeapAlloc (uint32 size, uint8 isPageAligned, MemHeap* heap, PageDirectory* pd);
|
||||
extern void MemHeapFree (uint32 address, MemHeap* heap, PageDirectory* pd);
|
||||
|
||||
#endif /* MEMORY_ADD_H_ */
|
||||
|
@ -32,7 +32,7 @@
|
||||
// Memory manager
|
||||
#define KERNEL_HEAP_START 0xC0000000
|
||||
#define KERNEL_HEAP_INITIAL_SIZE 0x100000
|
||||
#define KERNEL_HEAP_END (KERNEL_HEAP_START + KERNEL_HEAP_INITIAL_SIZE)
|
||||
#define KERNEL_HEAP_END (KERNEL_HEAP_START + KERNEL_HEAP_INITIAL_SIZE)
|
||||
|
||||
|
||||
#endif /* SETTINGS_H_ */
|
||||
|
@ -1,28 +1,33 @@
|
||||
/*
|
||||
* tasking.h
|
||||
*
|
||||
* Created on: Sep 8, 2011
|
||||
* Created on: Sep 7, 2011
|
||||
* Author: Tiberiu
|
||||
*/
|
||||
|
||||
#ifndef TASKING_H_
|
||||
#define TASKING_H_
|
||||
|
||||
#include <types.h>
|
||||
#include <memory-add.h>
|
||||
|
||||
typedef struct _Task {
|
||||
uint32 Pid;
|
||||
uint32 Eip, Esp, Ebp;
|
||||
PageDirectory* Pd;
|
||||
uint32 StackLowerBase;
|
||||
uint32 StackUpperBase;
|
||||
uint8 Initialized;
|
||||
struct _Task* Next;
|
||||
typedef struct _Task{
|
||||
uint32 Pid; // Process ID
|
||||
uint32 Esp, Ebp, Eip; // Stack, base and instruction pointers
|
||||
PageDirectory* Pd; // Page dir
|
||||
struct _Task *Next; // Next task in a linked list
|
||||
} Task;
|
||||
|
||||
extern void TaskInitialize();
|
||||
extern void TaskSwitch ();
|
||||
extern void TaskCreate (void (*func)());
|
||||
extern void TaskingInitialize();
|
||||
extern void TaskingScheduler();
|
||||
extern void TaskingSwitch();
|
||||
|
||||
extern int32 Fork();
|
||||
|
||||
extern void TaskingSetInitialStack(uint32 addr);
|
||||
extern void TaskingMoveStack (uint32 newstart, uint32 size);
|
||||
|
||||
extern int32 GetPid();
|
||||
|
||||
extern uint32 TaskingReadEip();
|
||||
|
||||
#endif /* TASKING_H_ */
|
||||
|
@ -1 +1 @@
|
||||
#define OS_BUILD "0.1.1.50"
|
||||
#define OS_BUILD "0.1.1.48"
|
||||
|
Reference in New Issue
Block a user