summaryrefslogtreecommitdiffstats
path: root/c/src/exec/libfs/src/dosfs/msdos_initsupp.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/exec/libfs/src/dosfs/msdos_initsupp.c')
-rw-r--r--c/src/exec/libfs/src/dosfs/msdos_initsupp.c149
1 files changed, 0 insertions, 149 deletions
diff --git a/c/src/exec/libfs/src/dosfs/msdos_initsupp.c b/c/src/exec/libfs/src/dosfs/msdos_initsupp.c
deleted file mode 100644
index eee8a6f9b2..0000000000
--- a/c/src/exec/libfs/src/dosfs/msdos_initsupp.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * MSDOS Initialization support routine implementation
- *
- * Copyright (C) 2001 OKTET Ltd., St.-Petersburg, Russia
- * Author: Eugeny S. Mints <Eugeny.Mints@oktet.ru>
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.OARcorp.com/rtems/license.html.
- *
- * @(#) $Id$
- */
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <assert.h>
-#include <rtems.h>
-#include <rtems/libio_.h>
-
-#include "fat.h"
-#include "fat_fat_operations.h"
-#include "fat_file.h"
-
-#include "msdos.h"
-
-/* msdos_initialize_support --
- * MSDOS filesystem initialization
- *
- * PARAMETERS:
- * temp_mt_entry - mount table entry
- * op_table - filesystem operations table
- * file_handlers - file operations table
- * directory_handlers - directory operations table
- *
- * RETURNS:
- * RC_OK and filled temp_mt_entry on success, or -1 if error occured
- * (errno set apropriately)
- *
- */
-int
-msdos_initialize_support(
- rtems_filesystem_mount_table_entry_t *temp_mt_entry,
- rtems_filesystem_operations_table *op_table,
- rtems_filesystem_file_handlers_r *file_handlers,
- rtems_filesystem_file_handlers_r *directory_handlers
- )
-{
- int rc = RC_OK;
- rtems_status_code sc = RTEMS_SUCCESSFUL;
- msdos_fs_info_t *fs_info = NULL;
- fat_file_fd_t *fat_fd = NULL;
- unsigned32 cl_buf_size;
-
- fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));
- if (!fs_info)
- set_errno_and_return_minus_one(ENOMEM);
-
- temp_mt_entry->fs_info = fs_info;
-
- rc = fat_init_volume_info(temp_mt_entry);
- if (rc != RC_OK)
- {
- free(fs_info);
- return rc;
- }
-
- fs_info->file_handlers = file_handlers;
- fs_info->directory_handlers = directory_handlers;
-
- /*
- * open fat-file which correspondes to root directory
- * (so inode number 0x00000010 is always used for root directory)
- */
- rc = fat_file_open(temp_mt_entry, FAT_ROOTDIR_CLUSTER_NUM, 0, &fat_fd);
- if (rc != RC_OK)
- {
- fat_shutdown_drive(temp_mt_entry);
- free(fs_info);
- return rc;
- }
-
- /* again: unfortunately "fat-file" is just almost fat file :( */
- fat_fd->fat_file_type = FAT_DIRECTORY;
- fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;
- fat_fd->info_cln = FAT_ROOTDIR_CLUSTER_NUM;
- fat_fd->info_ofs = 0;
- fat_fd->cln = fs_info->fat.vol.rdir_cl;
-
- fat_fd->map.file_cln = 0;
- fat_fd->map.disk_cln = fat_fd->cln;
-
- /* if we have FAT12/16 */
- if ( fat_fd->cln == 0 )
- {
- fat_fd->fat_file_size = fs_info->fat.vol.rdir_size;
- cl_buf_size = (fs_info->fat.vol.bpc > fs_info->fat.vol.rdir_size) ?
- fs_info->fat.vol.bpc :
- fs_info->fat.vol.rdir_size;
- }
- else
- {
- rc = fat_file_size(temp_mt_entry, fat_fd);
- if ( rc != RC_OK )
- {
- fat_file_close(temp_mt_entry, fat_fd);
- fat_shutdown_drive(temp_mt_entry);
- free(fs_info);
- return rc;
- }
- cl_buf_size = fs_info->fat.vol.bpc;
- }
-
- fs_info->cl_buf = (char *)calloc(cl_buf_size, sizeof(char));
- if (fs_info->cl_buf == NULL)
- {
- fat_file_close(temp_mt_entry, fat_fd);
- fat_shutdown_drive(temp_mt_entry);
- free(fs_info);
- set_errno_and_return_minus_one(ENOMEM);
- }
-
- sc = rtems_semaphore_create(3,
- 1,
- RTEMS_BINARY_SEMAPHORE | RTEMS_FIFO,
- RTEMS_INHERIT_PRIORITY,
- &fs_info->vol_sema);
- if (sc != RTEMS_SUCCESSFUL)
- {
- fat_file_close(temp_mt_entry, fat_fd);
- fat_shutdown_drive(temp_mt_entry);
- free(fs_info->cl_buf);
- free(fs_info);
- set_errno_and_return_minus_one( EIO );
- }
-
- temp_mt_entry->mt_fs_root.node_access = fat_fd;
- temp_mt_entry->mt_fs_root.handlers = directory_handlers;
- temp_mt_entry->mt_fs_root.ops = op_table;
-
- return rc;
-}