Make the file platform to work

This commit is contained in:
Godzil 2022-07-11 12:22:43 +01:00 committed by Manoel Trapier
parent 5e620711d0
commit 17ccf91286
2 changed files with 45 additions and 16 deletions

View File

@ -28,6 +28,7 @@ typedef struct miniffs_t
{
miniffs_header_t *header;
void *memoryOffset;
#ifdef BUILD_HOST_TOOLS
uint32_t file_count; /***< Number of valid files in the list */
uint32_t file_list_count; /***< Number of items in the list */

View File

@ -10,8 +10,10 @@
#include <stdio.h>
#include <stdlib.h>
#else
#include <stdlib.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#endif
@ -19,20 +21,7 @@
#define __miniffs_internal
#include <miniffs.h>
/* Exported API */
miniffs_t *miniffs_openfs(char *host_file)
{
return NULL;
}
/* Some internal functions */
void *miniffs_getfileaddr(miniffs_t *fs, fileentry_t *fent)
{
}
/* Internal functions */
size_t host_map_file(char *filename, char **dest)
{
char *ret_ptr;
@ -55,7 +44,7 @@ size_t host_map_file(char *filename, char **dest)
fd = open(filename, O_RDWR);
fstat(fd, &FileStat);
ret_ptr = (char *)mmap(NULL, FileStat.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
ret_ptr = (char *)mmap(NULL, FileStat.st_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
close(fd);
fileSize = FileStat.st_size;
if (ret_ptr == MAP_FAILED)
@ -77,4 +66,43 @@ void host_unmap_file(char **dest, size_t length)
#endif
*dest = NULL;
}
}
/* Exported API */
miniffs_t *miniffs_openfs(char *host_file)
{
miniffs_t *fs = NULL;
fs = (miniffs_t *)calloc(1, sizeof(miniffs_t));
if (fs == NULL)
{
miniffs_seterror(MINIFFS_ALLOCATION_ERROR);
goto exit;
}
host_map_file(host_file, (char **)&fs->memoryOffset);
fs->header = (miniffs_header_t *)fs->memoryOffset;
if (!miniffs_isvalidfs(fs))
{
miniffs_seterror(MINIFFS_INVALID_FS);
goto free_and_exit;
}
goto exit;
free_and_exit:
free(fs);
fs = NULL;
exit:
return fs;
}
/* Some internal functions */
void *miniffs_getfileaddr(miniffs_t *fs, fileentry_t *fent)
{
return fs->memoryOffset + fent->offset;
}