Browse Source

Removed a lot of debug prints

pull/2/head
Jørn Guldberg 3 years ago
parent
commit
7644b59da3
5 changed files with 385 additions and 795 deletions
  1. BIN
      disk.out
  2. +0
    -169
      implementation/lsfs.c
  3. +4
    -10
      implementation/lsfs.h
  4. +16
    -14
      main.c
  5. +365
    -602
      main.s

BIN
disk.out View File


+ 0
- 169
implementation/lsfs.c View File

@ -1,169 +0,0 @@
#include "lsfs.h"
/* #include "../std_singos/string.h" */
extern FSCI fsci;
int lsfs_disk_getattr(find_file, path)
lsfs_file* find_file;
char* path;
{
int i;
String_Array *split_path = string_split_c(path, '/', false);
Length_String *filename = split_path->strings[split_path->length-1];
/* Start from the master table*/
Directory_Table *dir_table = lsfs_find_directory(path, true);
for (i = 0; i < DEFAULT_TABLE_SIZE; ++i)
{
if(strcmp( filename->chars, dir_table->entries[i].filename ) == 0) {
find_file->file_id[0] = dir_table->entries[i].file_id;
find_file->entry_kind = dir_table->entries[i].entry_kind;
find_file->table_entry_pointer[0] = i;
find_file->filename = dir_table->entries[i].filename;
find_file->table_entry_sector_index[0] = dir_table->entries[i].table_entry_sector_index;
find_file->owner_id = 1;
find_file->size[0] = dir_table->entries[i].file_size; /* dir_table->entries[i].data_pointer[0]; ;*/
find_file->creation_date[0] = 0;
find_file->access_time[0] = 0;
find_file->modification_time[0] = 0;
memcpy(find_file->data_pointer, dir_table->entries[i].data_pointer, NUM_DATA_POINTERS * 8);
find_file->number_sector = 1; /* TODO: should be loaded from disk.*/
return 1;
}
}
return 0;
}
Directory_Table* lsfs_find_directory(path, drop_filename)
char *path;
short drop_filename;
{
int number_of_traversal;
int i, j;
String_Array *split_path;
Directory_Table *dir_table = calloc(1, sizeof(Directory_Table));
/* printf("Table index: %lu \n",fsci.master_table_index ); */
disk_service_read_data_from_disk(fsci.master_table_index[0], DEFAULT_TABLE_SIZE, dir_table, 0x50);
split_path = string_split_c(path, '/', false);
number_of_traversal = split_path->length;
if (drop_filename)
{
number_of_traversal -= 1;
}
/* Start from the master table */
for (i = 0; i < number_of_traversal; ++i)
{
for (j = 0; j < DEFAULT_TABLE_SIZE; ++j)
{
if (strcmp(dir_table->entries[j].filename, split_path->strings[i]->chars) == 0)
{
int index_sector = dir_table->entries[j].data_pointer[0];
/* printf("Table index: %lu \n",index_sector ); */
disk_service_read_data_from_disk(index_sector, DEFAULT_TABLE_SIZE, dir_table);
break;
}
}
}
return dir_table;
}
int lsfs_disk_read_data_from_file(file, buffer_size, data, offset_to_next_entry, data_segment)
lsfs_file *file;
int buffer_size;
char *data;
long offset_to_next_entry;
unsigned int data_segment;
{
int integer_file_size = file->size;
int integer_offset = offset_to_next_entry;
int integer_datapointer = 0;
int data_length = integer_file_size - integer_offset;
int amount_read = 0;
int amount_to_read = 0;
int remaining_offset = offset_to_next_entry;
/* printf("READ: buffer_size: %d\n", buffer_size); */
/* printf("READ: Data length: %d\n", data_length); */
/* printf("READ: Offset length: %d\n", offset_to_next_entry); */
int data_pointer_index = 0; /* start at first data pointer. */
if (data_length > buffer_size)
{
data_length = buffer_size;
}
while(data_length > 0) /* We have more to write */
{
/* printf("READ: Remaing Data length: %d\n", data_length); */
if (remaining_offset == 0)
{
char *tmp_buffer = calloc(DEFAULT_DATA_POINTER_SIZE, SECTOR_SIZE);
/* assert(tmp_buffer); */
if (data_length < (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE))
{
amount_to_read = data_length;
}
else
{
amount_to_read = (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE);
}
/* disk_service_read_data_from_disk(lsfs_sector_offset index, uint32_t number_sector, void* data_buffer) */
integer_datapointer = file->data_pointer[data_pointer_index];
if (integer_datapointer == 0)
{
break;
}
disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], DEFAULT_DATA_POINTER_SIZE, tmp_buffer, 0x50);
/* print_newline(); */
/* print_newline(); */
memcpy((data + amount_read), data_segment, tmp_buffer, 0x50, amount_to_read);
data_length -= amount_to_read;
amount_read += amount_to_read;
data_pointer_index = data_pointer_index + 2; /* Rember that we only use 32-bit, and thats why we jump to at a time*/
/* free(tmp_buffer); */
}
else if (remaining_offset < (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE))
{
char *tmp_buffer = calloc(1, (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE));
/* assert(tmp_buffer); */
if (data_length < ((DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE) - remaining_offset) )
{
amount_to_read = data_length;
}
else
{
amount_to_read = ((DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE) - remaining_offset);
}
disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], DEFAULT_DATA_POINTER_SIZE, tmp_buffer, 0x50);
memcpy(data, data_segment, (tmp_buffer + remaining_offset), 0x50, amount_to_read);
data_length -= amount_to_read;
amount_read += amount_to_read;
remaining_offset -= amount_to_read;
data_pointer_index = data_pointer_index + 2; /* Rember that we only use 32-bit, and thats why we jump to at a time*/
/* free(tmp_buffer); */
}
else
{
/* We have to skip a whole data pointer: */
remaining_offset -= (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE);
data_pointer_index++;
}
}
/*
time_t current_time;
time ( &current_time );
file->access_time = current_time;
*/
return amount_read;
}

+ 4
- 10
implementation/lsfs.h View File

@ -87,6 +87,7 @@ FSCI *fsci;
for (i = 0; i < DEFAULT_TABLE_SIZE; i++)
{
int j;
/*
print(dir_table->entries[i].filename);
print(filename->chars);
print_newline();
@ -95,6 +96,7 @@ FSCI *fsci;
dump_ax(sizeof(Table_Entry));
print_newline();
print_newline();
*/
if(strcmp( filename->chars, dir_table->entries[i].filename ) == 0) {
find_file->file_id[0] = dir_table->entries[i].file_id[0];
find_file->entry_kind = dir_table->entries[i].entry_kind;
@ -106,12 +108,10 @@ FSCI *fsci;
find_file->creation_date[0] = 0;
find_file->access_time[0] = 0;
find_file->modification_time[0] = 0;
dump_ax(dir_table->entries[i].data_pointer[0]);
/* memcpy(find_file->data_pointer, dir_table->entries[i].data_pointer, NUM_DATA_POINTERS * 8); */
for (j = 0; j < NUM_DATA_POINTERS; j = j + 2)
{
find_file->data_pointer[j] = dir_table->entries[i].data_pointer[j];
dump_ax(find_file->data_pointer[j]);
}
@ -132,9 +132,7 @@ FSCI *fsci;
String_Array *split_path;
Directory_Table *dir_table = calloc(1, sizeof(Directory_Table));
/* printf("Table index: %lu \n",fsci->master_table_index ); */
dump_ax(fsci->master_table_index[0]);
disk_service_read_data_from_disk(fsci->master_table_index[0], (long) DEFAULT_TABLE_SIZE, dir_table, 0x7e0);
print(dir_table->entries[0].filename);
split_path = string_split_c(path, '/', false);
number_of_traversal = split_path->length;
@ -150,18 +148,19 @@ FSCI *fsci;
{
for (j = 0; j < DEFAULT_TABLE_SIZE; ++j)
{
/*
print_newline();
print("New: ");
print(dir_table->entries[j].filename);
print("vs ");
print(split_path->strings[i]->chars);
print_newline();
*/
if (strcmp(dir_table->entries[j].filename, split_path->strings[i]->chars) == 0)
{
long index_sector = dir_table->entries[j].data_pointer[0];
/* printf("Table index: %lu \n",index_sector ); */
/* print(dir_table->entries[j].filename); */
dump_ax(index_sector);
disk_service_read_data_from_disk(index_sector, (long) DEFAULT_TABLE_SIZE, dir_table, 0x7e0);
break;
}
@ -221,12 +220,7 @@ unsigned int data_segment;
{
break;
}
print_newline();
dump_ax(file->data_pointer[data_pointer_index]);
print_newline();
next_data = data + amount_read;
dump_ax(next_data);
print_newline();
disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], (long) DEFAULT_DATA_POINTER_SIZE, next_data, data_segment);
/* memcpy((data + amount_read), data_segment, tmp_buffer, 0x7e0, amount_to_read); */

+ 16
- 14
main.c View File

@ -36,7 +36,10 @@ void* pointer_parameter_struct;
index_as_long = pointer_parameter_struct;
disk_service_read_data_from_disk(index_as_long, (long) 1, fsci, local_segment);
print("File System has been loaded: ");
print_newline();
print(fsci->filesystem_information);
print("16-bit implementation ");
print_newline();
} break;
case SERVICE_FIND_ENTRY:
{
@ -60,32 +63,31 @@ void* pointer_parameter_struct;
local_path = malloc(256);
memcpy(local_path, local_segment, parameter_struct.path, pointer_parameter_segment, path_length);
local_path[path_length] = 0;
print("Read file: ");
print(local_path);
path_array = string_split_c(local_path, '/', 0);
print_newline();
/* print_newline(); */
/* print_newline(); */
for (i = 0; i < path_array->length; ++i)
{
print(path_array->strings[i]->chars);
/* print_newline(); */
}
/* print_newline(); */
/* print_newline(); */
path_array = string_split_c(local_path, '/', 0);
find_file = calloc(sizeof(lsfs_file), 1);
if ( !lsfs_disk_getattr(find_file, local_path, fsci) )
{
print("File not found");
print_newline();
}
/* print_newline(); */
else
{
print("File has been read");
print_newline();
}
/*
print_newline();
print("Buffer_address: ");
dump_ax(parameter_struct.buffer_address);
/* print_newline(); */
print_newline();
print("Buffer_segmnent: ");
dump_ax(parameter_struct.buffer_segment);
*/
lsfs_disk_read_data_from_file(find_file, parameter_struct.buffer_size, parameter_struct.buffer_address, (long) 0x0, parameter_struct.buffer_segment);

+ 365
- 602
main.s
File diff suppressed because it is too large
View File


Loading…
Cancel
Save