Initial Commit
This commit is contained in:
		
						commit
						caf7b99f2d
					
				
					 6 changed files with 117 additions and 0 deletions
				
			
		
							
								
								
									
										5
									
								
								inode.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								inode.c
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					#include "inode.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tm* get_local_time() {
 | 
				
			||||||
 | 
					    return localtime(¤t_time);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										43
									
								
								inode.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								inode.h
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,43 @@
 | 
				
			||||||
 | 
					#ifndef INODE_H_
 | 
				
			||||||
 | 
					#define INODE_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <time.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "util.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct Inode Inode;
 | 
				
			||||||
 | 
					typedef struct tm tm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Global Variables
 | 
				
			||||||
 | 
					time_t current_time;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Structs
 | 
				
			||||||
 | 
					struct tm *local_time;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct Inode {
 | 
				
			||||||
 | 
					    // file information
 | 
				
			||||||
 | 
					    char name[64];
 | 
				
			||||||
 | 
					    uint32_t size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // ownership and permissions
 | 
				
			||||||
 | 
					    uint16_t permissions;
 | 
				
			||||||
 | 
					    uint16_t owner;
 | 
				
			||||||
 | 
					    uint16_t group;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // timestamps
 | 
				
			||||||
 | 
					    tm created;
 | 
				
			||||||
 | 
					    tm last_modified;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // fs attributes
 | 
				
			||||||
 | 
					    uint32_t index;
 | 
				
			||||||
 | 
					    uint16_t block_count;
 | 
				
			||||||
 | 
					    block* data_block;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tm* get_local_time();
 | 
				
			||||||
 | 
					Inode* create_inode(char name[64], uint16_t owner, uint16_t group, block* data_block);
 | 
				
			||||||
 | 
					Inode* find_inode(char name[]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // INODE_H_
 | 
				
			||||||
							
								
								
									
										28
									
								
								io.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								io.h
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,28 @@
 | 
				
			||||||
 | 
					#ifndef IO_H_
 | 
				
			||||||
 | 
					#define IO_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_FDS 1024
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <sys/types.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "inode.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct file_descriptor {
 | 
				
			||||||
 | 
					    Inode *inode;
 | 
				
			||||||
 | 
					    off_t offset;
 | 
				
			||||||
 | 
					    int flags;
 | 
				
			||||||
 | 
					    int ref_count;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct Process {
 | 
				
			||||||
 | 
					    struct file_descriptor fd_table[MAX_FDS];
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int allocate_fd(struct Process proc, Inode inode, int flags);
 | 
				
			||||||
 | 
					int emmafs_open(char name[]);
 | 
				
			||||||
 | 
					int emmafs_close(char name[]);
 | 
				
			||||||
 | 
					//int emmafs_read(int fd)
 | 
				
			||||||
 | 
					//int emmafs_write(int fd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // IO_H_
 | 
				
			||||||
							
								
								
									
										16
									
								
								super.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								super.c
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					#ifndef SUPER_H_
 | 
				
			||||||
 | 
					#define SUPER_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "inode.h"
 | 
				
			||||||
 | 
					#include "util.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// fs attributes
 | 
				
			||||||
 | 
					#define MAGIC 0x7F631EC4
 | 
				
			||||||
 | 
					#define VERSION 0.0.0.1
 | 
				
			||||||
 | 
					#define BLOCKSIZE 4096
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint32_t free_blocks;
 | 
				
			||||||
 | 
					uint32_t inode_count;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // SUPER_H_
 | 
				
			||||||
							
								
								
									
										6
									
								
								util.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								util.c
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					#include "util.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int find_number_of_inodes(uint64_t fs_size){
 | 
				
			||||||
 | 
					    int number_of_inodes = fs_size / BITS_PER_INODE;
 | 
				
			||||||
 | 
					    return number_of_inodes;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								util.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								util.h
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					#ifndef BLOCK_H_
 | 
				
			||||||
 | 
					#define BLOCK_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BLOCKSIZE 4096
 | 
				
			||||||
 | 
					#define BITS_PER_INODE 16384
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct block block;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct block {
 | 
				
			||||||
 | 
					  char data[BLOCKSIZE];
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Provide fs size in bytes
 | 
				
			||||||
 | 
					int find_number_of_inodes(uint64_t fs_size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // BLOCK_H_
 | 
				
			||||||
		Loading…
	
		Reference in a new issue