|
Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!
KERNEL_MOUNT(9) FreeBSD Kernel Developer's Manual KERNEL_MOUNT(9)
NAME
free_mntarg, kernel_mount, kernel_vmount, mount_arg, mount_argb,
mount_argf, mount_argsu -- functions provided as part of the kernel mount
interface
SYNOPSIS
void
free_mntarg(struct mntarg *ma);
int
kernel_mount(struct mntarg *ma, int flags);
int
kernel_vmount(int flags, ...);
struct mntarg *
mount_arg(struct mntarg *ma, const char *name, const void *val, int len);
struct mntarg *
mount_argb(struct mntarg *ma, int flag, const char *name);
struct mntarg *
mount_argf(struct mntarg *ma, const char *name, const char *fmt, ...);
struct mntarg *
mount_argsu(struct mntarg *ma, const char *name, const void *val,
int len);
DESCRIPTION
The kernel_mount() family of functions are provided as an API for build-
ing a list of mount arguments which will be used to mount file systems
from inside the kernel. By accumulating a list of arguments, the API
takes shape and provides the information necessary for the kernel to con-
trol the mount(8) utility. When an error occurs, the process will stop.
This will not cause a panic(9).
The header of the structure is stored in src/sys/kern/vfs_mount.c which
permits automatic structure creation to ease the mount process. Memory
allocation must always be freed when the entire process is complete, it
is an error otherwise.
The free_mntarg() function is used to free or clear the mntarg structure.
The kernel_mount() function pulls information from the structure to per-
form the mount request on a given file system. Additionally, the
kernel_mount() function always calls the free_mntarg() function. If ma
contains any error code generated during the construction, that code will
be called and the file system mount will not be attempted.
The kernel_vmount() is a function similar to printf(9) which is used to
mount a file system.
The mount_arg() function takes a plain argument and crafts parts of the
structure with regards to various mount options. If the length is a
value less than 0, strlen(3) is used. This argument will be referenced
until either free_mntarg() or kernel_mount() is called.
The mount_argb() function is used to add boolean arguments to the struc-
ture. The flag is the boolean value and name must start with "no", oth-
erwise a panic will occur.
The mount_argf() function adds printf(9) style arguments to the current
structure.
The mount_argsu() function will add arguments to the structure from a
userland string.
EXAMPLES
An example of the *_cmount() function:
static int
msdosfs_cmount(struct mntarg *ma, void *data, int flags, struct thread *td)
{
struct msdosfs_args args;
int error;
if (data == NULL)
return (EINVAL);
error = copyin(data, &args, sizeof args);
if (error)
return (error);
ma = mount_argsu(ma, "from", args.fspec, MAXPATHLEN);
ma = mount_arg(ma, "export", &args.export, sizeof args.export);
ma = mount_argf(ma, "uid", "%d", args.uid);
ma = mount_argf(ma, "gid", "%d", args.gid);
ma = mount_argf(ma, "mask", "%d", args.mask);
ma = mount_argf(ma, "dirmask", "%d", args.dirmask);
ma = mount_argb(ma, args.flags & MSDOSFSMNT_SHORTNAME, "noshortname");
ma = mount_argb(ma, args.flags & MSDOSFSMNT_LONGNAME, "nolongname");
ma = mount_argb(ma, !(args.flags & MSDOSFSMNT_NOWIN95), "nowin95");
ma = mount_argb(ma, args.flags & MSDOSFSMNT_KICONV, "nokiconv");
ma = mount_argsu(ma, "cs_win", args.cs_win, MAXCSLEN);
ma = mount_argsu(ma, "cs_dos", args.cs_dos, MAXCSLEN);
ma = mount_argsu(ma, "cs_local", args.cs_local, MAXCSLEN);
error = kernel_mount(ma, flags);
return (error);
}
When working with kernel_vmount(), varargs must come in pairs, e.g.,
{name, value}.
error = kernel_vmount(
MNT_RDONLY,
"fstype", vfsname,
"fspath", "/",
"from", path,
NULL);
SEE ALSO
VFS(9), VFS_MOUNT(9), vfs_mount(9)
HISTORY
The kernel_mount() family of functions and this manual page first
appeared in FreeBSD 6.0.
AUTHORS
The kernel_mount() family of functions and API was developed by
Poul-Henning Kamp <phk@FreeBSD.org>. This manual page was written by Tom
Rhodes <trhodes@FreeBSD.org>.
FreeBSD 6.2 December 13, 2004 FreeBSD 6.2
Man(1) output converted with
man2html and wrapped by fishsponge
This page was generated on Wed Sep 19 20:39:10 BST 2007
|
Your favourite pages:
No pages logged yet. Trying to save cookie... Top 10 most popular pages:
sqlite3 man page (5334 hits) (openSUSE 10.2)
svn man page (5208 hits) (FreeBSD 6.2)
adv_cap_autoneg man page (4870 hits) (Solaris 10 11_06)
CPAN man page (4607 hits) (Suse Linux 10.1)
ssh man page (4342 hits) (Suse Linux 10.1)
ssh-socks5-proxy-connect man page (2875 hits) (Solaris 10 11_06)
netcat man page (2717 hits) (Suse Linux 10.1)
pprosetup man page (2487 hits) (Solaris 10 11_06)
startproc man page (2471 hits) (Suse Linux 10.1)
signal man page (2406 hits) (Suse Linux 10.1)
|