Class methods
_access(path_ptr, mask) : Int32
Source_bmap(path_ptr, blocksize, idx) : Int32
Source_chmod(path_ptr, mode, fi) : Int32
Source_chown(path_ptr, uid, gid, fi) : Int32
Source_copy_file_range(in_ptr, fi_in, off_in, out_ptr, fi_out, off_out, size, flags) : Int64
Source_create(path_ptr, mode, fi) : Int32
Source_fallocate(path_ptr, mode, offset, length, fi) : Int32
Source_flock(path_ptr, fi, op) : Int32
Source_flush(path_ptr, fi) : Int32
Source_fsync(path_ptr, datasync, fi) : Int32
Source_fsyncdir(path_ptr, datasync, fi) : Int32
Source_getattr(path_ptr, stat_ptr, fi) : Int32
Source_getxattr(path_ptr, name_ptr, value_ptr, size) : Int32
getxattr/listxattr use a two-call protocol: when size is 0 the caller is
asking for the required buffer size; otherwise fill the buffer (or -ERANGE
if it's too small). The binding handles that here so the fs just returns
the value/names.
Source_ioctl(path_ptr, cmd, arg, fi, flags, data) : Int32
Source_link(target_ptr, link_ptr) : Int32
Source_listxattr(path_ptr, list_ptr, size) : Int32
Source_lock(path_ptr, fi, cmd, lock_ptr) : Int32
Source_lseek(path_ptr, offset, whence, fi) : Int64
Source_mkdir(path_ptr, mode) : Int32
Source_mknod(path_ptr, mode, rdev) : Int32
Source_open(path_ptr, fi) : Int32
Source_opendir(path_ptr, fi) : Int32
Source_poll(path_ptr, fi, ph, reventsp) : Int32
Source_read(path_ptr, buf, size, offset, fi) : Int32
Source_readdir(path_ptr, buf, filler, offset, fi, flags) : Int32
Source_readlink(path_ptr, buf, size) : Int32
Source_release(path_ptr, fi) : Int32
Source_releasedir(path_ptr, fi) : Int32
Source_removexattr(path_ptr, name_ptr) : Int32
Source_rename(from_ptr, to_ptr, flags) : Int32
Source_rmdir(path_ptr) : Int32
Source_setxattr(path_ptr, name_ptr, value_ptr, size, flags) : Int32
Source_statfs(path_ptr, st_ptr) : Int32
Source_symlink(target_ptr, link_ptr) : Int32
Source_truncate(path_ptr, size, fi) : Int32
Source_unlink(path_ptr) : Int32
Source_utimens(path_ptr, tv_ptr, fi) : Int32
Source_write(path_ptr, buf, size, offset, fi) : Int32
Sourceguard
Run a bridge operation, turning any uncaught exception into -EIO. Without
this, an exception raised in a user's filesystem method would unwind into
C and abort the whole process (or wedge the mount). yield is inlined, so
the enclosing proc stays a plain C function pointer.
Sourceguard64
Like guard, for operations that return an off_t/ssize_t (Int64).
Sourceregister_callbacks
Wire every C operation to the corresponding bridge method, each wrapped in
guard. The procs are closure-free (they reference only module methods),
so they convert to plain C function pointers.
Sourcereport(ex : Exception) : Nil
Log an exception that escaped a user's filesystem method. Writes straight
to fd 2 rather than via STDERR — Crystal's buffered IO can reach into the
fiber scheduler, which isn't safe on a libfuse worker thread.
Sourcetimespec_to_time(ts : LibC::Timespec) : Time | Nil
Decode a struct timespec, honoring FUSE's UTIME_NOW / UTIME_OMIT
sentinels (encoded in tv_nsec). Returns nil for "leave unchanged".
Source