haiku/headers/private/fs_shell/fssh_api_wrapper.h

1575 lines
56 KiB
C
Raw Normal View History

/*
* Copyright 2007-2008, Ingo Weinhold, bonefish@cs.tu-berlin.de.
* Distributed under the terms of the MIT License.
*/
#ifndef _FSSH_API_WRAPPER_H
#define _FSSH_API_WRAPPER_H
#include <stdlib.h>
#include "fssh_dirent.h"
#include "fssh_errno.h"
#include "fssh_fcntl.h"
#include "fssh_stat.h"
#include "fssh_stdio.h"
#include "fssh_string.h"
#include "fssh_time.h"
#include "fssh_uio.h"
#include "fssh_unistd.h"
#include "fssh_atomic.h"
#include "fssh_byte_order.h"
#include "fssh_defs.h"
#include "fssh_disk_device_defs.h"
#include "fssh_disk_device_manager.h"
#include "fssh_driver_settings.h"
#include "fssh_drivers.h"
#include "fssh_errors.h"
#include "fssh_fs_attr.h"
#include "fssh_fs_cache.h"
#include "fssh_fs_index.h"
#include "fssh_fs_info.h"
#include "fssh_fs_interface.h"
#include "fssh_fs_query.h"
#include "fssh_fs_volume.h"
#include "fssh_kernel_export.h"
#include "fssh_lock.h"
#include "fssh_module.h"
#include "fssh_node_monitor.h"
#include "fssh_os.h"
#include "fssh_type_constants.h"
#include "fssh_types.h"
#include "DoublyLinkedList.h"
#include "Stack.h"
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_atomic.h
#define atomic_set fssh_atomic_set
#define atomic_test_and_set fssh_atomic_test_and_set
#define atomic_add fssh_atomic_add
#define atomic_and fssh_atomic_and
#define atomic_or fssh_atomic_or
#define atomic_get fssh_atomic_get
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_bytes_order.h
// swap directions
#define B_SWAP_HOST_TO_LENDIAN FSSH_B_SWAP_HOST_TO_LENDIAN
#define B_SWAP_HOST_TO_BENDIAN FSSH_B_SWAP_HOST_TO_BENDIAN
#define B_SWAP_LENDIAN_TO_HOST FSSH_B_SWAP_LENDIAN_TO_HOST
#define B_SWAP_BENDIAN_TO_HOST FSSH_B_SWAP_BENDIAN_TO_HOST
#define B_SWAP_ALWAYS FSSH_B_SWAP_ALWAYS
#define swap_action fssh_swap_action
// BSD/networking macros
#define htonl(x) fssh_htonl(x)
#define ntohl(x) fssh_ntohl(x)
#define htons(x) fssh_htons(x)
#define ntohs(x) fssh_ntohs(x)
// always swap macros
#define B_SWAP_DOUBLE(arg) FSSH_B_SWAP_DOUBLE(arg)
#define B_SWAP_FLOAT(arg) FSSH_B_SWAP_FLOAT(arg)
#define B_SWAP_INT64(arg) FSSH_B_SWAP_INT64(arg)
#define B_SWAP_INT32(arg) FSSH_B_SWAP_INT32(arg)
#define B_SWAP_INT16(arg) FSSH_B_SWAP_INT16(arg)
#define B_HOST_IS_LENDIAN FSSH_B_HOST_IS_LENDIAN
#define B_HOST_IS_BENDIAN FSSH_B_HOST_IS_BENDIAN
// Host native to little endian
#define B_HOST_TO_LENDIAN_DOUBLE(arg) FSSH_B_HOST_TO_LENDIAN_DOUBLE(arg)
#define B_HOST_TO_LENDIAN_FLOAT(arg) FSSH_B_HOST_TO_LENDIAN_FLOAT(arg)
#define B_HOST_TO_LENDIAN_INT64(arg) FSSH_B_HOST_TO_LENDIAN_INT64(arg)
#define B_HOST_TO_LENDIAN_INT32(arg) FSSH_B_HOST_TO_LENDIAN_INT32(arg)
#define B_HOST_TO_LENDIAN_INT16(arg) FSSH_B_HOST_TO_LENDIAN_INT16(arg)
// Little endian to host native
#define B_LENDIAN_TO_HOST_DOUBLE(arg) FSSH_B_LENDIAN_TO_HOST_DOUBLE(arg)
#define B_LENDIAN_TO_HOST_FLOAT(arg) FSSH_B_LENDIAN_TO_HOST_FLOAT(arg)
#define B_LENDIAN_TO_HOST_INT64(arg) FSSH_B_LENDIAN_TO_HOST_INT64(arg)
#define B_LENDIAN_TO_HOST_INT32(arg) FSSH_B_LENDIAN_TO_HOST_INT32(arg)
#define B_LENDIAN_TO_HOST_INT16(arg) FSSH_B_LENDIAN_TO_HOST_INT16(arg)
// Host native to big endian
#define B_HOST_TO_BENDIAN_DOUBLE(arg) FSSH_B_HOST_TO_BENDIAN_DOUBLE(arg)
#define B_HOST_TO_BENDIAN_FLOAT(arg) FSSH_B_HOST_TO_BENDIAN_FLOAT(arg)
#define B_HOST_TO_BENDIAN_INT64(arg) FSSH_B_HOST_TO_BENDIAN_INT64(arg)
#define B_HOST_TO_BENDIAN_INT32(arg) FSSH_B_HOST_TO_BENDIAN_INT32(arg)
#define B_HOST_TO_BENDIAN_INT16(arg) FSSH_B_HOST_TO_BENDIAN_INT16(arg)
// Big endian to host native
#define B_BENDIAN_TO_HOST_DOUBLE(arg) FSSH_B_BENDIAN_TO_HOST_DOUBLE(arg)
#define B_BENDIAN_TO_HOST_FLOAT(arg) FSSH_B_BENDIAN_TO_HOST_FLOAT(arg)
#define B_BENDIAN_TO_HOST_INT64(arg) FSSH_B_BENDIAN_TO_HOST_INT64(arg)
#define B_BENDIAN_TO_HOST_INT32(arg) FSSH_B_BENDIAN_TO_HOST_INT32(arg)
#define B_BENDIAN_TO_HOST_INT16(arg) FSSH_B_BENDIAN_TO_HOST_INT16(arg)
#define swap_data fssh_swap_data
#define is_type_swapped fssh_is_type_swapped
// Private implementations
#define __swap_double __fssh_swap_double
#define __swap_float __fssh_swap_float
#define __swap_int64 __fssh_swap_int64
#define __swap_int32 __fssh_swap_int32
#define __swap_int16 __fssh_swap_int16
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_defs.h
// Limits
#define B_DEV_NAME_LENGTH FSSH_B_DEV_NAME_LENGTH
#define B_FILE_NAME_LENGTH FSSH_B_FILE_NAME_LENGTH
#define B_PATH_NAME_LENGTH FSSH_B_PATH_NAME_LENGTH
#define B_ATTR_NAME_LENGTH FSSH_B_ATTR_NAME_LENGTH
#define B_MIME_TYPE_LENGTH FSSH_B_MIME_TYPE_LENGTH
#define B_MAX_SYMLINKS FSSH_B_MAX_SYMLINKS
// Open Modes
#define B_READ_ONLY FSSH_B_READ_ONLY
#define B_WRITE_ONLY FSSH_B_WRITE_ONLY
#define B_READ_WRITE FSSH_B_READ_WRITE
#define B_FAIL_IF_EXISTS FSSH_B_FAIL_IF_EXISTS
#define B_CREATE_FILE FSSH_B_CREATE_FILE
#define B_ERASE_FILE FSSH_B_ERASE_FILE
#define B_OPEN_AT_END FSSH_B_OPEN_AT_END
// Node Flavors
#define node_flavor fssh_node_flavor
#define B_FILE_NODE FSSH_B_FILE_NODE
#define B_SYMLINK_NODE FSSH_B_SYMLINK_NODE
#define B_DIRECTORY_NODE FSSH_B_DIRECTORY_NODE
#define B_ANY_NODE FSSH_B_ANY_NODE
#undef offsetof
#define offsetof(type,member) fssh_offsetof(type,member)
#define min_c(a,b) fssh_min_c(a,b)
#define max_c(a,b) fssh_max_c(a,b)
#undef _PACKED
#define _PACKED _FSSH_PACKED
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_dirent.h
#define dirent fssh_dirent
#define dirent_t fssh_dirent_t
#define DIR fssh_DIR
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_disk_device_defs.h
#define partition_id fssh_partition_id
#define disk_system_id fssh_disk_system_id
#define disk_job_id fssh_disk_job_id
// partition flags
#define B_PARTITION_IS_DEVICE FSSH_B_PARTITION_IS_DEVICE
#define B_PARTITION_FILE_SYSTEM FSSH_B_PARTITION_FILE_SYSTEM
#define B_PARTITION_PARTITIONING_SYSTEM FSSH_B_PARTITION_PARTITIONING_SYSTEM
#define B_PARTITION_READ_ONLY FSSH_B_PARTITION_READ_ONLY
#define B_PARTITION_MOUNTED FSSH_B_PARTITION_MOUNTED
#define B_PARTITION_BUSY FSSH_B_PARTITION_BUSY
#define B_PARTITION_DESCENDANT_BUSY FSSH_B_PARTITION_DESCENDANT_BUSY
// partition statuses
#define B_PARTITION_VALID FSSH_B_PARTITION_VALID
#define B_PARTITION_CORRUPT FSSH_B_PARTITION_CORRUPT
#define B_PARTITION_UNRECOGNIZED FSSH_B_PARTITION_UNRECOGNIZED
#define B_PARTITION_UNINITIALIZED FSSH_B_PARTITION_UNINITIALIZED
// partition change flags
#define B_PARTITION_CHANGED_OFFSET FSSH_B_PARTITION_CHANGED_OFFSET
#define B_PARTITION_CHANGED_SIZE FSSH_B_PARTITION_CHANGED_SIZE
#define B_PARTITION_CHANGED_CONTENT_SIZE FSSH_B_PARTITION_CHANGED_CONTENT_SIZE
#define B_PARTITION_CHANGED_BLOCK_SIZE FSSH_B_PARTITION_CHANGED_BLOCK_SIZE
#define B_PARTITION_CHANGED_STATUS FSSH_B_PARTITION_CHANGED_STATUS
#define B_PARTITION_CHANGED_FLAGS FSSH_B_PARTITION_CHANGED_FLAGS
#define B_PARTITION_CHANGED_VOLUME FSSH_B_PARTITION_CHANGED_VOLUME
#define B_PARTITION_CHANGED_NAME FSSH_B_PARTITION_CHANGED_NAME
#define B_PARTITION_CHANGED_CONTENT_NAME FSSH_B_PARTITION_CHANGED_CONTENT_NAME
#define B_PARTITION_CHANGED_TYPE FSSH_B_PARTITION_CHANGED_TYPE
#define B_PARTITION_CHANGED_CONTENT_TYPE FSSH_B_PARTITION_CHANGED_CONTENT_TYPE
#define B_PARTITION_CHANGED_PARAMETERS FSSH_B_PARTITION_CHANGED_PARAMETERS
#define B_PARTITION_CHANGED_CONTENT_PARAMETERS FSSH_B_PARTITION_CHANGED_CONTENT_PARAMETERS
#define B_PARTITION_CHANGED_CHILDREN FSSH_B_PARTITION_CHANGED_CHILDREN
#define B_PARTITION_CHANGED_DESCENDANTS FSSH_B_PARTITION_CHANGED_DESCENDANTS
#define B_PARTITION_CHANGED_DEFRAGMENTATION FSSH_B_PARTITION_CHANGED_DEFRAGMENTATION
#define B_PARTITION_CHANGED_CHECK FSSH_B_PARTITION_CHANGED_CHECK
#define B_PARTITION_CHANGED_REPAIR FSSH_B_PARTITION_CHANGED_REPAIR
#define B_PARTITION_CHANGED_INITIALIZATION FSSH_B_PARTITION_CHANGED_INITIALIZATION
// disk device flags
#define B_DISK_DEVICE_REMOVABLE FSSH_B_DISK_DEVICE_REMOVABLE
#define B_DISK_DEVICE_HAS_MEDIA FSSH_B_DISK_DEVICE_HAS_MEDIA
#define B_DISK_DEVICE_READ_ONLY FSSH_B_DISK_DEVICE_READ_ONLY
#define B_DISK_DEVICE_WRITE_ONCE FSSH_B_DISK_DEVICE_WRITE_ONCE
// disk system flags
#define B_DISK_SYSTEM_IS_FILE_SYSTEM FSSH_B_DISK_SYSTEM_IS_FILE_SYSTEM
// flags common for both file and partitioning systems
#define B_DISK_SYSTEM_SUPPORTS_CHECKING FSSH_B_DISK_SYSTEM_SUPPORTS_CHECKING
#define B_DISK_SYSTEM_SUPPORTS_REPAIRING FSSH_B_DISK_SYSTEM_SUPPORTS_REPAIRING
#define B_DISK_SYSTEM_SUPPORTS_RESIZING FSSH_B_DISK_SYSTEM_SUPPORTS_RESIZING
#define B_DISK_SYSTEM_SUPPORTS_MOVING FSSH_B_DISK_SYSTEM_SUPPORTS_MOVING
#define B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_NAME FSSH_B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_NAME
#define B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_PARAMETERS FSSH_B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_PARAMETERS
#define B_DISK_SYSTEM_SUPPORTS_INITIALIZING FSSH_B_DISK_SYSTEM_SUPPORTS_INITIALIZING
#define B_DISK_SYSTEM_SUPPORTS_CONTENT_NAME FSSH_B_DISK_SYSTEM_SUPPORTS_CONTENT_NAME
// file system specific flags
#define B_DISK_SYSTEM_SUPPORTS_DEFRAGMENTING FSSH_B_DISK_SYSTEM_SUPPORTS_DEFRAGMENTING
#define B_DISK_SYSTEM_SUPPORTS_DEFRAGMENTING_WHILE_MOUNTED FSSH_B_DISK_SYSTEM_SUPPORTS_DEFRAGMENTING_WHILE_MOUNTED
#define B_DISK_SYSTEM_SUPPORTS_CHECKING_WHILE_MOUNTED FSSH_B_DISK_SYSTEM_SUPPORTS_CHECKING_WHILE_MOUNTED
#define B_DISK_SYSTEM_SUPPORTS_REPAIRING_WHILE_MOUNTED FSSH_B_DISK_SYSTEM_SUPPORTS_REPAIRING_WHILE_MOUNTED
#define B_DISK_SYSTEM_SUPPORTS_RESIZING_WHILE_MOUNTED FSSH_B_DISK_SYSTEM_SUPPORTS_RESIZING_WHILE_MOUNTED
#define B_DISK_SYSTEM_SUPPORTS_MOVING_WHILE_MOUNTED FSSH_B_DISK_SYSTEM_SUPPORTS_MOVING_WHILE_MOUNTED
#define B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_NAME_WHILE_MOUNTED FSSH_B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_NAME_WHILE_MOUNTED
#define B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_PARAMETERS_WHILE_MOUNTED FSSH_B_DISK_SYSTEM_SUPPORTS_SETTING_CONTENT_PARAMETERS_WHILE_MOUNTED
// partitioning system specific flags
#define B_DISK_SYSTEM_SUPPORTS_RESIZING_CHILD FSSH_B_DISK_SYSTEM_SUPPORTS_RESIZING_CHILD
#define B_DISK_SYSTEM_SUPPORTS_MOVING_CHILD FSSH_B_DISK_SYSTEM_SUPPORTS_MOVING_CHILD
#define B_DISK_SYSTEM_SUPPORTS_SETTING_NAME FSSH_B_DISK_SYSTEM_SUPPORTS_SETTING_NAME
#define B_DISK_SYSTEM_SUPPORTS_SETTING_TYPE FSSH_B_DISK_SYSTEM_SUPPORTS_SETTING_TYPE
#define B_DISK_SYSTEM_SUPPORTS_SETTING_PARAMETERS FSSH_B_DISK_SYSTEM_SUPPORTS_SETTING_PARAMETERS
#define B_DISK_SYSTEM_SUPPORTS_CREATING_CHILD FSSH_B_DISK_SYSTEM_SUPPORTS_CREATING_CHILD
#define B_DISK_SYSTEM_SUPPORTS_DELETING_CHILD FSSH_B_DISK_SYSTEM_SUPPORTS_DELETING_CHILD
#define B_DISK_SYSTEM_SUPPORTS_NAME FSSH_B_DISK_SYSTEM_SUPPORTS_NAME
// disk device job types
#define B_DISK_DEVICE_JOB_BAD_TYPE FSSH_B_DISK_DEVICE_JOB_BAD_TYPE
#define B_DISK_DEVICE_JOB_DEFRAGMENT FSSH_B_DISK_DEVICE_JOB_DEFRAGMENT
#define B_DISK_DEVICE_JOB_REPAIR FSSH_B_DISK_DEVICE_JOB_REPAIR
#define B_DISK_DEVICE_JOB_RESIZE FSSH_B_DISK_DEVICE_JOB_RESIZE
#define B_DISK_DEVICE_JOB_MOVE FSSH_B_DISK_DEVICE_JOB_MOVE
#define B_DISK_DEVICE_JOB_SET_NAME FSSH_B_DISK_DEVICE_JOB_SET_NAME
#define B_DISK_DEVICE_JOB_SET_CONTENT_NAME FSSH_B_DISK_DEVICE_JOB_SET_CONTENT_NAME
#define B_DISK_DEVICE_JOB_SET_TYPE FSSH_B_DISK_DEVICE_JOB_SET_TYPE
#define B_DISK_DEVICE_JOB_SET_PARMETERS FSSH_B_DISK_DEVICE_JOB_SET_PARMETERS
#define B_DISK_DEVICE_JOB_SET_CONTENT_PARMETERS FSSH_B_DISK_DEVICE_JOB_SET_CONTENT_PARMETERS
#define B_DISK_DEVICE_JOB_INITIALIZE FSSH_B_DISK_DEVICE_JOB_INITIALIZE
#define B_DISK_DEVICE_JOB_UNINITIALIZE FSSH_B_DISK_DEVICE_JOB_UNINITIALIZE
#define B_DISK_DEVICE_JOB_CREATE FSSH_B_DISK_DEVICE_JOB_CREATE
#define B_DISK_DEVICE_JOB_DELETE FSSH_B_DISK_DEVICE_JOB_DELETE
#define B_DISK_DEVICE_JOB_SCAN FSSH_B_DISK_DEVICE_JOB_SCAN
// disk device job statuses
#define B_DISK_DEVICE_JOB_UNINITIALIZED FSSH_B_DISK_DEVICE_JOB_UNINITIALIZED
#define B_DISK_DEVICE_JOB_SCHEDULED FSSH_B_DISK_DEVICE_JOB_SCHEDULED
#define B_DISK_DEVICE_JOB_IN_PROGRESS FSSH_B_DISK_DEVICE_JOB_IN_PROGRESS
#define B_DISK_DEVICE_JOB_SUCCEEDED FSSH_B_DISK_DEVICE_JOB_SUCCEEDED
#define B_DISK_DEVICE_JOB_FAILED FSSH_B_DISK_DEVICE_JOB_FAILED
#define B_DISK_DEVICE_JOB_CANCELED FSSH_B_DISK_DEVICE_JOB_CANCELED
#define disk_device_job_progress_info fssh_disk_device_job_progress_info
// disk device job interrupt properties
#define B_DISK_DEVICE_JOB_CAN_CANCEL FSSH_B_DISK_DEVICE_JOB_CAN_CANCEL
#define B_DISK_DEVICE_JOB_STOP_ON_CANCEL FSSH_B_DISK_DEVICE_JOB_STOP_ON_CANCEL
#define B_DISK_DEVICE_JOB_REVERSE_ON_CANCEL FSSH_B_DISK_DEVICE_JOB_REVERSE_ON_CANCEL
#define B_DISK_DEVICE_JOB_CAN_PAUSE FSSH_B_DISK_DEVICE_JOB_CAN_PAUSE
// string length constants, all of which include the NULL terminator
#define B_DISK_DEVICE_TYPE_LENGTH FSSH_B_DISK_DEVICE_TYPE_LENGTH
#define B_DISK_DEVICE_NAME_LENGTH FSSH_B_DISK_DEVICE_NAME_LENGTH
#define B_DISK_SYSTEM_NAME_LENGTH FSSH_B_DISK_SYSTEM_NAME_LENGTH
// max size of parameter string buffers, including NULL terminator
#define B_DISK_DEVICE_MAX_PARAMETER_SIZE FSSH_B_DISK_DEVICE_MAX_PARAMETER_SIZE
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_disk_device_manager.h
#define partition_data fssh_partition_data
#define disk_device_data fssh_disk_device_data
#define partitionable_space_data fssh_partitionable_space_data
// operations on partitions
#define B_PARTITION_DEFRAGMENT FSSH_B_PARTITION_DEFRAGMENT
#define B_PARTITION_REPAIR FSSH_B_PARTITION_REPAIR
#define B_PARTITION_RESIZE FSSH_B_PARTITION_RESIZE
#define B_PARTITION_RESIZE_CHILD FSSH_B_PARTITION_RESIZE_CHILD
#define B_PARTITION_MOVE FSSH_B_PARTITION_MOVE
#define B_PARTITION_MOVE_CHILD FSSH_B_PARTITION_MOVE_CHILD
#define B_PARTITION_SET_NAME FSSH_B_PARTITION_SET_NAME
#define B_PARTITION_SET_CONTENT_NAME FSSH_B_PARTITION_SET_CONTENT_NAME
#define B_PARTITION_SET_TYPE FSSH_B_PARTITION_SET_TYPE
#define B_PARTITION_SET_PARAMETERS FSSH_B_PARTITION_SET_PARAMETERS
#define B_PARTITION_SET_CONTENT_PARAMETERS FSSH_B_PARTITION_SET_CONTENT_PARAMETERS
#define B_PARTITION_INITIALIZE FSSH_B_PARTITION_INITIALIZE
#define B_PARTITION_CREATE_CHILD FSSH_B_PARTITION_CREATE_CHILD
#define B_PARTITION_DELETE_CHILD FSSH_B_PARTITION_DELETE_CHILD
// disk device job cancel status
#define B_DISK_DEVICE_JOB_CONTINUE FSSH_B_DISK_DEVICE_JOB_CONTINUE
#define B_DISK_DEVICE_JOB_CANCEL FSSH_B_DISK_DEVICE_JOB_CANCEL
#define B_DISK_DEVICE_JOB_REVERSE FSSH_B_DISK_DEVICE_JOB_REVERSE
// disk device locking
#define write_lock_disk_device fssh_write_lock_disk_device
#define write_unlock_disk_device fssh_write_unlock_disk_device
#define read_lock_disk_device fssh_read_lock_disk_device
#define read_unlock_disk_device fssh_read_unlock_disk_device
// getting disk devices/partitions by path
#define find_disk_device fssh_find_disk_device
#define find_partition fssh_find_partition
// disk device/partition read access
#define get_disk_device fssh_get_disk_device
#define get_partition fssh_get_partition
#define get_parent_partition fssh_get_parent_partition
#define get_child_partition fssh_get_child_partition
// partition write access
#define create_child_partition fssh_create_child_partition
#define delete_partition fssh_delete_partition
#define partition_modified fssh_partition_modified
#define scan_partition fssh_scan_partition
// disk systems
#define find_disk_system fssh_find_disk_system
// jobs
#define update_disk_device_job_progress fssh_update_disk_device_job_progress
#define update_disk_device_job_extra_progress fssh_update_disk_device_job_extra_progress
#define set_disk_device_job_error_message fssh_set_disk_device_job_error_message
#define update_disk_device_job_interrupt_properties fssh_update_disk_device_job_interrupt_properties
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_driver_settings.h
#define driver_parameter fssh_driver_parameter
#define driver_settings fssh_driver_settings
#define load_driver_settings fssh_load_driver_settings
#define unload_driver_settings fssh_unload_driver_settings
#define parse_driver_settings_string fssh_parse_driver_settings_string
#define get_driver_settings_string fssh_get_driver_settings_string
#define delete_driver_settings fssh_delete_driver_settings
#define get_driver_parameter fssh_get_driver_parameter
#define get_driver_boolean_parameter fssh_get_driver_boolean_parameter
#define get_driver_settings fssh_get_driver_settings
#define B_SAFEMODE_DRIVER_SETTINGS FSSH_B_SAFEMODE_DRIVER_SETTINGS
#define B_SAFEMODE_SAFE_MODE FSSH_B_SAFEMODE_SAFE_MODE
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_drivers.h
#define device_open_hook fssh_device_open_hook
#define device_close_hook fssh_device_close_hook
#define device_free_hook fssh_device_free_hook
#define device_control_hook fssh_device_control_hook
#define device_read_hook fssh_device_read_hook
#define device_write_hook fssh_device_write_hook
#define device_select_hook fssh_device_select_hook
#define device_deselect_hook fssh_device_deselect_hook
#define device_read_pages_hook fssh_device_read_pages_hook
#define device_write_pages_hook fssh_device_write_pages_hook
#define B_CUR_DRIVER_API_VERSION FSSH_B_CUR_DRIVER_API_VERSION
#define device_hooks fssh_device_hooks
#define init_hardware fssh_init_hardware
#define publish_devices fssh_publish_devices
#define find_device fssh_find_device
#define init_driver fssh_init_driver
#define uninit_driver fssh_uninit_driver
#define api_version fssh_api_version
#define B_GET_DEVICE_SIZE FSSH_B_GET_DEVICE_SIZE
#define B_SET_DEVICE_SIZE FSSH_B_SET_DEVICE_SIZE
#define B_SET_NONBLOCKING_IO FSSH_B_SET_NONBLOCKING_IO
#define B_SET_BLOCKING_IO FSSH_B_SET_BLOCKING_IO
#define B_GET_READ_STATUS FSSH_B_GET_READ_STATUS
#define B_GET_WRITE_STATUS FSSH_B_GET_WRITE_STATUS
#define B_GET_GEOMETRY FSSH_B_GET_GEOMETRY
#define B_GET_DRIVER_FOR_DEVICE FSSH_B_GET_DRIVER_FOR_DEVICE
#define B_GET_PARTITION_INFO FSSH_B_GET_PARTITION_INFO
#define B_SET_PARTITION FSSH_B_SET_PARTITION
#define B_FORMAT_DEVICE FSSH_B_FORMAT_DEVICE
#define B_EJECT_DEVICE FSSH_B_EJECT_DEVICE
#define B_GET_ICON FSSH_B_GET_ICON
#define B_GET_BIOS_GEOMETRY FSSH_B_GET_BIOS_GEOMETRY
#define B_GET_MEDIA_STATUS FSSH_B_GET_MEDIA_STATUS
#define B_LOAD_MEDIA FSSH_B_LOAD_MEDIA
#define B_GET_BIOS_DRIVE_ID FSSH_B_GET_BIOS_DRIVE_ID
#define B_SET_UNINTERRUPTABLE_IO FSSH_B_SET_UNINTERRUPTABLE_IO
#define B_SET_INTERRUPTABLE_IO FSSH_B_SET_INTERRUPTABLE_IO
#define B_FLUSH_DRIVE_CACHE FSSH_B_FLUSH_DRIVE_CACHE
#define B_GET_PATH_FOR_DEVICE FSSH_B_GET_PATH_FOR_DEVICE
#define B_GET_NEXT_OPEN_DEVICE FSSH_B_GET_NEXT_OPEN_DEVICE
#define B_ADD_FIXED_DRIVER FSSH_B_ADD_FIXED_DRIVER
#define B_REMOVE_FIXED_DRIVER FSSH_B_REMOVE_FIXED_DRIVER
#define B_AUDIO_DRIVER_BASE FSSH_B_AUDIO_DRIVER_BASE
#define B_MIDI_DRIVER_BASE FSSH_B_MIDI_DRIVER_BASE
#define B_JOYSTICK_DRIVER_BASE FSSH_B_JOYSTICK_DRIVER_BASE
#define B_GRAPHIC_DRIVER_BASE FSSH_B_GRAPHIC_DRIVER_BASE
#define B_DEVICE_OP_CODES_END FSSH_B_DEVICE_OP_CODES_END
#define device_geometry fssh_device_geometry
#define B_DISK FSSH_B_DISK
#define B_TAPE FSSH_B_TAPE
#define B_PRINTER FSSH_B_PRINTER
#define B_CPU FSSH_B_CPU
#define B_WORM FSSH_B_WORM
#define B_CD FSSH_B_CD
#define B_SCANNER FSSH_B_SCANNER
#define B_OPTICAL FSSH_B_OPTICAL
#define B_JUKEBOX FSSH_B_JUKEBOX
#define B_NETWORK FSSH_B_NETWORK
#define partition_info fssh_partition_info
#define driver_path fssh_driver_path
#define open_device_iterator fssh_open_device_iterator
#define device_icon fssh_device_icon
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_errors.h
/* Error baselines */
#define B_GENERAL_ERROR_BASE FSSH_B_GENERAL_ERROR_BASE
#define B_OS_ERROR_BASE FSSH_B_OS_ERROR_BASE
#define B_APP_ERROR_BASE FSSH_B_APP_ERROR_BASE
#define B_INTERFACE_ERROR_BASE FSSH_B_INTERFACE_ERROR_BASE
#define B_MEDIA_ERROR_BASE FSSH_B_MEDIA_ERROR_BASE
#define B_TRANSLATION_ERROR_BASE FSSH_B_TRANSLATION_ERROR_BASE
#define B_MIDI_ERROR_BASE FSSH_B_MIDI_ERROR_BASE
#define B_STORAGE_ERROR_BASE FSSH_B_STORAGE_ERROR_BASE
#define B_POSIX_ERROR_BASE FSSH_B_POSIX_ERROR_BASE
#define B_MAIL_ERROR_BASE FSSH_B_MAIL_ERROR_BASE
#define B_PRINT_ERROR_BASE FSSH_B_PRINT_ERROR_BASE
#define B_DEVICE_ERROR_BASE FSSH_B_DEVICE_ERROR_BASE
/* Developer-defined errors start at (B_ERRORS_END+1) */
#define B_ERRORS_END FSSH_B_ERRORS_END
/* General Errors */
#define B_NO_MEMORY FSSH_B_NO_MEMORY
#define B_IO_ERROR FSSH_B_IO_ERROR
#define B_PERMISSION_DENIED FSSH_B_PERMISSION_DENIED
#define B_BAD_INDEX FSSH_B_BAD_INDEX
#define B_BAD_TYPE FSSH_B_BAD_TYPE
#define B_BAD_VALUE FSSH_B_BAD_VALUE
#define B_MISMATCHED_VALUES FSSH_B_MISMATCHED_VALUES
#define B_NAME_NOT_FOUND FSSH_B_NAME_NOT_FOUND
#define B_NAME_IN_USE FSSH_B_NAME_IN_USE
#define B_TIMED_OUT FSSH_B_TIMED_OUT
#define B_INTERRUPTED FSSH_B_INTERRUPTED
#define B_WOULD_BLOCK FSSH_B_WOULD_BLOCK
#define B_CANCELED FSSH_B_CANCELED
#define B_NO_INIT FSSH_B_NO_INIT
#define B_BUSY FSSH_B_BUSY
#define B_NOT_ALLOWED FSSH_B_NOT_ALLOWED
#define B_BAD_DATA FSSH_B_BAD_DATA
#define B_DONT_DO_THAT FSSH_B_DONT_DO_THAT
#define B_ERROR FSSH_B_ERROR
#define B_OK FSSH_B_OK
#define B_NO_ERROR FSSH_B_NO_ERROR
/* Kernel Kit Errors */
#define B_BAD_SEM_ID FSSH_B_BAD_SEM_ID
#define B_NO_MORE_SEMS FSSH_B_NO_MORE_SEMS
#define B_BAD_THREAD_ID FSSH_B_BAD_THREAD_ID
#define B_NO_MORE_THREADS FSSH_B_NO_MORE_THREADS
#define B_BAD_THREAD_STATE FSSH_B_BAD_THREAD_STATE
#define B_BAD_TEAM_ID FSSH_B_BAD_TEAM_ID
#define B_NO_MORE_TEAMS FSSH_B_NO_MORE_TEAMS
#define B_BAD_PORT_ID FSSH_B_BAD_PORT_ID
#define B_NO_MORE_PORTS FSSH_B_NO_MORE_PORTS
#define B_BAD_IMAGE_ID FSSH_B_BAD_IMAGE_ID
#define B_BAD_ADDRESS FSSH_B_BAD_ADDRESS
#define B_NOT_AN_EXECUTABLE FSSH_B_NOT_AN_EXECUTABLE
#define B_MISSING_LIBRARY FSSH_B_MISSING_LIBRARY
#define B_MISSING_SYMBOL FSSH_B_MISSING_SYMBOL
#define B_DEBUGGER_ALREADY_INSTALLED FSSH_B_DEBUGGER_ALREADY_INSTALLED
/* Application Kit Errors */
#define B_BAD_REPLY FSSH_B_BAD_REPLY
#define B_DUPLICATE_REPLY FSSH_B_DUPLICATE_REPLY
#define B_MESSAGE_TO_SELF FSSH_B_MESSAGE_TO_SELF
#define B_BAD_HANDLER FSSH_B_BAD_HANDLER
#define B_ALREADY_RUNNING FSSH_B_ALREADY_RUNNING
#define B_LAUNCH_FAILED FSSH_B_LAUNCH_FAILED
#define B_AMBIGUOUS_APP_LAUNCH FSSH_B_AMBIGUOUS_APP_LAUNCH
#define B_UNKNOWN_MIME_TYPE FSSH_B_UNKNOWN_MIME_TYPE
#define B_BAD_SCRIPT_SYNTAX FSSH_B_BAD_SCRIPT_SYNTAX
#define B_LAUNCH_FAILED_NO_RESOLVE_LINK FSSH_B_LAUNCH_FAILED_NO_RESOLVE_LINK
#define B_LAUNCH_FAILED_EXECUTABLE FSSH_B_LAUNCH_FAILED_EXECUTABLE
#define B_LAUNCH_FAILED_APP_NOT_FOUND FSSH_B_LAUNCH_FAILED_APP_NOT_FOUND
#define B_LAUNCH_FAILED_APP_IN_TRASH FSSH_B_LAUNCH_FAILED_APP_IN_TRASH
#define B_LAUNCH_FAILED_NO_PREFERRED_APP FSSH_B_LAUNCH_FAILED_NO_PREFERRED_APP
#define B_LAUNCH_FAILED_FILES_APP_NOT_FOUND FSSH_B_LAUNCH_FAILED_FILES_APP_NOT_FOUND
#define B_BAD_MIME_SNIFFER_RULE FSSH_B_BAD_MIME_SNIFFER_RULE
#define B_NOT_A_MESSAGE FSSH_B_NOT_A_MESSAGE
#define B_SHUTDOWN_CANCELLED FSSH_B_SHUTDOWN_CANCELLED
#define B_SHUTTING_DOWN FSSH_B_SHUTTING_DOWN
/* Storage Kit/File System Errors */
#define B_FILE_ERROR FSSH_B_FILE_ERROR
#define B_FILE_NOT_FOUND FSSH_B_FILE_NOT_FOUND
#define B_FILE_EXISTS FSSH_B_FILE_EXISTS
#define B_ENTRY_NOT_FOUND FSSH_B_ENTRY_NOT_FOUND
#define B_NAME_TOO_LONG FSSH_B_NAME_TOO_LONG
#define B_NOT_A_DIRECTORY FSSH_B_NOT_A_DIRECTORY
#define B_DIRECTORY_NOT_EMPTY FSSH_B_DIRECTORY_NOT_EMPTY
#define B_DEVICE_FULL FSSH_B_DEVICE_FULL
#define B_READ_ONLY_DEVICE FSSH_B_READ_ONLY_DEVICE
#define B_IS_A_DIRECTORY FSSH_B_IS_A_DIRECTORY
#define B_NO_MORE_FDS FSSH_B_NO_MORE_FDS
#define B_CROSS_DEVICE_LINK FSSH_B_CROSS_DEVICE_LINK
#define B_LINK_LIMIT FSSH_B_LINK_LIMIT
#define B_BUSTED_PIPE FSSH_B_BUSTED_PIPE
#define B_UNSUPPORTED FSSH_B_UNSUPPORTED
#define B_PARTITION_TOO_SMALL FSSH_B_PARTITION_TOO_SMALL
/* POSIX Errors */
#define E2BIG FSSH_E2BIG
#define ECHILD FSSH_ECHILD
#define EDEADLK FSSH_EDEADLK
#define EFBIG FSSH_EFBIG
#define EMLINK FSSH_EMLINK
#define ENFILE FSSH_ENFILE
#define ENODEV FSSH_ENODEV
#define ENOLCK FSSH_ENOLCK
#define ENOSYS FSSH_ENOSYS
#define ENOTTY FSSH_ENOTTY
#define ENXIO FSSH_ENXIO
#define ESPIPE FSSH_ESPIPE
#define ESRCH FSSH_ESRCH
#define EFPOS FSSH_EFPOS
#define ESIGPARM FSSH_ESIGPARM
#define EDOM FSSH_EDOM
#define ERANGE FSSH_ERANGE
#define EPROTOTYPE FSSH_EPROTOTYPE
#define EPROTONOSUPPORT FSSH_EPROTONOSUPPORT
#define EPFNOSUPPORT FSSH_EPFNOSUPPORT
#define EAFNOSUPPORT FSSH_EAFNOSUPPORT
#define EADDRINUSE FSSH_EADDRINUSE
#define EADDRNOTAVAIL FSSH_EADDRNOTAVAIL
#define ENETDOWN FSSH_ENETDOWN
#define ENETUNREACH FSSH_ENETUNREACH
#define ENETRESET FSSH_ENETRESET
#define ECONNABORTED FSSH_ECONNABORTED
#define ECONNRESET FSSH_ECONNRESET
#define EISCONN FSSH_EISCONN
#define ENOTCONN FSSH_ENOTCONN
#define ESHUTDOWN FSSH_ESHUTDOWN
#define ECONNREFUSED FSSH_ECONNREFUSED
#define EHOSTUNREACH FSSH_EHOSTUNREACH
#define ENOPROTOOPT FSSH_ENOPROTOOPT
#define ENOBUFS FSSH_ENOBUFS
#define EINPROGRESS FSSH_EINPROGRESS
#define EALREADY FSSH_EALREADY
#define EILSEQ FSSH_EILSEQ
#define ENOMSG FSSH_ENOMSG
#define ESTALE FSSH_ESTALE
#define EOVERFLOW FSSH_EOVERFLOW
#define EMSGSIZE FSSH_EMSGSIZE
#define EOPNOTSUPP FSSH_EOPNOTSUPP
#define ENOTSOCK FSSH_ENOTSOCK
#define EHOSTDOWN FSSH_EHOSTDOWN
#define EBADMSG FSSH_EBADMSG
#define ECANCELED FSSH_ECANCELED
#define EDESTADDRREQ FSSH_EDESTADDRREQ
#define EDQUOT FSSH_EDQUOT
#define EIDRM FSSH_EIDRM
#define EMULTIHOP FSSH_EMULTIHOP
#define ENODATA FSSH_ENODATA
#define ENOLINK FSSH_ENOLINK
#define ENOSR FSSH_ENOSR
#define ENOSTR FSSH_ENOSTR
#define ENOTSUP FSSH_ENOTSUP
#define EPROTO FSSH_EPROTO
#define ETIME FSSH_ETIME
#define ETXTBSY FSSH_ETXTBSY
/* POSIX errors that can be mapped to BeOS error codes */
#define ENOMEM FSSH_ENOMEM
#define EACCES FSSH_EACCES
#define EINTR FSSH_EINTR
#define EIO FSSH_EIO
#define EBUSY FSSH_EBUSY
#define EFAULT FSSH_EFAULT
#define ETIMEDOUT FSSH_ETIMEDOUT
#define EAGAIN FSSH_EAGAIN
#define EWOULDBLOCK FSSH_EWOULDBLOCK
#define EBADF FSSH_EBADF
#define EEXIST FSSH_EEXIST
#define EINVAL FSSH_EINVAL
#define ENAMETOOLONG FSSH_ENAMETOOLONG
#define ENOENT FSSH_ENOENT
#define EPERM FSSH_EPERM
#define ENOTDIR FSSH_ENOTDIR
#define EISDIR FSSH_EISDIR
#define ENOTEMPTY FSSH_ENOTEMPTY
#define ENOSPC FSSH_ENOSPC
#define EROFS FSSH_EROFS
#define EMFILE FSSH_EMFILE
#define EXDEV FSSH_EXDEV
#define ELOOP FSSH_ELOOP
#define ENOEXEC FSSH_ENOEXEC
#define EPIPE FSSH_EPIPE
/* new error codes that can be mapped to POSIX errors */
#define B_BUFFER_OVERFLOW FSSH_B_BUFFER_OVERFLOW
#define B_TOO_MANY_ARGS FSSH_B_TOO_MANY_ARGS
#define B_FILE_TOO_LARGE FSSH_B_FILE_TOO_LARGE
#define B_RESULT_NOT_REPRESENTABLE FSSH_B_RESULT_NOT_REPRESENTABLE
#define B_DEVICE_NOT_FOUND FSSH_B_DEVICE_NOT_FOUND
#define B_NOT_SUPPORTED FSSH_B_NOT_SUPPORTED
/* Media Kit Errors */
#define B_STREAM_NOT_FOUND FSSH_B_STREAM_NOT_FOUND
#define B_SERVER_NOT_FOUND FSSH_B_SERVER_NOT_FOUND
#define B_RESOURCE_NOT_FOUND FSSH_B_RESOURCE_NOT_FOUND
#define B_RESOURCE_UNAVAILABLE FSSH_B_RESOURCE_UNAVAILABLE
#define B_BAD_SUBSCRIBER FSSH_B_BAD_SUBSCRIBER
#define B_SUBSCRIBER_NOT_ENTERED FSSH_B_SUBSCRIBER_NOT_ENTERED
#define B_BUFFER_NOT_AVAILABLE FSSH_B_BUFFER_NOT_AVAILABLE
#define B_LAST_BUFFER_ERROR FSSH_B_LAST_BUFFER_ERROR
/* Mail Kit Errors */
#define B_MAIL_NO_DAEMON FSSH_B_MAIL_NO_DAEMON
#define B_MAIL_UNKNOWN_USER FSSH_B_MAIL_UNKNOWN_USER
#define B_MAIL_WRONG_PASSWORD FSSH_B_MAIL_WRONG_PASSWORD
#define B_MAIL_UNKNOWN_HOST FSSH_B_MAIL_UNKNOWN_HOST
#define B_MAIL_ACCESS_ERROR FSSH_B_MAIL_ACCESS_ERROR
#define B_MAIL_UNKNOWN_FIELD FSSH_B_MAIL_UNKNOWN_FIELD
#define B_MAIL_NO_RECIPIENT FSSH_B_MAIL_NO_RECIPIENT
#define B_MAIL_INVALID_MAIL FSSH_B_MAIL_INVALID_MAIL
/* Printing Errors */
#define B_NO_PRINT_SERVER FSSH_B_NO_PRINT_SERVER
/* Device Kit Errors */
#define B_DEV_INVALID_IOCTL FSSH_B_DEV_INVALID_IOCTL
#define B_DEV_NO_MEMORY FSSH_B_DEV_NO_MEMORY
#define B_DEV_BAD_DRIVE_NUM FSSH_B_DEV_BAD_DRIVE_NUM
#define B_DEV_NO_MEDIA FSSH_B_DEV_NO_MEDIA
#define B_DEV_UNREADABLE FSSH_B_DEV_UNREADABLE
#define B_DEV_FORMAT_ERROR FSSH_B_DEV_FORMAT_ERROR
#define B_DEV_TIMEOUT FSSH_B_DEV_TIMEOUT
#define B_DEV_RECALIBRATE_ERROR FSSH_B_DEV_RECALIBRATE_ERROR
#define B_DEV_SEEK_ERROR FSSH_B_DEV_SEEK_ERROR
#define B_DEV_ID_ERROR FSSH_B_DEV_ID_ERROR
#define B_DEV_READ_ERROR FSSH_B_DEV_READ_ERROR
#define B_DEV_WRITE_ERROR FSSH_B_DEV_WRITE_ERROR
#define B_DEV_NOT_READY FSSH_B_DEV_NOT_READY
#define B_DEV_MEDIA_CHANGED FSSH_B_DEV_MEDIA_CHANGED
#define B_DEV_MEDIA_CHANGE_REQUESTED FSSH_B_DEV_MEDIA_CHANGE_REQUESTED
#define B_DEV_RESOURCE_CONFLICT FSSH_B_DEV_RESOURCE_CONFLICT
#define B_DEV_CONFIGURATION_ERROR FSSH_B_DEV_CONFIGURATION_ERROR
#define B_DEV_DISABLED_BY_USER FSSH_B_DEV_DISABLED_BY_USER
#define B_DEV_DOOR_OPEN FSSH_B_DEV_DOOR_OPEN
#define B_DEV_INVALID_PIPE FSSH_B_DEV_INVALID_PIPE
#define B_DEV_CRC_ERROR FSSH_B_DEV_CRC_ERROR
#define B_DEV_STALLED FSSH_B_DEV_STALLED
#define B_DEV_BAD_PID FSSH_B_DEV_BAD_PID
#define B_DEV_UNEXPECTED_PID FSSH_B_DEV_UNEXPECTED_PID
#define B_DEV_DATA_OVERRUN FSSH_B_DEV_DATA_OVERRUN
#define B_DEV_DATA_UNDERRUN FSSH_B_DEV_DATA_UNDERRUN
#define B_DEV_FIFO_OVERRUN FSSH_B_DEV_FIFO_OVERRUN
#define B_DEV_FIFO_UNDERRUN FSSH_B_DEV_FIFO_UNDERRUN
#define B_DEV_PENDING FSSH_B_DEV_PENDING
#define B_DEV_MULTIPLE_ERRORS FSSH_B_DEV_MULTIPLE_ERRORS
#define B_DEV_TOO_LATE FSSH_B_DEV_TOO_LATE
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_errno.h
#define ENOERR FSSH_ENOERR
#define EOK FSSH_EOK
#define errno fssh_errno
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_fcntl.h
/* commands that can be passed to fcntl() */
#define F_DUPFD FSSH_F_DUPFD
#define F_GETFD FSSH_F_GETFD
#define F_SETFD FSSH_F_SETFD
#define F_GETFL FSSH_F_GETFL
#define F_SETFL FSSH_F_SETFL
#define F_GETLK FSSH_F_GETLK
#define F_SETLK FSSH_F_SETLK
#define F_SETLKW FSSH_F_SETLKW
/* advisory locking types */
#define F_RDLCK FSSH_F_RDLCK
#define F_UNLCK FSSH_F_UNLCK
#define F_WRLCK FSSH_F_WRLCK
/* file descriptor flags for fcntl() */
#define FD_CLOEXEC FSSH_FD_CLOEXEC
/* file access modes for open() */
#define O_RDONLY FSSH_O_RDONLY
#define O_WRONLY FSSH_O_WRONLY
#define O_RDWR FSSH_O_RDWR
#define O_ACCMODE FSSH_O_ACCMODE
#define O_RWMASK FSSH_O_RWMASK
/* flags for open() */
#define O_EXCL FSSH_O_EXCL
#define O_CREAT FSSH_O_CREAT
#define O_TRUNC FSSH_O_TRUNC
#define O_NOCTTY FSSH_O_NOCTTY
#define O_NOTRAVERSE FSSH_O_NOTRAVERSE
/* flags for open() and fcntl() */
#define O_CLOEXEC FSSH_O_CLOEXEC
#define O_NONBLOCK FSSH_O_NONBLOCK
#define O_APPEND FSSH_O_APPEND
#define O_TEXT FSSH_O_TEXT
#define O_BINARY FSSH_O_BINARY
#define O_SYNC FSSH_O_SYNC
#define O_RSYNC FSSH_O_RSYNC
#define O_DSYNC FSSH_O_DSYNC
#define O_NOFOLLOW FSSH_O_NOFOLLOW
#define O_NOCACHE FSSH_O_NOCACHE
#define O_DIRECT FSSH_O_DIRECT
#define O_MOUNT FSSH_O_MOUNT
#define O_TEMPORARY FSSH_O_TEMPORARY
#define O_SHLOCK FSSH_O_SHLOCK
#define O_EXLOCK FSSH_O_EXLOCK
#define S_IREAD FSSH_S_IREAD
#define S_IWRITE FSSH_S_IWRITE
#define creat fssh_creat
#define open fssh_open
#define fcntl fssh_fcntl
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_fs_attr.h
#define attr_info fssh_attr_info
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_fs_cache.h
#define TRANSACTION_WRITTEN FSSH_TRANSACTION_WRITTEN
#define TRANSACTION_ABORTED FSSH_TRANSACTION_ABORTED
#define TRANSACTION_ENDED FSSH_TRANSACTION_ENDED
#define TRANSACTION_IDLE FSSH_TRANSACTION_IDLE
#define transaction_notification_hook fssh_transaction_notification_hook
/* transactions */
#define cache_start_transaction fssh_cache_start_transaction
#define cache_sync_transaction fssh_cache_sync_transaction
#define cache_end_transaction fssh_cache_end_transaction
#define cache_abort_transaction fssh_cache_abort_transaction
#define cache_detach_sub_transaction fssh_cache_detach_sub_transaction
#define cache_abort_sub_transaction fssh_cache_abort_sub_transaction
#define cache_start_sub_transaction fssh_cache_start_sub_transaction
#define cache_add_transaction_listener fssh_cache_add_transaction_listener
#define cache_remove_transaction_listener fssh_cache_remove_transaction_listener
#define cache_next_block_in_transaction fssh_cache_next_block_in_transaction
#define cache_blocks_in_transaction fssh_cache_blocks_in_transaction
* cache_detach_sub_transaction() didn't really work: it did not put all needed blocks into the new transaction, but it would set that transaction on all blocks of the old transaction, too. Also, it did not correctly update the num_blocks/sub_num_blocks fields of the old transaction. Even worse, it did return B_OK instead of the ID of the new transaction... * get_writable_cached_block() did not correctly maintain the number of blocks in the sub transaction. * write_cached_block() did not free the original_data of a block when it wrote it back as part of a previous transaction. * Changed "cookie" for cache_next_block_in_transaction() to "long", so it will be 64 bits when needed. * Improved the API for detaching sub transactions: you can now get the blocks of only the main (parent) transaction as well, added new cache_block_in_main_transaction() function. * BFS now flushes the log when there is no space left for the current transaction. * _WriteTransactionToLog() allocated a "vecs" array, but never freed it. * _WriteTransactionToLog() now also supports detaching the current sub transaction if the whole thing is getting too large (it will now also panic if that doesn't work out). * Removed a useless optimization: making the blocks available in the cache isn't really needed, as all blocks in a transaction are locked into the cache, anyway. * Implemented Transaction::WriteBlocks(). * Minor cleanup, removed some dead code, fixed warnings in the fs_shell's block_cache when compiled with debug output on. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23610 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-18 20:07:18 +03:00
#define cache_blocks_in_main_transaction fssh_cache_blocks_in_main_transaction
#define cache_blocks_in_sub_transaction fssh_cache_blocks_in_sub_transaction
/* block cache */
#define block_cache_delete fssh_block_cache_delete
#define block_cache_create fssh_block_cache_create
#define block_cache_sync fssh_block_cache_sync
#define block_cache_sync_etc fssh_block_cache_sync_etc
#define block_cache_make_writable fssh_block_cache_make_writable
#define block_cache_get_writable_etc fssh_block_cache_get_writable_etc
#define block_cache_get_writable fssh_block_cache_get_writable
#define block_cache_get_empty fssh_block_cache_get_empty
#define block_cache_get_etc fssh_block_cache_get_etc
#define block_cache_get fssh_block_cache_get
#define block_cache_set_dirty fssh_block_cache_set_dirty
#define block_cache_put fssh_block_cache_put
/* file cache */
#define file_cache_create fssh_file_cache_create
#define file_cache_delete fssh_file_cache_delete
#define file_cache_set_size fssh_file_cache_set_size
#define file_cache_sync fssh_file_cache_sync
#define file_cache_read fssh_file_cache_read
#define file_cache_write fssh_file_cache_write
* Extracted file_map API out of the file cache - it's now an optional service that can be used by file systems. * Changed the way the file cache works: instead of reading/writing to the underlying device directly, it can now be used for any data source, ie. also network file systems. * As a result, the former pages_io() moved to the VFS layer, and can now be called by a file system via {read|write}_file_io_vec_pages() (naming suggestions are always welcomed :-)). It now gets an FD, and uses that to communicate with the device (via its fs_{read|write}_pages() hooks). * The file_cache_{read|write}() functions must now be called without holding an I/O relevant file system lock. That allows the file cache to prepare the pages without colliding with the page writer, IOW the "mayBlock" flag can go into the attic again (yay!). * This also results in a much better performance when the system does I/O and is low on memory, as the page writer can now finally write back some pages, and that even without maxing out the CPU :) * The API changes put slightly more burden on the fs_{read|write}_pages() hooks, but in combination with the file_map it's still pretty straight forward. It just will have to dispatch the call to the underlying device directly, usually it will just call its fs_{read|write}_pages() hooks via the above mentioned calls. * Ported BFS and FAT to the new API, the latter has not been tested, though. * Also ported the API changes to the fs_shell. I also completely removed its file cache level page handling - the downside is that device access is no longer cached (ie. depends on the host OS now), the upside is that the code is greatly simplified. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22886 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-11 00:19:52 +03:00
/* file map */
#define file_map_create fssh_file_map_create
#define file_map_delete fssh_file_map_delete
#define file_map_set_size fssh_file_map_set_size
#define file_map_invalidate fssh_file_map_invalidate
#define file_map_translate fssh_file_map_translate
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_fs_index.h
#define index_info fssh_index_info
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_fs_info.h
/* fs_info.flags */
#define B_FS_IS_READONLY FSSH_B_FS_IS_READONLY
#define B_FS_IS_REMOVABLE FSSH_B_FS_IS_REMOVABLE
#define B_FS_IS_PERSISTENT FSSH_B_FS_IS_PERSISTENT
#define B_FS_IS_SHARED FSSH_B_FS_IS_SHARED
#define B_FS_HAS_MIME FSSH_B_FS_HAS_MIME
#define B_FS_HAS_ATTR FSSH_B_FS_HAS_ATTR
#define B_FS_HAS_QUERY FSSH_B_FS_HAS_QUERY
// those additions are preliminary and may be removed
#define B_FS_HAS_SELF_HEALING_LINKS FSSH_B_FS_HAS_SELF_HEALING_LINKS
#define B_FS_HAS_ALIASES FSSH_B_FS_HAS_ALIASES
#define B_FS_SUPPORTS_NODE_MONITORING FSSH_B_FS_SUPPORTS_NODE_MONITORING
#define fs_info fssh_fs_info
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_fs_interface.h
#define mount_id fssh_mount_id
#define vnode_id fssh_vnode_id
// TODO: These two don't belong here!
#define IORequest FSSHIORequest
#define io_request fssh_io_request
/* additional flags passed to write_stat() */
#define B_STAT_SIZE_INSECURE FSSH_B_STAT_SIZE_INSECURE
/* passed to write_fs_info() */
#define FS_WRITE_FSINFO_NAME FSSH_FS_WRITE_FSINFO_NAME
#define file_io_vec fssh_file_io_vec
#define B_CURRENT_FS_API_VERSION FSSH_B_CURRENT_FS_API_VERSION
* Reorganized the FS interface a little: - Moved most file_system_module_info hooks into separate structures. Those that operate on mounted volumes to fs_volume_ops, those operating on a vnode to fs_vnode_ops. - Got rid of the fs_volume, fs_cookie, fs_vnode typedefs. We use void* again. - Instead of a void* volume and node cookie hooks are passed a fs_volume and fs_vnode structure pointer, which contain the cookie and an ops pointer (fs_volume a few more things). - The VFS {new,publish,get,...}_vnode() functions take a fs_volume* instead of the volume ID. So does vfs_get_fs_node_from_path(). - Added type and flags arguments to publish_vnode() and the get_vnode() hook and removed the type argument from lookup() hook. Added vnode::type using formerly unused bits to store the node type. Simplified a few things in the VFS due to the now always available node type. - Added fs_volume_ops::{create,delete}_sub_vnode() and fs_vnode_ops::get_super_vnode() hooks. They are used to support file system layers, e.g. allowing to extend an FS not supporting BeOS attribute with attribute support. Needs some more work in the VFS. - Added fs_vnode_ops::create_special_node() hook for creating special nodes (e.g. FIFOs). * Adjusted the built-in file systems and BFS according to the interface changes. Removed all other FSs from the image for the time being. We'll see whether further API changes are necessary before porting them. * Adjusted the bfs_shell accordingly. * Implemented create_special_node() in rootfs to support special nodes. * Added support for FIFOs: - Added syscall _kern_create_fifo() (used by mkfifo()), which creates a special node (type S_IFIFO) in the respective file system. - When a special node is published the VFS creates a respective sub node. Currently only FIFOs are supported. - Added a little support for FIFO subnodes by using functionality from the pipefs. - Added mkfifo to the image. It can create FIFOs in the rootfs, but the FIFOs aren't really usable ATM, since they still work like pipes, i.e. readers and writers need to have them open at the same time. * Some smaller changes in the VFS: - Made the *_CALL macros nicer to use (vargs). - Refactored FS entry lookup into new function lookup_dir_entry(). - create_vnode() no longer just calls the FS create() hook. First it looks up the entry and uses open_vnode(), if it already exists. This is necessary for two reasons: 1) The FS might not support create() while still allowing to open() entries. 2) When the FS has other layers on to of it (or the respective node) it might not be responsible for opening the node. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24816 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-06 03:05:16 +04:00
// flags for publish_vnode() and fs_volume_ops::get_vnode()
#define B_VNODE_PUBLISH_REMOVED FSSH_B_VNODE_PUBLISH_REMOVED
#define B_VNODE_DONT_CREATE_SPECIAL_SUB_NODE FSSH_B_VNODE_DONT_CREATE_SPECIAL_SUB_NODE
#define fs_volume fssh_fs_volume
#define fs_volume_ops fssh_fs_volume_ops
#define fs_vnode fssh_fs_vnode
#define fs_vnode_ops fssh_fs_vnode_ops
#define file_system_module_info fssh_file_system_module_info
/* file system add-ons only prototypes */
#define iterative_io_get_vecs fssh_iterative_io_get_vecs
#define iterative_io_finished fssh_iterative_io_finished
#define new_vnode fssh_new_vnode
#define publish_vnode fssh_publish_vnode
#define get_vnode fssh_get_vnode
#define put_vnode fssh_put_vnode
#define remove_vnode fssh_remove_vnode
#define unremove_vnode fssh_unremove_vnode
#define get_vnode_removed fssh_get_vnode_removed
#define volume_for_vnode fssh_volume_for_vnode
* Extracted file_map API out of the file cache - it's now an optional service that can be used by file systems. * Changed the way the file cache works: instead of reading/writing to the underlying device directly, it can now be used for any data source, ie. also network file systems. * As a result, the former pages_io() moved to the VFS layer, and can now be called by a file system via {read|write}_file_io_vec_pages() (naming suggestions are always welcomed :-)). It now gets an FD, and uses that to communicate with the device (via its fs_{read|write}_pages() hooks). * The file_cache_{read|write}() functions must now be called without holding an I/O relevant file system lock. That allows the file cache to prepare the pages without colliding with the page writer, IOW the "mayBlock" flag can go into the attic again (yay!). * This also results in a much better performance when the system does I/O and is low on memory, as the page writer can now finally write back some pages, and that even without maxing out the CPU :) * The API changes put slightly more burden on the fs_{read|write}_pages() hooks, but in combination with the file_map it's still pretty straight forward. It just will have to dispatch the call to the underlying device directly, usually it will just call its fs_{read|write}_pages() hooks via the above mentioned calls. * Ported BFS and FAT to the new API, the latter has not been tested, though. * Also ported the API changes to the fs_shell. I also completely removed its file cache level page handling - the downside is that device access is no longer cached (ie. depends on the host OS now), the upside is that the code is greatly simplified. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22886 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-11 00:19:52 +03:00
#define read_pages fssh_read_pages
#define write_pages fssh_write_pages
#define read_file_io_vec_pages fssh_read_file_io_vec_pages
#define write_file_io_vec_pages fssh_write_file_io_vec_pages
#define do_fd_io fssh_do_fd_io
#define do_iterative_fd_io fssh_do_iterative_fd_io
#define notify_entry_created fssh_notify_entry_created
#define notify_entry_removed fssh_notify_entry_removed
#define notify_entry_moved fssh_notify_entry_moved
#define notify_stat_changed fssh_notify_stat_changed
#define notify_attribute_changed fssh_notify_attribute_changed
#define notify_query_entry_created fssh_notify_query_entry_created
#define notify_query_entry_removed fssh_notify_query_entry_removed
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_fs_query.h
#define B_LIVE_QUERY FSSH_B_LIVE_QUERY
#define B_QUERY_NON_INDEXED FSSH_B_QUERY_NON_INDEXED
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_fs_volume.h
#define B_MOUNT_READ_ONLY FSSH_B_MOUNT_READ_ONLY
#define B_MOUNT_VIRTUAL_DEVICE FSSH_B_MOUNT_VIRTUAL_DEVICE
/* unmount flags */
#define B_FORCE_UNMOUNT FSSH_B_FORCE_UNMOUNT
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_kernel_export.h
/* kernel threads */
#define spawn_kernel_thread fssh_spawn_kernel_thread
/* misc */
#define user_memcpy fssh_user_memcpy
/* primitive kernel debugging facilities */
#define dprintf fssh_dprintf
#define kprintf fssh_kprintf
#define dump_block fssh_dump_block
#define panic fssh_panic
#define kernel_debugger fssh_kernel_debugger
#define parse_expression fssh_parse_expression
#define debugger_command_hook fssh_debugger_command_hook
#define add_debugger_command fssh_add_debugger_command
#define remove_debugger_command fssh_remove_debugger_command
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_lock.h
#define mutex fssh_mutex
#define rw_lock fssh_rw_lock
#define recursive_lock fssh_recursive_lock
#define MUTEX_FLAG_CLONE_NAME FSSH_MUTEX_FLAG_CLONE_NAME
#define RW_LOCK_FLAG_CLONE_NAME FSSH_RW_LOCK_FLAG_CLONE_NAME
#define ASSERT_LOCKED_RECURSIVE(r) FSSH_ASSERT_LOCKED_RECURSIVE(r)
#define ASSERT_LOCKED_MUTEX(m) FSSH_ASSERT_LOCKED_MUTEX(m)
#define ASSERT_WRITE_LOCKED_RW_LOCK(l) FSSH_ASSERT_WRITE_LOCKED_RW_LOCK(l)
#define ASSERT_READ_LOCKED_RW_LOCK(l) FSSH_ASSERT_READ_LOCKED_RW_LOCK(l)
#define MUTEX_INITIALIZER(name) FSSH_MUTEX_INITIALIZER(name)
#define RECURSIVE_LOCK_INITIALIZER(name) FSSH_RECURSIVE_LOCK_INITIALIZER(name)
#define RW_LOCK_INITIALIZER(name) FSSH_RW_LOCK_INITIALIZER(name)
#define recursive_lock_init fssh_recursive_lock_init
#define recursive_lock_init_etc fssh_recursive_lock_init_etc
#define recursive_lock_destroy fssh_recursive_lock_destroy
#define recursive_lock_lock fssh_recursive_lock_lock
#define recursive_lock_trylock fssh_recursive_lock_trylock
#define recursive_lock_unlock fssh_recursive_lock_unlock
#define recursive_lock_get_recursion fssh_recursive_lock_get_recursion
#define rw_lock_init fssh_rw_lock_init
#define rw_lock_init_etc fssh_rw_lock_init_etc
#define rw_lock_destroy fssh_rw_lock_destroy
#define rw_lock_read_lock fssh_rw_lock_read_lock
#define rw_lock_read_unlock fssh_rw_lock_read_unlock
#define rw_lock_write_lock fssh_rw_lock_write_lock
#define rw_lock_write_unlock fssh_rw_lock_write_unlock
#define mutex_init fssh_mutex_init
#define mutex_init_etc fssh_mutex_init_etc
#define mutex_destroy fssh_mutex_destroy
#define mutex_lock fssh_mutex_lock
#define mutex_trylock fssh_mutex_trylock
#define mutex_unlock fssh_mutex_unlock
#define mutex_transfer_lock fssh_mutex_transfer_lock
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_module.h
#define module_info fssh_module_info
/* module standard operations */
#define B_MODULE_INIT FSSH_B_MODULE_INIT
#define B_MODULE_UNINIT FSSH_B_MODULE_UNINIT
/* module flags */
#define B_KEEP_LOADED FSSH_B_KEEP_LOADED
#define module_dependency fssh_module_dependency
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_node_monitor.h
#define B_STOP_WATCHING FSSH_B_STOP_WATCHING
#define B_WATCH_NAME FSSH_B_WATCH_NAME
#define B_WATCH_STAT FSSH_B_WATCH_STAT
#define B_WATCH_ATTR FSSH_B_WATCH_ATTR
#define B_WATCH_DIRECTORY FSSH_B_WATCH_DIRECTORY
#define B_WATCH_ALL FSSH_B_WATCH_ALL
#define B_WATCH_MOUNT FSSH_B_WATCH_MOUNT
#define B_WATCH_INTERIM_STAT FSSH_B_WATCH_INTERIM_STAT
#define B_ENTRY_CREATED FSSH_B_ENTRY_CREATED
#define B_ENTRY_REMOVED FSSH_B_ENTRY_REMOVED
#define B_ENTRY_MOVED FSSH_B_ENTRY_MOVED
#define B_STAT_CHANGED FSSH_B_STAT_CHANGED
#define B_ATTR_CHANGED FSSH_B_ATTR_CHANGED
#define B_DEVICE_MOUNTED FSSH_B_DEVICE_MOUNTED
#define B_DEVICE_UNMOUNTED FSSH_B_DEVICE_UNMOUNTED
#define B_ATTR_CREATED FSSH_B_ATTR_CREATED
#define B_ATTR_REMOVED FSSH_B_ATTR_REMOVED
#define B_STAT_MODE FSSH_B_STAT_MODE
#define B_STAT_UID FSSH_B_STAT_UID
#define B_STAT_GID FSSH_B_STAT_GID
#define B_STAT_SIZE FSSH_B_STAT_SIZE
#define B_STAT_ACCESS_TIME FSSH_B_STAT_ACCESS_TIME
#define B_STAT_MODIFICATION_TIME FSSH_B_STAT_MODIFICATION_TIME
#define B_STAT_CREATION_TIME FSSH_B_STAT_CREATION_TIME
#define B_STAT_CHANGE_TIME FSSH_B_STAT_CHANGE_TIME
#define B_STAT_INTERIM_UPDATE FSSH_B_STAT_INTERIM_UPDATE
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_os.h
/* System constants */
#define B_OS_NAME_LENGTH FSSH_B_OS_NAME_LENGTH
#define B_PAGE_SIZE FSSH_B_PAGE_SIZE
#define B_INFINITE_TIMEOUT FSSH_B_INFINITE_TIMEOUT
/* Types */
#define area_id fssh_area_id
#define port_id fssh_port_id
#define sem_id fssh_sem_id
#define team_id fssh_team_id
#define thread_id fssh_thread_id
/* Semaphores */
#define sem_info fssh_sem_info
/* semaphore flags */
#define B_CAN_INTERRUPT FSSH_B_CAN_INTERRUPT
#define B_CHECK_PERMISSION FSSH_B_CHECK_PERMISSION
#define B_KILL_CAN_INTERRUPT FSSH_B_KILL_CAN_INTERRUPT
#define B_DO_NOT_RESCHEDULE FSSH_B_DO_NOT_RESCHEDULE
#define B_RELEASE_ALL FSSH_B_RELEASE_ALL
#define B_RELEASE_IF_WAITING_ONLY FSSH_B_RELEASE_IF_WAITING_ONLY
#define create_sem fssh_create_sem
#define delete_sem fssh_delete_sem
#define acquire_sem fssh_acquire_sem
#define acquire_sem_etc fssh_acquire_sem_etc
#define release_sem fssh_release_sem
#define release_sem_etc fssh_release_sem_etc
#define get_sem_count fssh_get_sem_count
#define set_sem_owner fssh_set_sem_owner
#define get_sem_info(sem, info) fssh_get_sem_info(sem, info)
#define get_next_sem_info(team, cookie, info) fssh_get_next_sem_info(team, cookie, info)
#define B_TIMEOUT FSSH_B_TIMEOUT
#define B_RELATIVE_TIMEOUT FSSH_B_RELATIVE_TIMEOUT
#define B_ABSOLUTE_TIMEOUT FSSH_B_ABSOLUTE_TIMEOUT
/* Teams */
#define B_CURRENT_TEAM FSSH_B_CURRENT_TEAM
#define B_SYSTEM_TEAM FSSH_B_SYSTEM_TEAM
/* Threads */
#define B_THREAD_RUNNING FSSH_B_THREAD_RUNNING
#define B_THREAD_READY FSSH_B_THREAD_READY
#define B_THREAD_RECEIVING FSSH_B_THREAD_RECEIVING
#define B_THREAD_ASLEEP FSSH_B_THREAD_ASLEEP
#define B_THREAD_SUSPENDED FSSH_B_THREAD_SUSPENDED
#define B_THREAD_WAITING FSSH_B_THREAD_WAITING
#define thread_state fssh_thread_state
#define thread_info fssh_thread_info
#define B_IDLE_PRIORITY FSSH_B_IDLE_PRIORITY
#define B_LOWEST_ACTIVE_PRIORITY FSSH_B_LOWEST_ACTIVE_PRIORITY
#define B_LOW_PRIORITY FSSH_B_LOW_PRIORITY
#define B_NORMAL_PRIORITY FSSH_B_NORMAL_PRIORITY
#define B_DISPLAY_PRIORITY FSSH_B_DISPLAY_PRIORITY
#define B_URGENT_DISPLAY_PRIORITY FSSH_B_URGENT_DISPLAY_PRIORITY
#define B_REAL_TIME_DISPLAY_PRIORITY FSSH_B_REAL_TIME_DISPLAY_PRIORITY
#define B_URGENT_PRIORITY FSSH_B_URGENT_PRIORITY
#define B_REAL_TIME_PRIORITY FSSH_B_REAL_TIME_PRIORITY
#define B_FIRST_REAL_TIME_PRIORITY FSSH_B_FIRST_REAL_TIME_PRIORITY
#define B_MIN_PRIORITY FSSH_B_MIN_PRIORITY
#define B_MAX_PRIORITY FSSH_B_MAX_PRIORITY
#define B_SYSTEM_TIMEBASE FSSH_B_SYSTEM_TIMEBASE
#define thread_func fssh_thread_func
#define thread_entry fssh_thread_entry
#define spawn_thread fssh_spawn_thread
#define kill_thread fssh_kill_thread
#define resume_thread fssh_resume_thread
#define suspend_thread fssh_suspend_thread
#define rename_thread fssh_rename_thread
#define set_thread_priority fssh_set_thread_priority
#define exit_thread fssh_exit_thread
#define wait_for_thread fssh_wait_for_thread
#define on_exit_thread fssh_on_exit_thread
#define find_thread fssh_find_thread
#define send_data fssh_send_data
#define receive_data fssh_receive_data
#define has_data fssh_has_data
#define snooze fssh_snooze
#define snooze_etc fssh_snooze_etc
#define snooze_until fssh_snooze_until
#define get_thread_info(id, info) fssh_get_thread_info(id, info)
#define get_next_thread_info(team, cookie, info) fssh_get_next_thread_info(team, cookie, info)
/* Time */
#define real_time_clock fssh_real_time_clock
#define set_real_time_clock fssh_set_real_time_clock
#define real_time_clock_usecs fssh_real_time_clock_usecs
#define set_timezone fssh_set_timezone
#define system_time fssh_system_time
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_stat.h
#define stat fssh_stat
// struct stat fields
#undef st_dev
#undef st_ino
#undef st_mode
#undef st_nlink
#undef st_uid
#undef st_gid
#undef st_size
#undef st_rdev
#undef st_blksize
#undef st_atime
#undef st_mtime
#undef st_ctime
#undef st_crtime
#undef st_type
#define st_dev fssh_st_dev
#define st_ino fssh_st_ino
#define st_mode fssh_st_mode
#define st_nlink fssh_st_nlink
#define st_uid fssh_st_uid
#define st_gid fssh_st_gid
#define st_size fssh_st_size
#define st_rdev fssh_st_rdev
#define st_blksize fssh_st_blksize
#define st_atime fssh_st_atime
#define st_mtime fssh_st_mtime
#define st_ctime fssh_st_ctime
#define st_crtime fssh_st_crtime
#define st_type fssh_st_type
/* extended file types */
#define S_ATTR_DIR FSSH_S_ATTR_DIR
#define S_ATTR FSSH_S_ATTR
#define S_INDEX_DIR FSSH_S_INDEX_DIR
#define S_STR_INDEX FSSH_S_STR_INDEX
#define S_INT_INDEX FSSH_S_INT_INDEX
#define S_UINT_INDEX FSSH_S_UINT_INDEX
#define S_LONG_LONG_INDEX FSSH_S_LONG_LONG_INDEX
#define S_ULONG_LONG_INDEX FSSH_S_ULONG_LONG_INDEX
#define S_FLOAT_INDEX FSSH_S_FLOAT_INDEX
#define S_DOUBLE_INDEX FSSH_S_DOUBLE_INDEX
#define S_ALLOW_DUPS FSSH_S_ALLOW_DUPS
/* link types */
#define S_LINK_SELF_HEALING FSSH_S_LINK_SELF_HEALING
#define S_LINK_AUTO_DELETE FSSH_S_LINK_AUTO_DELETE
/* standard file types */
#define S_IFMT FSSH_S_IFMT
#define S_IFLNK FSSH_S_IFLNK
#define S_IFREG FSSH_S_IFREG
#define S_IFBLK FSSH_S_IFBLK
#define S_IFDIR FSSH_S_IFDIR
#define S_IFCHR FSSH_S_IFCHR
#define S_IFIFO FSSH_S_IFIFO
#define S_ISREG(mode) FSSH_S_ISREG(mode)
#define S_ISLNK(mode) FSSH_S_ISLNK(mode)
#define S_ISBLK(mode) FSSH_S_ISBLK(mode)
#define S_ISDIR(mode) FSSH_S_ISDIR(mode)
#define S_ISCHR(mode) FSSH_S_ISCHR(mode)
#define S_ISFIFO(mode) FSSH_S_ISFIFO(mode)
#define S_ISINDEX(mode) FSSH_S_ISINDEX(mode)
#define S_IUMSK FSSH_S_IUMSK
#define S_ISUID FSSH_S_ISUID
#define S_ISGID FSSH_S_ISGID
#define S_ISVTX FSSH_S_ISVTX
#define S_IRWXU FSSH_S_IRWXU
#define S_IRUSR FSSH_S_IRUSR
#define S_IWUSR FSSH_S_IWUSR
#define S_IXUSR FSSH_S_IXUSR
#define S_IRWXG FSSH_S_IRWXG
#define S_IRGRP FSSH_S_IRGRP
#define S_IWGRP FSSH_S_IWGRP
#define S_IXGRP FSSH_S_IXGRP
#define S_IRWXO FSSH_S_IRWXO
#define S_IROTH FSSH_S_IROTH
#define S_IWOTH FSSH_S_IWOTH
#define S_IXOTH FSSH_S_IXOTH
#define ACCESSPERMS FSSH_ACCESSPERMS
#define ALLPERMS FSSH_ALLPERMS
#define DEFFILEMODE FSSH_DEFFILEMODE
#define chmod fssh_chmod
#define fchmod fssh_fchmod
#define mkdir fssh_mkdir
#define mkfifo fssh_mkfifo
#define umask fssh_umask
//#define stat fssh_stat
// Already mapped above for "struct stat".
#define fstat fssh_fstat
#define lstat fssh_lstat
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_stdio.h
#define EOF FSSH_EOF
/* file operations */
#define remove fssh_remove
#define rename fssh_rename
/* formatted I/O */
#define sprintf fssh_sprintf
#define snprintf fssh_snprintf
#define vsprintf fssh_vsprintf
#define vsnprintf fssh_vsnprintf
#define sscanf fssh_sscanf
#define vsscanf fssh_vsscanf
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_string.h
/* memXXX() functions */
#define memchr fssh_memchr
#define memcmp fssh_memcmp
#define memcpy fssh_memcpy
#define memccpy fssh_memccpy
#define memmove fssh_memmove
#define memset fssh_memset
/* string functions */
#define strcpy fssh_strcpy
#define strncpy fssh_strncpy
#define strcat fssh_strcat
#define strncat fssh_strncat
#define strlen fssh_strlen
#define strcmp fssh_strcmp
#define strncmp fssh_strncmp
#define strchr fssh_strchr
#define strrchr fssh_strrchr
#define strstr fssh_strstr
#define strchrnul fssh_strchrnul
#define strpbrk fssh_strpbrk
#define strtok fssh_strtok
#define strtok_r fssh_strtok_r
#define strspn fssh_strspn
#define strcspn fssh_strcspn
#define strcoll fssh_strcoll
#define strxfrm fssh_strxfrm
#define strerror fssh_strerror
#define strerror_r fssh_strerror_r
/* non-standard string functions */
#define strcasecmp fssh_strcasecmp
#define strncasecmp fssh_strncasecmp
#define strcasestr fssh_strcasestr
#define strdup fssh_strdup
#define stpcpy fssh_stpcpy
#define strtcopy fssh_strtcopy
#define strlcat fssh_strlcat
#define strlcpy fssh_strlcpy
#define strnlen fssh_strnlen
#define ffs fssh_ffs
#define index fssh_index
#define rindex fssh_rindex
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_time.h
#define clock_t fssh_clock_t
#define time_t fssh_time_t
#define suseconds_t fssh_suseconds_t
#define useconds_t fssh_useconds_t
#undef CLOCKS_PER_SEC
#undef CLK_TCK
#undef MAX_TIMESTR
#define CLOCKS_PER_SEC FSSH_CLOCKS_PER_SEC
#define CLK_TCK FSSH_CLK_TCK
#define MAX_TIMESTR FSSH_MAX_TIMESTR
#define timespec fssh_timespec
#define itimerspec fssh_itimerspec
#define tm fssh_tm
/* special timezone support */
#define tzname fssh_tzname
#define daylight fssh_daylight
#define timezone fssh_timezone
#define clock fssh_clock
#define difftime fssh_difftime
#define mktime fssh_mktime
#define time fssh_time
#define asctime fssh_asctime
#define asctime_r fssh_asctime_r
#define ctime fssh_ctime
#define ctime_r fssh_ctime_r
#define gmtime fssh_gmtime
#define gmtime_r fssh_gmtime_r
#define localtime fssh_localtime
#define localtime_r fssh_localtime_r
#define strftime fssh_strftime
#define strptime fssh_strptime
/* special timezone support */
#define tzset fssh_tzset
#define stime fssh_stime
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_type_constants.h
#define B_ANY_TYPE FSSH_B_ANY_TYPE
#define B_ATOM_TYPE FSSH_B_ATOM_TYPE
#define B_ATOMREF_TYPE FSSH_B_ATOMREF_TYPE
#define B_BOOL_TYPE FSSH_B_BOOL_TYPE
#define B_CHAR_TYPE FSSH_B_CHAR_TYPE
#define B_COLOR_8_BIT_TYPE FSSH_B_COLOR_8_BIT_TYPE
#define B_DOUBLE_TYPE FSSH_B_DOUBLE_TYPE
#define B_FLOAT_TYPE FSSH_B_FLOAT_TYPE
#define B_GRAYSCALE_8_BIT_TYPE FSSH_B_GRAYSCALE_8_BIT_TYPE
#define B_INT16_TYPE FSSH_B_INT16_TYPE
#define B_INT32_TYPE FSSH_B_INT32_TYPE
#define B_INT64_TYPE FSSH_B_INT64_TYPE
#define B_INT8_TYPE FSSH_B_INT8_TYPE
#define B_LARGE_ICON_TYPE FSSH_B_LARGE_ICON_TYPE
#define B_MEDIA_PARAMETER_GROUP_TYPE FSSH_B_MEDIA_PARAMETER_GROUP_TYPE
#define B_MEDIA_PARAMETER_TYPE FSSH_B_MEDIA_PARAMETER_TYPE
#define B_MEDIA_PARAMETER_WEB_TYPE FSSH_B_MEDIA_PARAMETER_WEB_TYPE
#define B_MESSAGE_TYPE FSSH_B_MESSAGE_TYPE
#define B_MESSENGER_TYPE FSSH_B_MESSENGER_TYPE
#define B_MIME_TYPE FSSH_B_MIME_TYPE
#define B_MINI_ICON_TYPE FSSH_B_MINI_ICON_TYPE
#define B_MONOCHROME_1_BIT_TYPE FSSH_B_MONOCHROME_1_BIT_TYPE
#define B_OBJECT_TYPE FSSH_B_OBJECT_TYPE
#define B_OFF_T_TYPE FSSH_B_OFF_T_TYPE
#define B_PATTERN_TYPE FSSH_B_PATTERN_TYPE
#define B_POINTER_TYPE FSSH_B_POINTER_TYPE
#define B_POINT_TYPE FSSH_B_POINT_TYPE
#define B_PROPERTY_INFO_TYPE FSSH_B_PROPERTY_INFO_TYPE
#define B_RAW_TYPE FSSH_B_RAW_TYPE
#define B_RECT_TYPE FSSH_B_RECT_TYPE
#define B_REF_TYPE FSSH_B_REF_TYPE
#define B_RGB_32_BIT_TYPE FSSH_B_RGB_32_BIT_TYPE
#define B_RGB_COLOR_TYPE FSSH_B_RGB_COLOR_TYPE
#define B_SIZE_T_TYPE FSSH_B_SIZE_T_TYPE
#define B_SSIZE_T_TYPE FSSH_B_SSIZE_T_TYPE
#define B_STRING_TYPE FSSH_B_STRING_TYPE
#define B_TIME_TYPE FSSH_B_TIME_TYPE
#define B_UINT16_TYPE FSSH_B_UINT16_TYPE
#define B_UINT32_TYPE FSSH_B_UINT32_TYPE
#define B_UINT64_TYPE FSSH_B_UINT64_TYPE
#define B_UINT8_TYPE FSSH_B_UINT8_TYPE
#define B_VECTOR_ICON_TYPE FSSH_B_VECTOR_ICON_TYPE
#define B_ASCII_TYPE FSSH_B_ASCII_TYPE
//----- System-wide MIME types for handling URL's ------------------------------
#define B_URL_HTTP FSSH_B_URL_HTTP
#define B_URL_HTTPS FSSH_B_URL_HTTPS
#define B_URL_FTP FSSH_B_URL_FTP
#define B_URL_GOPHER FSSH_B_URL_GOPHER
#define B_URL_MAILTO FSSH_B_URL_MAILTO
#define B_URL_NEWS FSSH_B_URL_NEWS
#define B_URL_NNTP FSSH_B_URL_NNTP
#define B_URL_TELNET FSSH_B_URL_TELNET
#define B_URL_RLOGIN FSSH_B_URL_RLOGIN
#define B_URL_TN3270 FSSH_B_URL_TN3270
#define B_URL_WAIS FSSH_B_URL_WAIS
#define B_URL_FILE FSSH_B_URL_FILE
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_types.h
#define ulong fssh_ulong
#define addr_t fssh_addr_t
#define dev_t fssh_dev_t
#define ino_t fssh_ino_t
#define size_t fssh_size_t
#define ssize_t fssh_ssize_t
#define off_t fssh_off_t
#define bigtime_t fssh_bigtime_t
#define status_t fssh_status_t
#define type_code fssh_type_code
#define mode_t fssh_mode_t
#define nlink_t fssh_nlink_t
#define uid_t fssh_uid_t
#define gid_t fssh_gid_t
#define pid_t fssh_pid_t
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_uio.h
#define iovec fssh_iovec
#define readv fssh_readv
#define readv_pos fssh_readv_pos
#define writev fssh_writev
#define writev_pos fssh_writev_pos
////////////////////////////////////////////////////////////////////////////////
// #pragma mark - fssh_unistd.h
/* access modes */
#define R_OK FSSH_R_OK
#define W_OK FSSH_W_OK
#define X_OK FSSH_X_OK
#define F_OK FSSH_F_OK
/* standard file descriptors */
#define STDIN_FILENO FSSH_STDIN_FILENO
#define STDOUT_FILENO FSSH_STDOUT_FILENO
#define STDERR_FILENO FSSH_STDERR_FILENO
/* lseek() constants */
#define SEEK_SET FSSH_SEEK_SET
#define SEEK_CUR FSSH_SEEK_CUR
#define SEEK_END FSSH_SEEK_END
/* file functions */
#define access fssh_access
#define chdir fssh_chdir
#define fchdir fssh_fchdir
#define getcwd fssh_getcwd
#define dup fssh_dup
#define dup2 fssh_dup2
#define close fssh_close
#define link fssh_link
#define unlink fssh_unlink
#define rmdir fssh_rmdir
#define readlink fssh_readlink
#define symlink fssh_symlink
#define ftruncate fssh_ftruncate
#define truncate fssh_truncate
#define ioctl fssh_ioctl
#define read fssh_read
#define read_pos fssh_read_pos
#define pread fssh_pread
#define write fssh_write
#define write_pos fssh_write_pos
#define pwrite fssh_pwrite
#define lseek fssh_lseek
#define sync fssh_sync
#define fsync fssh_fsync
/* access permissions */
#define getegid fssh_getegid
#define geteuid fssh_geteuid
#define getgid fssh_getgid
#define getgroups fssh_getgroups
#define getuid fssh_getuid
////////////////////////////////////////////////////////////////////////////////
// int types
#define int8 int8_t
#define uint8 uint8_t
#define int16 int16_t
#define uint16 uint16_t
#define int32 int32_t
#define uint32 uint32_t
#define int64 int64_t
#define uint64 uint64_t
#define vint32 vint32_t
#endif // _FSSH_API_WRAPPER_H