18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * CDDL HEADER START
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * The contents of this file are subject to the terms of the
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Common Development and Distribution License (the "License").
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * You may not use this file except in compliance with the License.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * or http://www.opensolaris.org/os/licensing.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * See the License for the specific language governing permissions
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * and limitations under the License.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * When distributing Covered Code, include this CDDL HEADER in each
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * If applicable, add the following below this CDDL HEADER, with the
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * fields enclosed by brackets "[]" replaced with your own identifying
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * information: Portions Copyright [yyyy] [name of copyright owner]
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * CDDL HEADER END
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
b941d3fc4e70b4411341c7aeb53517bbff5f2df4artem * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Use is subject to license terms.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#pragma ident "%Z%%M% %I% %E% SMI"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <stdio.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <string.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <dirent.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <fcntl.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <string.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <errno.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <limits.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <unistd.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <sys/mkdev.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <volmgt.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <ctype.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <sys/types.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <sys/stat.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include <sys/param.h>
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#include "volmgt_private.h"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * public
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volmgt_running: check to see if volume management is running.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * none.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * TRUE if volume management is running, FALSE if not.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * none.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemint
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvolmgt_running(void)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem /* vold is dead */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (FALSE);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * public
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volmgt_inuse: check to see if volume management is currently
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * managing a particular device.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * path - the name of the device in /dev. For example,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * "/dev/rdiskette".
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * TRUE if volume management is managing the device, FALSE if not.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * none.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* ARGSUSED */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemint
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvolmgt_inuse(char *path)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (FALSE);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * public
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volmgt_check: have volume management look at its devices to check
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * for media having arrived. Since volume management can't
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * automatically check all types of devices, this function is provided
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * to allow applications to cause the check to happen automatically.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * path - the name of the device in /dev. For example,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * /dev/rdiskette. If path is NULL, all "checkable" devices are
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * checked.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * TRUE if media was found in the device, FALSE if not.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volume management must be running.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* ARGSUSED */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemint
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvolmgt_check(char *path)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (FALSE);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * public
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volmgt_ownspath: check to see if the given path is contained in
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * the volume management name space.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * path - string containing the path.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * TRUE if the path is owned by volume management, FALSE if not.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Will return FALSE if volume management isn't running.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * none.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* ARGSUSED */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemint
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvolmgt_ownspath(char *path)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (FALSE);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * public
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volmgt_root: return the root of where the volume management
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * name space is mounted.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * none.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Returns a pointer to a static string containing the path to the
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volume management root (e.g. "/vol").
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Will return NULL if volume management isn't running.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * none.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemconst char *
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvolmgt_root(void)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem static const char *vold_root = "/dev";
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (vold_root);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * public
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volmgt_symname: Returns the volume management symbolic name
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * for a given device. If an application wants to determine
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * what the symbolic name (e.g. "floppy0") for the /dev/rdiskette
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * device would be, this is the function to use.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * path - a string containing the /dev device name. For example,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * "/dev/diskette" or "/dev/rdiskette".
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Note: must be a block- or char-spcl device, and have a non-zero
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * st_rdev (real device) stat() value.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * pointer to a string containing the symbolic name.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * NULL indicates that volume management isn't managing that device.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * The string must be free(3)'d.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * none.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* ARGSUSED */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar *
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvolmgt_symname(char *path)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (NULL);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * public
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volmgt_symdev: Returns the device given the volume management
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * symbolic name. If an application wants to determine
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * what the device associated with a particular symbolic name
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * might be, this is the function to use.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * path - a string containing the symbolic device name. For example,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * "cdrom0" or "floppy0".
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * pointer to a string containing the /dev name.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * NULL indicates that volume management isn't managing that device.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * The string must be free(3)'d.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * none.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* ARGSUSED */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar *
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvolmgt_symdev(char *symname)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (NULL);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * public
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volmgt_feat_enabled: check to see if a volume management feature
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * is available
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * feat_str - a string containing the feature to be checked for
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return non-zero if the specified feature is available in
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volume management, else return zero
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * none.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * the following is a lit of the "feature" available in volmgt
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * this list is meant to be updated when new features (that users may
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * want to use) are added to volmgt
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * note: feature strings added should be all lower case, and spaces are
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * discouraged
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * (see psarc/1995/138 for more info)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemstatic char *volmgt_feat_list[] = {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#ifdef DIRECT_DEV_ACCESS_WORKING
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "direct-dev-access", /* access through /dev co-exists */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem#endif
18c2aff776a775d34a4c9893a4c72e0434d68e36artem "floppy-summit-interfaces", /* volmgt_{acquire,release} */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem NULL
18c2aff776a775d34a4c9893a4c72e0434d68e36artem};
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemint
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvolmgt_feature_enabled(char *feat_str)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (0);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * uncommitted
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volmgt_acquire: try to acquire the volmgt advisory device reservation
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * for a specific device.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * dev - a device name to attempt reserving. This string can be:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - a full path name to a device
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - a symbolic device name (e.g. floppy0)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * id - a reservation string that hopefully describes the application
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * making this reservation.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * pid - a pointer to a pid_t type. If this argument is not NULL
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * and the requested device is already reserved, the process
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * id of the reservation owner will be returned in this
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * location.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * ovr - an override indicator. If set to non-zero, the caller requests
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * that this reservation be made unconditionally.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * err - the address of a pointer to a string which is to receive the
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * id argument used when the current device was reserved. This
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * is only used when the current reservation attempt fails due
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * to an already existing reservation for this device.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * A non-zero indicator if successful.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * A zero indicator if unsuccessful. If errno is EBUSY, then the err
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * argument will be set to point to the string that the process currently
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * holding the reservation supplied when reserving the device. It is up
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * to the caller to release the storage occupied by the string via
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * free(3C) when no longer needed.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * none
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* ARGSUSED */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemint
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvolmgt_acquire(char *dev, char *id, int ovr, char **err, pid_t *pidp)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (0);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * uncommitted
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volmgt_release: try to release the volmgt advisory device reservation
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * for a specific device.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * dev - a device name to attempt reserving. This string can be:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - a full path name to a device
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - a symbolic device name (e.g. floppy0)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * A non-zero indicator if successful
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * A zero indicator if unsuccessful
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * none
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemint
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvolmgt_release(char *dev)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (0);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * returns the "value" of the attribute.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * If the attribute is boolean and is TRUE,
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * "true" is returned. If the boolean is
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * FALSE, NULL is returned. If the attribute
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * doesn't exist, NULL is returned. The pointer
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * returned by media_getattr has been malloc'd and
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * it is the callers responsibility to free it.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * public
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * media_getattr: returns the value for an attribute for a piece of
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * removable media.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * path - Path to the media in /vol. Can be the block or character
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * device.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * attr - name of the attribute.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * returns NULL or a pointer to a string that contains the value for
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * the requested attribute.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * NULL can mean:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - the media doesn't exist
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - there is no more space for malloc(3)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - the attribute doesn't exist for the named media
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - the attribute is a boolean and is FALSE
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * the pointer to the string must be free'd with free(3).
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volume management (vold) must be running.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* ARGSUSED */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar *
18c2aff776a775d34a4c9893a4c72e0434d68e36artemmedia_getattr(char *vol_path, char *attr)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (NULL);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * sets the attribute "attr" to value "value".
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * If value == "" the flag is
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * considered to be a TRUE boolean.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * If value == 0, it is considered to be a FALSE boolean.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * returns TRUE on success, FALSE on failure.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Can fail for reasons of permission, or if you
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * write a read-only attribute.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * public
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * media_setattr: set an attribute for a piece of media to a
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * particular value.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * path - Path to the media in /vol. Can be the block or character
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * device.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * attr - name of the attribute.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * value - value of the attribute. If value == "", the flag is
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * considered to be a boolean that is TRUE. If value == 0, it
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * is considered to be a FALSE boolean.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * TRUE on success, FALSE for failure.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Can fail because:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - don't have permission to set the attribute because caller
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * is not the owner of the media and attribute is a "system"
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * attribute.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - don't have permission to set the attribute because the
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * attribute is a "system" attribute and is read-only.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volume management must be running.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* ARGSUSED */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemint
18c2aff776a775d34a4c9893a4c72e0434d68e36artemmedia_setattr(char *vol_path, char *attr, char *value)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (FALSE);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Returns the "id" of a volume. If the returned value
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * & VOLID_TMP, the volume is temporary and this value
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * cannot be relied upon across reboots.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * public
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * media_getid: return the "id" of a piece of media.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * path - Path to the media in /vol. Can be the block or character
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * device.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * returns a u_longlong_t that is the "id" of the volume.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * volume management must be running.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemu_longlong_t
18c2aff776a775d34a4c9893a4c72e0434d68e36artemmedia_getid(char *vol_path)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (0);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arc approved interface (pending)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - can not be modified without approval from an arc
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * committment level:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * public
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * description:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * media_findname: try to come up with the character device when
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * provided with a starting point. This interface provides the
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * application programmer to provide "user friendly" names and
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * easily determine the "/vol" name.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * arguments:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * start - a string describing a device. This string can be:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - a full path name to a device (insures it's a
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * character device by using getfullrawname()).
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - a full path name to a volume management media name
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * with partitions (will return the lowest numbered
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * raw partition.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - the name of a piece of media (e.g. "fred").
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - a symbolic device name (e.g. floppy0, cdrom0, etc)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * - a name like "floppy" or "cdrom". Will pick the lowest
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * numbered device with media in it.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * return value(s):
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * A pointer to a string that contains the character device
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * most appropriate to the "start" argument.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * NULL indicates that we were unable to find media based on "start".
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * The string must be free(3)'d.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * preconditions:
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * none.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* ARGSUSED */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar *
18c2aff776a775d34a4c9893a4c72e0434d68e36artemmedia_findname(char *start)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
b941d3fc4e70b4411341c7aeb53517bbff5f2df4artem /*
b941d3fc4e70b4411341c7aeb53517bbff5f2df4artem * Eventually should implement using HAL interfaces.
b941d3fc4e70b4411341c7aeb53517bbff5f2df4artem * In the short term however, return NULL for aliases,
b941d3fc4e70b4411341c7aeb53517bbff5f2df4artem * and self for absolute pathnames.
b941d3fc4e70b4411341c7aeb53517bbff5f2df4artem */
b941d3fc4e70b4411341c7aeb53517bbff5f2df4artem if (start[0] == '/') {
b941d3fc4e70b4411341c7aeb53517bbff5f2df4artem return (strdup(start));
b941d3fc4e70b4411341c7aeb53517bbff5f2df4artem } else {
b941d3fc4e70b4411341c7aeb53517bbff5f2df4artem return (NULL);
b941d3fc4e70b4411341c7aeb53517bbff5f2df4artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artemstruct alias {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem char *alias;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem char *name;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem};
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * "old" aliases -- used to be used when vold wasn't running
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemstatic struct alias device_aliases[] = {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "fd", "/dev/rdiskette" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "fd0", "/dev/rdiskette" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "fd1", "/dev/rdiskette1" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "diskette", "/dev/rdiskette" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "diskette0", "/dev/rdiskette0" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "diskette1", "/dev/rdiskette1" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "rdiskette", "/dev/rdiskette" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "rdiskette0", "/dev/rdiskette0" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "rdiskette1", "/dev/rdiskette1" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "floppy", "/dev/rdiskette" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "floppy0", "/dev/rdiskette0" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "floppy1", "/dev/rdiskette1" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "cd", "cdrom0" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "cd0", "cdrom0" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { "cd1", "cdrom1" },
18c2aff776a775d34a4c9893a4c72e0434d68e36artem { NULL, NULL }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem};
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * This is an ON Consolidation Private interface.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/* ARGSUSED */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemchar *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem_media_oldaliases(char *start)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem struct alias *s;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem char *p;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem char *res = NULL;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem for (s = device_aliases; s->alias != NULL; s++) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem if (strcmp(start, s->alias) == 0) {
18c2aff776a775d34a4c9893a4c72e0434d68e36artem res = strdup(s->name);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem break;
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem }
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem return (res);
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem
18c2aff776a775d34a4c9893a4c72e0434d68e36artem/*
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * This is an ON Consolidation Private interface.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem *
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * Print out the aliases available to the program user. Changes
18c2aff776a775d34a4c9893a4c72e0434d68e36artem * depending in whether volume management is running.
18c2aff776a775d34a4c9893a4c72e0434d68e36artem */
18c2aff776a775d34a4c9893a4c72e0434d68e36artemvoid
18c2aff776a775d34a4c9893a4c72e0434d68e36artem_media_printaliases(void)
18c2aff776a775d34a4c9893a4c72e0434d68e36artem{
18c2aff776a775d34a4c9893a4c72e0434d68e36artem}