Chapter 25. initialization and mounting, Initialization and mounting – Comtrol eCos User Manual

Page 427

Advertising
background image

Chapter 25. Initialization and Mounting

As mentioned previously, mount table entries can be sourced from two places. Static entries may be defined by
using the

MTAB_ENTRY()

macro. Such entries will be automatically mounted on system startup. For each entry in

the mount table that has a non-null

name

field the filesystem table is searched for a match with the

fsname

field.

If a match is found the filesystem’s

mount

entry is called and if successful the mount table entry marked valid and

the

fs

field initialized. The

mount()

function is responsible for initializing the

root

field.

The size of the mount table is defined by the configuration value

CYGNUM_FILEIO_MTAB_MAX

. Any entries that

have not been statically defined are available for use by dynamic mounts.

A filesystem may be mounted dynamically by calling

mount()

. This function has the following prototype:

int mount( const char *devname,

const char *dir,

const char *fsname);

The

devname

argument identifies a device that will be used by this filesystem and will be assigned to the

dev-

name

field of the mount table entry.

The

dir

argument is the mount point name, it will be assigned to the

name

field of the mount table entry.

The

fsname

argument is the name of the implementing filesystem, it will be assigned to the

fsname

entry of the

mount table entry.

The process of mounting a filesystem dynamically is as follows. First a search is made of the mount table for an
entry with a NULL

name

field to be used for the new mount point. The filesystem table is then searched for an entry

whose name matches

fsname

. If this is successful then the mount table entry is initialized and the filesystem’s

mount()

operation called. If this is successful, the mount table entry is marked valid and the

fs

field initialized.

Unmounting a filesystem is done by the

umount()

function. This can unmount filesystems whether they were

mounted statically or dynamically.

The

umount()

function has the following prototype:

int umount( const char *name );

The mount table is searched for a match between the

name

argument and the entry

name

field. When a match

is found the filesystem’s

umount()

operation is called and if successful, the mount table entry is invalidated by

setting its

valid

field false and the

name

field to NULL.

323

Advertising