==================================================== + Changed 'align 0x4' line above multiboot header in loader.asm to 'align 4' + Removed -e option for echo in build.sh + Modified build.sh for linux + Fixed triple fault when enabling paging + Fixed page faults at memory manager initialization + Fixed 'mem' console function + Added more info about page fault at crash screen + Added Panic() macro + Added verbose mode for memory manager [ BAD] BUILD 0.1.0.390 DATE 8/27/2011 AT 10:54 PM ==================================================== + Added stdlib routines, separated in different files + Rewritten physical memory manager + Added virtual mem manager + Added memory allocation/freeing + Added memory library + Added temporary allocation (at end of kernel), until paging is started - Removed functionality from debug console function 'mem' - Removed system.h, the one remaining function now in stdio.h
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * storage.h
 | 
						|
 *
 | 
						|
 *  Created on: Aug 23, 2011
 | 
						|
 *      Author: Tiberiu
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef STORAGE_H_
 | 
						|
#define STORAGE_H_
 | 
						|
 | 
						|
#include <types.h>
 | 
						|
 | 
						|
// Storage device
 | 
						|
typedef struct {
 | 
						|
 | 
						|
	char MountPointName[32];// E.g. "fd0"; you should avoid spaces, or special chars, or otherwise get weird paths like "Mom's floppy\virus.exe"
 | 
						|
	uint32 DeviceID;		// Autocompleted by VFS
 | 
						|
 | 
						|
	uint32 BlockSize;		// E.g. sector size
 | 
						|
	uint32 BlockCount;		// How many blocks are loaded in memory per read
 | 
						|
 | 
						|
	/********************************************************
 | 
						|
	 * READ DATA											*
 | 
						|
	 * Params:												*
 | 
						|
	 * 		> offset: read starting from block ~			*
 | 
						|
	 * Returns: address to data, NULL for error				*
 | 
						|
	 ********************************************************/
 | 
						|
	uint32 (*ReadData) (uint32 offset);
 | 
						|
 | 
						|
	/********************************************************
 | 
						|
	 * WRITE DATA											*
 | 
						|
	 * Params:												*
 | 
						|
	 * 		> offset: write starting from block ~			*
 | 
						|
	 * 		> address: where to write from					*
 | 
						|
	 * Returns: NULL for error  							*
 | 
						|
	 ********************************************************/
 | 
						|
	uint32 (*WriteData) (uint32 offset, uint32 address);
 | 
						|
 | 
						|
	uint32 FileSystemID;	// Autocompleted by 'mount'... at least should be
 | 
						|
 | 
						|
} StorageDevice;
 | 
						|
 | 
						|
 | 
						|
typedef struct {
 | 
						|
	uint32 FileSystemID;	// Autocompleted by VFS
 | 
						|
 | 
						|
	/********************************************************
 | 
						|
	 * DETECT IF THIS IS THE FS ON STORAGE DEVICE			*
 | 
						|
	 * Params:												*
 | 
						|
	 * 		> *s: Pointer to device info & routines			*
 | 
						|
	 * Returns: positive if match, NULL otherwise			*
 | 
						|
	 ********************************************************/
 | 
						|
	uint32 (*Detect) (StorageDevice *s);
 | 
						|
 | 
						|
	uint32 (*Open) (StorageDevice *s, string path);
 | 
						|
	uint32 (*CreateNode) (StorageDevice *s, string path);
 | 
						|
	uint32 (*DeleteNode) (StorageDevice *s, string path);
 | 
						|
 | 
						|
} FileSystem;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
extern void ConvertLbaToChs(uint32 SectorsPerTrack, uint32 lba, uint32 *cyl, uint32 *head, uint32 *sector);
 | 
						|
 | 
						|
#endif /* STORAGE_H_ */
 |