haiku/headers/private/fs_shell/fssh_api_wrapper.h
Axel Dörfler 3d268eda3d * 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-10 21:19:52 +00:00

1513 lines
53 KiB
C

/*
* Copyright 2007, 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_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
// Private implementations
#define __fssh_swap_double
#define __fssh_swap_float
#define __fssh_swap_int64
#define __fssh_swap_int32
#define __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_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_next_block_in_transaction fssh_cache_next_block_in_transaction
#define cache_blocks_in_transaction fssh_cache_blocks_in_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
/* 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
/* the file system's private data structures */
#define fs_volume fssh_fs_volume
#define fs_cookie fssh_fs_cookie
#define fs_vnode fssh_fs_vnode
/* passed to write_stat() */
#define write_stat_mask fssh_write_stat_mask
#define FS_WRITE_STAT_MODE FSSH_FS_WRITE_STAT_MODE
#define FS_WRITE_STAT_UID FSSH_FS_WRITE_STAT_UID
#define FS_WRITE_STAT_GID FSSH_FS_WRITE_STAT_GID
#define FS_WRITE_STAT_SIZE FSSH_FS_WRITE_STAT_SIZE
#define FS_WRITE_STAT_ATIME FSSH_FS_WRITE_STAT_ATIME
#define FS_WRITE_STAT_MTIME FSSH_FS_WRITE_STAT_MTIME
#define FS_WRITE_STAT_CRTIME FSSH_FS_WRITE_STAT_CRTIME
/* 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
#define file_system_module_info fssh_file_system_module_info
/* file system add-ons only prototypes */
#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 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 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
/* 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_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_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
////////////////////////////////////////////////////////////////////////////////
// #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