Module: FFI::Libfuse

Extended by:
GNUExtensions, Library
Defined in:
lib/ffi/libfuse.rb,
lib/ffi/libfuse/io.rb,
lib/ffi/libfuse/main.rb,
lib/ffi/libfuse/fuse2.rb,
lib/ffi/libfuse/fuse3.rb,
lib/ffi/libfuse/ackbar.rb,
lib/ffi/libfuse/adapter.rb,
lib/ffi/libfuse/version.rb,
lib/ffi/libfuse/fuse_buf.rb,
lib/ffi/libfuse/fuse_opt.rb,
lib/ffi/libfuse/job_pool.rb,
lib/ffi/libfuse/callbacks.rb,
lib/ffi/libfuse/fuse_args.rb,
lib/ffi/libfuse/filesystem.rb,
lib/ffi/libfuse/gem_helper.rb,
lib/ffi/libfuse/fuse_common.rb,
lib/ffi/libfuse/fuse_config.rb,
lib/ffi/libfuse/gem_version.rb,
lib/ffi/libfuse/test_helper.rb,
lib/ffi/libfuse/thread_pool.rb,
lib/ffi/libfuse/adapter/ruby.rb,
lib/ffi/libfuse/adapter/safe.rb,
lib/ffi/libfuse/fuse_buf_vec.rb,
lib/ffi/libfuse/fuse_context.rb,
lib/ffi/libfuse/fuse_version.rb,
lib/ffi/libfuse/adapter/debug.rb,
lib/ffi/libfuse/fuse_callbacks.rb,
lib/ffi/libfuse/fuse_conn_info.rb,
lib/ffi/libfuse/fuse_file_info.rb,
lib/ffi/libfuse/adapter/context.rb,
lib/ffi/libfuse/fuse_operations.rb,
lib/ffi/libfuse/adapter/pathname.rb,
lib/ffi/libfuse/filesystem/utils.rb,
lib/ffi/libfuse/fuse_loop_config.rb,
lib/ffi/libfuse/fuse_poll_handle.rb,
lib/ffi/libfuse/adapter/interrupt.rb,
lib/ffi/libfuse/fuse_cmdline_opts.rb,
lib/ffi/libfuse/adapter/fuse2_compat.rb,
lib/ffi/libfuse/adapter/fuse3_support.rb,
lib/ffi/libfuse/filesystem/accounting.rb,
lib/ffi/libfuse/filesystem/mapped_dir.rb,
lib/ffi/libfuse/filesystem/virtual_fs.rb,
lib/ffi/libfuse/filesystem/virtual_dir.rb,
lib/ffi/libfuse/filesystem/mapped_files.rb,
lib/ffi/libfuse/filesystem/virtual_file.rb,
lib/ffi/libfuse/filesystem/virtual_link.rb,
lib/ffi/libfuse/filesystem/virtual_node.rb,
lib/ffi/libfuse/filesystem/pass_through_dir.rb,
lib/ffi/libfuse/filesystem/pass_through_file.rb

Overview

Ruby FFI Binding for libfuse

Defined Under Namespace

Modules: Adapter, Callbacks, Filesystem, FuseCallbacks, IO, Main, TestHelper Classes: Ackbar, Error, FuseArgs, FuseBuf, FuseBufVec, FuseCommon, FuseConfig, FuseConnInfo, FuseContext, FuseFileInfo, FuseLoopConfig, FuseOperations, FusePollHandle, JobPool, ThreadPool

Constant Summary collapse

DEFAULT_ARGS =
Note:

These may change between major versions

Opinionated default args for main.

Filesystems that want full control (eg to take advantage of multi-threaded operations) should call Main.fuse_main instead

%w[-s -odefault_permissions].freeze
VERSION =
'0.4.1'
LIBFUSE =

The fuse library to load from 'LIBFUSE' environment variable if set, otherwise prefer Fuse3 over Fuse2

ENV.fetch('LIBFUSE', libs)
FUSE_VERSION =

prior to 3.10 this is Major * 10 + Minor, after 3.10 and later is Major * 100 + Minor

Returns:

  • (Integer)

    the version of libfuse

fuse_version
FUSE_MAJOR_VERSION =

Returns the FUSE major version.

Returns:

  • (Integer)

    the FUSE major version

FUSE_VERSION / fv_split
FUSE_MINOR_VERSION =

Returns the FUSE minor version.

Returns:

  • (Integer)

    the FUSE minor version

FUSE_VERSION % fv_split

Class Method Summary collapse

Methods included from GNUExtensions

dlopen, dlvsym

Class Method Details

.fuse_interrupted?Boolean

Returns if the fuse request is marked as interrupted.

Returns:

  • (Boolean)

    if the fuse request is marked as interrupted



107
108
109
# File 'lib/ffi/libfuse/fuse_context.rb', line 107

def fuse_interrupted?
  fuse_interrupted != 0
end

.fuse_main(*argv, operations:, args: argv.any? ? argv : Main.default_args(*DEFAULT_ARGS), private_data: nil) ⇒ Object Also known as: main

Filesystem entry point



27
28
29
# File 'lib/ffi/libfuse.rb', line 27

def fuse_main(*argv, operations:, args: argv.any? ? argv : Main.default_args(*DEFAULT_ARGS), private_data: nil)
  Main.fuse_main(args: args, operations: operations, private_data: private_data) || -1
end

.raise_interruptvoid

This method returns an undefined value.

Raises:

  • (Errno::EINTR)

    if fuse request is marked as interrupted



113
114
115
# File 'lib/ffi/libfuse/fuse_context.rb', line 113

def raise_interrupt
  raise Errno::EINTR if fuse_interrupted?
end