moss.fs
Class MDevFS

java.lang.Object
  extended by moss.fs.MDevFS
All Implemented Interfaces:
MFSOps

public class MDevFS
extends java.lang.Object
implements MFSOps

this class implements the "device" file-system. This provides a way of accessing devices through the file-system.


Constructor Summary
MDevFS()
           
 
Method Summary
 int access(java.lang.String path, int amode)
          tests for access to a file
static void finalinit()
          called to perform final kernel initialisation (in the context of the init-task)
 int link(java.lang.String oldpath, java.lang.String newpath)
          creates a `hard-link'
 int mkdir(java.lang.String path, int flags)
          creates a directory in the file-system
 int mknod(java.lang.String path, int mode, int majmin)
          creates a special file on the file-system
 int mount(java.lang.String mount_path, java.lang.String[] options)
          called when the device file-system is mounted.
 int open(java.lang.String path, MFile handle, int flags, int mode)
          called to open a file.
 int opendir(java.lang.String path, MFile handle)
          called to open a directory (read-only!).
 int readlink(java.lang.String path, byte[] buf, int buflen)
          reads the contents of a symbolic-link on the file-system
static int register_devdir(java.lang.String name)
          creates a directory in the device file-system
static MInode register_device(java.lang.String name, int major, int minor, int mode)
          registers a device with the device file-system
 int rmdir(java.lang.String path)
          removes a directory from the file-system (must be empty)
 int stat(java.lang.String path, MInode statbuf)
          retrieves information about a name on the file-system
 int symlink(java.lang.String oldpath, java.lang.String newpath)
          creates a symbolic link
 int umount(java.lang.String[] options)
          this is called before the device file-system is un-mounted.
 int unlink(java.lang.String path)
          removes a name from the file-system
static int unregister_devdir(java.lang.String name)
          removes a directory in the device file-system
static int unregister_device(java.lang.String name)
          unregisters something from the device file-system
 int utime(java.lang.String path, long[] times)
          sets access and modification times for a file (inode)
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MDevFS

public MDevFS()
Method Detail

finalinit

public static void finalinit()
called to perform final kernel initialisation (in the context of the init-task)


register_device

public static MInode register_device(java.lang.String name,
                                     int major,
                                     int minor,
                                     int mode)
registers a device with the device file-system

Parameters:
name - entry-name. may be something like "foo/bar", but the "foo" must exist first
major - major device number
minor - minor device number
mode - mode of the device
Returns:
an MInode for the entry, or null on error (if it already exists)

unregister_device

public static int unregister_device(java.lang.String name)
unregisters something from the device file-system

Parameters:
name - entry-name. may be something like "foo/bar"
Returns:
0 on success, otherwise < 0 indicating error

register_devdir

public static int register_devdir(java.lang.String name)
creates a directory in the device file-system

Parameters:
name - name of the directory to create
Returns:
0 on success, otherwise < 0 indicating error

unregister_devdir

public static int unregister_devdir(java.lang.String name)
removes a directory in the device file-system

Parameters:
name - name of the directory to remove
Returns:
0 on success, otherwise < 0 indicating error

mount

public int mount(java.lang.String mount_path,
                 java.lang.String[] options)
called when the device file-system is mounted. Performs specific initialisation.

Specified by:
mount in interface MFSOps
Parameters:
mount_path - full path from the root (/) to where this is being mounted. A single "/" indicates that this is being mounted as the root file-system.
options - file-system specific options
Returns:
0 on success, or < 0 indicating error

umount

public int umount(java.lang.String[] options)
this is called before the device file-system is un-mounted.

Specified by:
umount in interface MFSOps
Parameters:
options - file-system specific un-mounting options
Returns:
0 on success, or < 0 indicating error

open

public int open(java.lang.String path,
                MFile handle,
                int flags,
                int mode)
called to open a file.

Specified by:
open in interface MFSOps
Parameters:
path - relative path to the file (e.g. `etc/passwd' for the root file-system)
handle - file-handle to be associated with this file
flags - open flags
mode - file mode if creating
Returns:
0 on success, or < 0 indicating error

opendir

public int opendir(java.lang.String path,
                   MFile handle)
called to open a directory (read-only!).

Specified by:
opendir in interface MFSOps
Parameters:
path - relative path to the directory (e.g. `etc/init.d' for the root file-system)
handle - file-handle to be associated with this directory
Returns:
0 on success, or < 0 indicating error

mkdir

public int mkdir(java.lang.String path,
                 int flags)
creates a directory in the file-system

Specified by:
mkdir in interface MFSOps
Parameters:
path - relative path to the directory to be created
flags - flags (mode)
Returns:
0 on success, or < 0 indicating error

unlink

public int unlink(java.lang.String path)
removes a name from the file-system

Specified by:
unlink in interface MFSOps
Parameters:
path - relative path to the name to be removed
Returns:
0 on success, or < 0 indicating error

rmdir

public int rmdir(java.lang.String path)
removes a directory from the file-system (must be empty)

Specified by:
rmdir in interface MFSOps
Parameters:
path - relative path to the directory to be removed
Returns:
0 on success, or < 0 indicating error

link

public int link(java.lang.String oldpath,
                java.lang.String newpath)
creates a `hard-link'

Specified by:
link in interface MFSOps
Parameters:
oldpath - existing relative path (e.g. local/packages/nmh for "usr" file-system)
newpath - new relative path
Returns:
0 on success, or < 0 indicating error

symlink

public int symlink(java.lang.String oldpath,
                   java.lang.String newpath)
creates a symbolic link

Specified by:
symlink in interface MFSOps
Parameters:
oldpath - full path to existing name (e.g. /usr/local/packages/nmh-1.4 for "usr" file-system)
newpath - relative path to new link (e.g. local/packages/nmh for "usr" file-system)
Returns:
0 on success, or < 0 indicating error

mknod

public int mknod(java.lang.String path,
                 int mode,
                 int majmin)
creates a special file on the file-system

Specified by:
mknod in interface MFSOps
Parameters:
path - relative path to file to create
mode - file mode flags
majmin - major and minor numbers `((major << 16) | minor)' for block/char special files, otherwise ignored.
Returns:
0 on success, or < 0 indicating error

readlink

public int readlink(java.lang.String path,
                    byte[] buf,
                    int buflen)
reads the contents of a symbolic-link on the file-system

Specified by:
readlink in interface MFSOps
Parameters:
path - relative path to symbolic link on file-system
buf - buffer where the link data is stored
buflen - maximum number of bytes to write into `buf'
Returns:
number of bytes read on success, or < 0 indicating error

utime

public int utime(java.lang.String path,
                 long[] times)
sets access and modification times for a file (inode)

Specified by:
utime in interface MFSOps
Parameters:
path - relative path to name
times - array of two `long's that are the access and modification times respectively
Returns:
0 on success, or < 0 indicating error

stat

public int stat(java.lang.String path,
                MInode statbuf)
retrieves information about a name on the file-system

Specified by:
stat in interface MFSOps
Parameters:
path - relative path to name
statbuf - buffer in which information is placed
Returns:
0 on success, or < 0 indicating error

access

public int access(java.lang.String path,
                  int amode)
tests for access to a file

Specified by:
access in interface MFSOps
Parameters:
path - relative path to file/directory
amode - access mode
Returns:
0 on success, or < 0 indicating error