Import backup from 2005-01-14
This commit is contained in:
parent
05183a3949
commit
ba5906c7a3
4
Makefile
4
Makefile
@ -71,3 +71,7 @@ initrd:
|
||||
umount $(INITRD_MOUNT)
|
||||
rm -rf $(INITRD_MOUNT)
|
||||
|
||||
|
||||
wordcount:
|
||||
find . -regex '\(.*\.[ch]\)\|\(.*\.asm\)\|\(.*\.inc\)\|\(.*\.cpp\)' | xargs cat | wc -l
|
||||
|
||||
|
@ -63,29 +63,35 @@ int ext2_stat(vfs_mount_t *mount, char *file, vfs_stat_t *stat)
|
||||
u32_t inode_number = ext2_get_inode_number(mount, file);
|
||||
if (!inode_number)
|
||||
return -1;
|
||||
ext2_inode_t inode = ext2_get_inode(mount, inode_number);
|
||||
ext2_inode_t *inode = New(ext2_inode_t);
|
||||
if ( ext2_read_inode(mount, inode_number, inode) )
|
||||
{
|
||||
kfree(inode);
|
||||
return -2;
|
||||
}
|
||||
|
||||
stat->dev = 0;
|
||||
switch(inode.i_mode & EXT2_I_MODE_TYPE_MASK)
|
||||
switch(inode->i_mode & EXT2_I_MODE_TYPE_MASK)
|
||||
{
|
||||
case EXT2_I_MODE_FIFO: stat->type = VFS_FT_FIFO; break;
|
||||
case EXT2_I_MODE_CHAR: stat->type = VFS_FT_CHAR; stat->dev = inode.i_block[0]; break;
|
||||
case EXT2_I_MODE_CHAR: stat->type = VFS_FT_CHAR; stat->dev = inode->i_block[0]; break;
|
||||
case EXT2_I_MODE_DIR: stat->type = VFS_FT_DIR; break;
|
||||
case EXT2_I_MODE_BLOCK: stat->type = VFS_FT_BLOCK; stat->dev = inode.i_block[0]; break;
|
||||
case EXT2_I_MODE_BLOCK: stat->type = VFS_FT_BLOCK; stat->dev = inode->i_block[0]; break;
|
||||
case EXT2_I_MODE_FILE: stat->type = VFS_FT_FILE; break;
|
||||
case EXT2_I_MODE_SYM: stat->type = VFS_FT_SYMLINK; break;
|
||||
case EXT2_I_MODE_SOCK: stat->type = VFS_FT_SOCK; break;
|
||||
default: stat->type = VFS_FT_UNKNOWN; break;
|
||||
}
|
||||
stat->size = inode.i_size;
|
||||
stat->size = inode->i_size;
|
||||
stat->inode = inode_number;
|
||||
stat->permissions = inode.i_mode & EXT2_I_MODE_ATTR_MASK;
|
||||
stat->uid = inode.i_uid;
|
||||
stat->gid = inode.i_gid;
|
||||
stat->atime = inode.i_atime;
|
||||
stat->mtime = inode.i_mtime;
|
||||
stat->ctime = inode.i_ctime;
|
||||
stat->links = inode.i_links_count;
|
||||
stat->permissions = inode->i_mode & EXT2_I_MODE_ATTR_MASK;
|
||||
stat->uid = inode->i_uid;
|
||||
stat->gid = inode->i_gid;
|
||||
stat->atime = inode->i_atime;
|
||||
stat->mtime = inode->i_mtime;
|
||||
stat->ctime = inode->i_ctime;
|
||||
stat->links = inode->i_links_count;
|
||||
kfree(inode);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -195,11 +201,12 @@ int ext2_close_dir(vfs_mount_t *mount, ext2_open_dir_t *open_dir)
|
||||
// open an inode for reading
|
||||
ext2_open_inode_t *ext2_open_inode(vfs_mount_t *mount, u32_t inode_number)
|
||||
{
|
||||
if (ext2_inode_status(mount, inode_number) != 1)
|
||||
return NULL;
|
||||
ext2_inode_t inode = ext2_get_inode(mount, inode_number);
|
||||
ext2_open_inode_t *open_inode = New(ext2_open_inode_t);
|
||||
open_inode->inode = inode;
|
||||
if ( ext2_read_inode(mount, inode_number, &(open_inode->inode)) )
|
||||
{
|
||||
kfree(open_inode);
|
||||
return NULL;
|
||||
}
|
||||
open_inode->block = 0;
|
||||
open_inode->block_pointers = NULL;
|
||||
open_inode->block_pointers_start = 0;
|
||||
@ -342,8 +349,10 @@ u32_t ext2_block_number(vfs_mount_t *mount, ext2_open_inode_t *open_inode)
|
||||
|
||||
|
||||
// read the inode structure from the device and return it
|
||||
ext2_inode_t ext2_get_inode(vfs_mount_t *mount, u32_t inode)
|
||||
int ext2_read_inode(vfs_mount_t *mount, u32_t inode, ext2_inode_t *dat)
|
||||
{
|
||||
if (ext2_inode_status(mount, inode) != 1)
|
||||
return -1; // free or invalid inode number
|
||||
ext2_super_block_t *super = mount->super;
|
||||
inode--; // turn inode into a 0-based index
|
||||
u32_t group = inode / super->s_inodes_per_group;
|
||||
@ -352,9 +361,9 @@ ext2_inode_t ext2_get_inode(vfs_mount_t *mount, u32_t inode)
|
||||
(10 + super->s_log_block_size)) + (index << 7);
|
||||
void *block = kmalloc(512);
|
||||
block_read(mount->major, mount->minor, inodeAddr >> 9, 1, block);
|
||||
ext2_inode_t in = *(ext2_inode_t *)(block + (inodeAddr & 0x1FF));
|
||||
memcpy(dat, (block + (inodeAddr & 0x1FF)), sizeof(ext2_inode_t));
|
||||
kfree(block);
|
||||
return in;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// read the group descriptor structure from the device and return it
|
||||
@ -370,6 +379,18 @@ ext2_group_desc_t ext2_get_group_desc(vfs_mount_t *mount, u32_t group)
|
||||
}
|
||||
|
||||
|
||||
// TODO: finish allocating an inode
|
||||
u32_t ext2_alloc_inode(vfs_mount_t *mount)
|
||||
{
|
||||
ext2_super_block_t *super = mount->super;
|
||||
if (!super->s_free_inodes_count)
|
||||
return 0; // no free inodes
|
||||
|
||||
}
|
||||
|
||||
/***************** VFS INTERFACE FUNCTIONS *******************/
|
||||
|
||||
|
||||
// VFS interface function to open a directory
|
||||
int ext2__open_dir(vfs_mount_t *mount, char *file, vfs_open_file_t *dir)
|
||||
{
|
||||
@ -402,16 +423,19 @@ int ext2__close_dir(vfs_mount_t *mount, vfs_open_file_t *dir)
|
||||
}
|
||||
|
||||
|
||||
// VFS interface function to open a file for reading a byte at a time
|
||||
int ext2__open_file(vfs_mount_t *mount, char *file, vfs_open_file_t *open_file)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// VFS interface function to read a byte from an open file
|
||||
int ext2__read_file(vfs_mount_t *mount, vfs_open_file_t *open_file)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
// VFS interface function to close a byte-file
|
||||
int ext2__close_file(vfs_mount_t *mount, vfs_open_file_t *open_file)
|
||||
{
|
||||
return 0;
|
||||
|
@ -184,7 +184,7 @@ static inline u32_t ext2_FSToDiskBlock(u32_t block, ext2_super_block_t *super)
|
||||
int ext2_init(int fsID);
|
||||
void *ext2_mount_super(major_t major, minor_t minor);
|
||||
int ext2_umount_super(vfs_mount_t *mount);
|
||||
ext2_inode_t ext2_get_inode(vfs_mount_t *mount, u32_t inode);
|
||||
int ext2_read_inode(vfs_mount_t *mount, u32_t inode, ext2_inode_t *dat);
|
||||
ext2_group_desc_t ext2_get_group_desc(vfs_mount_t *mount, u32_t group);
|
||||
int ext2_stat(vfs_mount_t *mount, char *file, vfs_stat_t *stat);
|
||||
ext2_open_inode_t *ext2_open_inode(vfs_mount_t *mount, u32_t inode_number);
|
||||
@ -195,6 +195,8 @@ u32_t ext2_get_inode_number(vfs_mount_t *mount, char *file);
|
||||
int ext2_inode_seek(vfs_mount_t *mount, ext2_open_inode_t *open_inode, u32_t block_number);
|
||||
int ext2_inode_status(vfs_mount_t *mount, u32_t inode_number);
|
||||
int ext2_block_status(vfs_mount_t *mount, u32_t block_number);
|
||||
u32_t ext2_alloc_inode(vfs_mount_t *mount);
|
||||
|
||||
|
||||
ext2_open_dir_t *ext2_open_dir(vfs_mount_t *mount, u32_t inode_number);
|
||||
int ext2_dir_read_entry(vfs_mount_t *mount, ext2_open_dir_t *open_dir, ext2_dir_entry_t *dentry);
|
||||
|
18
make.grc
Normal file
18
make.grc
Normal file
@ -0,0 +1,18 @@
|
||||
regexp=.*In.function.*
|
||||
colours=green
|
||||
-
|
||||
regexp=.*warning\:.*
|
||||
colours=yellow
|
||||
-
|
||||
regexp=In.file.included.*
|
||||
colours=green
|
||||
-
|
||||
regexp=\s*from.*\:\s*
|
||||
colours=green
|
||||
-
|
||||
regexp=.*error\:.*
|
||||
colours=red
|
||||
-
|
||||
regexp=.*\*\*\*.*
|
||||
colours=red
|
||||
|
@ -34,11 +34,7 @@ start_refreshed:
|
||||
|
||||
call con_clear
|
||||
|
||||
mov ax, 0x4F00
|
||||
mov di, vbe_info_block
|
||||
int 0x10
|
||||
cmp ax, 0x004F
|
||||
jz vesa_present
|
||||
; ccall vesa_get_info, es, vbe_info_block
|
||||
jmp no_vesa
|
||||
|
||||
vesa_present:
|
||||
@ -165,3 +161,5 @@ OemVendorName: dd 0
|
||||
OemProductName: dd 0
|
||||
OemProductRev: dd 0
|
||||
Reserved: times 478 db 0
|
||||
|
||||
|
||||
|
33
rmmod/vesa.inc
Normal file
33
rmmod/vesa.inc
Normal file
@ -0,0 +1,33 @@
|
||||
; vesa.inc
|
||||
; Author: Josh Holtrop
|
||||
; Date: 01/04/05
|
||||
; Modified: 01/04/05
|
||||
; real mode vesa functions
|
||||
|
||||
vesa_get_info: ;vesa_get_info(word seg, word offset)
|
||||
push bp
|
||||
mov bp, sp
|
||||
pusha
|
||||
|
||||
mov ax, [bp + 4]
|
||||
mov es, ax
|
||||
mov di, [bp + 6]
|
||||
mov ax, 0x4F00
|
||||
int 0x10
|
||||
cmp ax, 0x004F
|
||||
jz vesa_got_info
|
||||
|
||||
mov [vesa_return], word 1
|
||||
jmp vesa_get_info_done
|
||||
|
||||
vesa_got_info:
|
||||
mov [vesa_return], word 0
|
||||
|
||||
vesa_got_info_done:
|
||||
popa
|
||||
pop bp
|
||||
mov ax, [vesa_return]
|
||||
ret
|
||||
|
||||
|
||||
vesa_return: dw 0
|
Loading…
x
Reference in New Issue
Block a user