Question: The functions you NEED to write (i.e., the filesystem driver) In this assignment, another application (a.k.a., the unit-tests provided to you) will call your code

 The functions you NEED to write (i.e., the filesystem driver) In

this assignment, another application (a.k.a., the unit-tests provided to you) will call

your code to evaluate your application by trying to save, read, and

The functions you NEED to write (i.e., the filesystem driver) In this assignment, another application (a.k.a., the unit-tests provided to you) will call your code to evaluate your application by trying to save, read, and write files to the block storage and validate your results. Unit-testing will use your functions to do so, hence do not change function names (you will be penalized). For this assignment (HINT: but not future ones, so plan ahead), there will only ever be one file open at a time, and furthermore, each file that the user wants to write to the device will always fit within the maximum possible size of a block (HDD_MAX_BLOCK_SIZE). Thus, in this assignment, there is a one-to-one mapping of files to blocks. when your code is called, hdd open will be the first function called and will be given a filename. Your function code must return a number, also called a file handle, which will uniquely refer to that particular file across all your other functions. For instance, when the user wants to write something to a file on the device, your hdd write function will be called with the first parameter being the corresponding file handle you previously returned in hdd_open. If the user tries to call any of your functions (besides hdd open) with a file that is not open, you must return -1 (i.e. unsuccessful) and handle appropriately. You must keep track of whether or not a file is open using your own data structure. You can assume that when a user opens a file for the first time via hdd open, that there is no pre- existing data in the block storage about that file. The application will need to call hdd write in order to write anything about this file for the first time to a block. Then the application will need to call hdd read to get back any data that has been written to that file. When the application has finished using a file (i.e. read/write), it calls hdd close. For this assignment, calling hdd close will delete al the contents of the file in the block storage (HINT: future assignments will keep contents). Lastly, where the application starts reading from and writing to in a file is determined by the current seek position. The seek position is automatically placed at the end of the last read/write operation. The hdd seek function places the seek position wherever the user would like within the file (again, it is recommended to understand the standard seek C function) As a programmer, it is up to you to decide how to implement these functions. However, the functions must maintain the file contents in exactly the same way as a normal filesystem would (meaning do not re- order the bytes of data). The functions that you are to implement are declared in hdd file_io.h and should be implemented in hdd _file_io.c as follows: Function Description hdd open1]This call opens a file (i.e., sets any initially needed metadata in your data structure) and returns a UNIQUE integer file handle (to be assigned by you) [2] For this assignment, the file can be assumed to be non-existent on the device [3] You should initialize the device here (but only the first time this function is called i.e. singleton pattern) [4] The function returns -1 on failure and UNIQUE integer on success The functions you NEED to write (i.e., the filesystem driver) In this assignment, another application (a.k.a., the unit-tests provided to you) will call your code to evaluate your application by trying to save, read, and write files to the block storage and validate your results. Unit-testing will use your functions to do so, hence do not change function names (you will be penalized). For this assignment (HINT: but not future ones, so plan ahead), there will only ever be one file open at a time, and furthermore, each file that the user wants to write to the device will always fit within the maximum possible size of a block (HDD_MAX_BLOCK_SIZE). Thus, in this assignment, there is a one-to-one mapping of files to blocks. when your code is called, hdd open will be the first function called and will be given a filename. Your function code must return a number, also called a file handle, which will uniquely refer to that particular file across all your other functions. For instance, when the user wants to write something to a file on the device, your hdd write function will be called with the first parameter being the corresponding file handle you previously returned in hdd_open. If the user tries to call any of your functions (besides hdd open) with a file that is not open, you must return -1 (i.e. unsuccessful) and handle appropriately. You must keep track of whether or not a file is open using your own data structure. You can assume that when a user opens a file for the first time via hdd open, that there is no pre- existing data in the block storage about that file. The application will need to call hdd write in order to write anything about this file for the first time to a block. Then the application will need to call hdd read to get back any data that has been written to that file. When the application has finished using a file (i.e. read/write), it calls hdd close. For this assignment, calling hdd close will delete al the contents of the file in the block storage (HINT: future assignments will keep contents). Lastly, where the application starts reading from and writing to in a file is determined by the current seek position. The seek position is automatically placed at the end of the last read/write operation. The hdd seek function places the seek position wherever the user would like within the file (again, it is recommended to understand the standard seek C function) As a programmer, it is up to you to decide how to implement these functions. However, the functions must maintain the file contents in exactly the same way as a normal filesystem would (meaning do not re- order the bytes of data). The functions that you are to implement are declared in hdd file_io.h and should be implemented in hdd _file_io.c as follows: Function Description hdd open1]This call opens a file (i.e., sets any initially needed metadata in your data structure) and returns a UNIQUE integer file handle (to be assigned by you) [2] For this assignment, the file can be assumed to be non-existent on the device [3] You should initialize the device here (but only the first time this function is called i.e. singleton pattern) [4] The function returns -1 on failure and UNIQUE integer on success

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!