diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 14:02:27 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 14:02:27 -0400 |
| commit | 6d8bdc65446a704d0750217efd05532fc641ea7d (patch) | |
| tree | 8ae6d698b3c9801750a8b117b3842fb369872a3a /static/openbsd/man9/fb_setup.9 | |
| parent | 2f467bd7ff8f8db0dafa40426166491d7f57f368 (diff) | |
docs: OpenBSD Man Pages Added
Diffstat (limited to 'static/openbsd/man9/fb_setup.9')
| -rw-r--r-- | static/openbsd/man9/fb_setup.9 | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/static/openbsd/man9/fb_setup.9 b/static/openbsd/man9/fb_setup.9 new file mode 100644 index 00000000..87fac07e --- /dev/null +++ b/static/openbsd/man9/fb_setup.9 @@ -0,0 +1,238 @@ +.\" $OpenBSD: fb_setup.9,v 1.7 2017/11/30 11:29:03 helg Exp $ +.\" +.\" Copyright (c) 2013 Sylvestre Gallon <ccna.syl@gmail.com> +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +.\" +.Dd $Mdocdate: November 30 2017 $ +.Dt FB_SETUP 9 +.Os +.Sh NAME +.Nm fb_setup , +.Nm fb_queue , +.Nm fb_delete +.Nd kernel messaging mechanism for file system in userland (FUSE) +.Sh SYNOPSIS +.In sys/fusebuf.h +.Ft struct fusebuf * +.Fn fb_setup "size_t size" "ino_t inode" "int type" "struct proc *p" +.Ft int +.Fn fb_queue "dev_t dev" "struct fusebuf *fbuf" +.Ft void +.Fn fb_delete "struct fusebuf *fbuf" +.Bd -literal +#define FUSEBUFMAXSIZE (4096*1024) +#define FUSEBUFSIZE (sizeof(struct fusebuf)) + +struct fb_hdr { + SIMPLEQ_ENTRY(fusebuf) fh_next; + size_t fh_len; + int fh_err; + int fh_type; + ino_t fh_ino; + uint64_t fh_uuid; +}; + +struct fb_io { + uint64_t fi_fd; + ino_t fi_ino; + off_t fi_off; + size_t fi_len; + mode_t fi_mode; + uint32_t fi_flags; +}; + +struct fusebuf { + struct fb_hdr fb_hdr; + union { + struct statvfs FD_stat; + struct stat FD_attr; + struct fb_io FD_io; + + } FD; + uint8_t *fb_dat; +}; + +#define fb_next fb_hdr.fh_next +#define fb_len fb_hdr.fh_len +#define fb_err fb_hdr.fh_err +#define fb_type fb_hdr.fh_type +#define fb_ino fb_hdr.fh_ino +#define fb_uuid fb_hdr.fh_uuid + +#define fb_stat FD.FD_stat +#define fb_attr FD.FD_attr +#define fb_io_fd FD.FD_io.fi_fd +#define fb_io_ino FD.FD_io.fi_ino +#define fb_io_off FD.FD_io.fi_off +#define fb_io_len FD.FD_io.fi_len +#define fb_io_mode FD.FD_io.fi_mode +#define fb_io_flags FD.FD_io.fi_flags +.Ed +.Sh DESCRIPTION +These functions provide a way to manage the kernel messaging mechanism for +.Xr fuse 4 +file systems. +It is based on +.Xr mbuf 9 . +.Pp +Each FUSE operation fits in a fusebuf +except for read, write, and readdirs, +which are split into several fusebufs with a changing value in +.Fa fb_io_off +for each. +The size of a fusebuf is +.Fa FUSEBUFSIZE . +.Pp +A fusebuf structure is defined as an +.Fa fb_hdr +followed by a structure containing a union and a buffer +.Fa F_Dat . +The header contains the following elements: +.Bl -tag -width foobarmoocow +.It Fa fh_next +A +.Xr SIMPLEQ_ENTRY 3 +needed to store the different fusebufs stored with +.Fn fb_queue . +.It Fa fh_len +Indicates the amount of data in +.Fa F_dat . +.It Fa fh_resid +Used for partial +.Xr fuse 4 +reads. +If the read does not fill the fusebuf, the number of bytes of +.Fa F_dat +written in this field are stored. +.It Fa fh_err +Indicates the +.Xr errno 2 +failure of a fusebuf. +.It Fa fh_type +Indicates the type of fusebuf transaction (see below). +.It Fa fh_ino +Indicates the inode on which the +.Xr fuse 4 +operation is done. +.It Fa fh_uuid +UUID to track the answer. +This number is generated with +.Xr arc4random 9 . +.El +.Pp +The +.Fa fh_type +variable can take the following values: +.Pp +.Bl -tag -compact -offset indent -width XXXXXXXXXXXXXXXXXX +.It Dv FBT_LOOKUP +The fusebuf is a lookup operation. +.It Dv FBT_GETATTR +The fusebuf is a gettattr operation. +.It Dv FBT_SETATTR +The fusebuf is a setattr operation. +.It Dv FBT_READLINK +The fusebuf is a readlink operation. +.It Dv FBT_SYMLINK +The fusebuf is a symlink operation. +.It Dv FBT_MKNOD +The fusebuf is a mknod operation. +.It Dv FBT_MKDIR +The fusebuf is a mkdir operation. +.It Dv FBT_UNLINK +The fusebuf is an unlink operation. +.It Dv FBT_RMDIR +The fusebuf is an rmdir operation. +.It Dv FBT_RENAME +The fusebuf is a rename operation. +.It Dv FBT_LINK +The fusebuf is a link operation. +.It Dv FBT_OPEN +The fusebuf is an open operation. +.It Dv FBT_READ +The fusebuf is a read operation. +.It Dv FBT_WRITE +The fusebuf is a write operation. +.It Dv FBT_STATFS +The fusebuf is a statfs operation. +.It Dv FBT_RELEASE +The fusebuf is a file close operation. +.It Dv FBT_FSYNC +The fusebuf is a file sync operation. +.It Dv FBT_FLUSH +The fusebuf is a flush operation. +.It Dv FBT_INIT +The fusebuf initializes the FUSE connection. +.It Dv FBT_OPENDIR +The fusebuf is an opendir operation. +.It Dv FBT_READDIR +The fusebuf is a readdir operation. +.It Dv FBT_RELEASEDIR +The fusebuf is a close dir operation. +.It Dv FBT_FSYNCDIR +The fusebuf is a dir sync operation. +.It Dv FBT_ACCESS +The fusebuf is an access operation. +.It Dv FBT_DESTROY +The fusebuf closes the FUSE connection. +.El +.Pp +All the data needed by the FUSE clients is contained in the +.Fa F_dat +structure. +This structure contains a union +.Fa FD +of frequently used type +and a buffer +.Fa F_databuf +to send data to libfuse. +The union contains the following elements: +.Bl -tag -width foobarmoocow +.It Fa FD_stat +A struct +.Xr statvfs 3 +filled in by the FUSE client statfs for the FUSE VFS statfs code. +.It Fa FD_attr +Used by the getattr and setattr calls. +.It Fa FD_io +Contains all fields commonly used by FUSE client callbacks to +provide information to FUSE vnops. +It is used by access, readdir, release, releasedir, read, write, +mkdir, and setattr. +.El +.Pp +Setattr uses a struct fb_io and a struct stat. +Settattr uses +.Fa FD_stat +and encapsulates a struct fb_io in +.Fa F_databuf +with +.Fa fbtod . +.Pp +Fusebufs can be deleted with the +.Fn fb_delete +helper. +.Sh SEE ALSO +.Xr errno 2 , +.Xr fuse_main 3 , +.Xr queue 3 , +.Xr statvfs 3 , +.Xr fuse 4 , +.Xr arc4random 9 , +.Xr mbuf 9 +.Sh HISTORY +The +.Nm +API first appeared in +.Ox 5.4 . |
