diff options
author | stevel@tonic-gate <none@none> | 2005-06-14 00:00:00 -0700 |
---|---|---|
committer | stevel@tonic-gate <none@none> | 2005-06-14 00:00:00 -0700 |
commit | 7c478bd95313f5f23a4c958a745db2134aa03244 (patch) | |
tree | c871e58545497667cbb4b0a4f2daf204743e1fe7 /usr/src/lib/libadm/inc/devtab.h | |
download | illumos-joyent-7c478bd95313f5f23a4c958a745db2134aa03244.tar.gz |
OpenSolaris Launch
Diffstat (limited to 'usr/src/lib/libadm/inc/devtab.h')
-rw-r--r-- | usr/src/lib/libadm/inc/devtab.h | 243 |
1 files changed, 243 insertions, 0 deletions
diff --git a/usr/src/lib/libadm/inc/devtab.h b/usr/src/lib/libadm/inc/devtab.h new file mode 100644 index 0000000000..3373cad5e5 --- /dev/null +++ b/usr/src/lib/libadm/inc/devtab.h @@ -0,0 +1,243 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 1997 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + + +#ifndef _DEVTAB_H +#define _DEVTAB_H + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include <stdio.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * devtab.h + * + * This header file is local to the liboam component + * and should not contain any data that may need to + * be reference anywhere. The definitions here are used + * to reference the device tables and the device-group + * tables. + */ + +/* + * Constant definitions + * NULL Manifest constant NULL (null-address) + * TRUE Boolean TRUE value + * FALSE Boolean FALSE value + * DTAB_BUFSIZ Initial buffersize for reading device table records + * DTAB_BUFINC Amount to increase device table record buffer + * DGRP_BUFSIZ Initial buffersize for reading devgrp table records + * DGRP_BUFINC Amount to increase device-group table record buffer + * XTND_MAXCNT Maximum extend count (may have insane tables) + * DTAB_ESCS Characters that are escaped in fields in the devtab + */ + +#ifndef NULL +#define NULL (0) +#endif + +#ifndef TRUE +#define TRUE (1) +#endif + +#ifndef FALSE +#define FALSE (0) +#endif + +#define DTAB_BUFSIZ 512 +#define DTAB_BUFINC 512 +#define DGRP_BUFSIZ 512 +#define DGRP_BUFINC 512 +#define XTND_MAXCNT 16 + +#define DTAB_ESCS ":\\\"\n" + +/* + * oam_devtab File descriptor of the open device table + */ + +extern FILE *oam_devtab; +extern FILE *oam_dgroup; + +/* + * Structure definitions for device table records: + * devtabent Describes an entry in the device table + * dgrpent Describes an entry in the device-group table + * attrval Describes an attribute/value pair + */ + +/* + * struct devtabent + * + * Describes an entry in the device table. + * + * entryno This record's entry number in the device table + * comment Comment flag, TRUE if record is a comment + * alias The device's alias + * cdevice A pathname to the inode describing the device as + * a character-special device + * bdevice A pathname to the inode describing the device as + * a block-special device + * pathname A pathname to the device (not char or blk special) + * attrstr The character-string containing the attributes + * attrlist The address of the first attribute description + */ + +struct devtabent { + int entryno; /* Entry number of this record */ + int comment; /* Comment flag */ + char *alias; /* Alias of the device */ + char *cdevice; /* Character device pathname */ + char *bdevice; /* Block device pathname */ + char *pathname; /* Vanilla pathname */ + char *attrstr; /* String containing attributes */ + struct attrval *attrlist; /* Addr of 1st attribute description */ +}; + +/* + * struct attrval + * + * Describes an attribute-value pair + * + * char *attr Pointer to the name of the attribute + * char *val Pointer to the name of the value of the attr + * struct attrval *next Pointer to the next item in the list + */ + +struct attrval { + char *attr; /* Attribute name */ + char *val; /* Value of the attribute */ + struct attrval *next; /* Next attrval in list */ +}; + +/* + * Structure definitions for device-group records: + * struct dgrptabent Describes a record in the device-group table + * struct member Describes a member of a device group + */ + +/* + * struct dgrptabent + * entryno The entry number of this record + * comment Comment flag, TRUE if record is a comment + * name The name of the device group + * memberspace The buffer containing the members of the + * device group + * membership Pointer to the head of the list of + * members in the group. + */ + +struct dgrptabent { + int entryno; /* Entry number of this record */ + int comment; /* TRUE if a comment record */ + char *name; /* Device group name */ + char *dataspace; /* Buffer containing membership */ + struct member *membership; /* Ptr to top of membership list */ +}; + + +/* + * struct member + * name Member name (a device alias or pathname) + * next Ptr to next item in the list + */ + +struct member { + char *name; /* Member name */ + struct member *next; /* Next member in the list */ +}; + +/* + * Global function and data definitions: + * _setdevtab() Rewinds the open device table + * _enddevtab() Closes the open device table + * _getdevtabent() Gets the next device table entry + * _freedevtabent() Frees space allocated to a device-table entry + * _getdevrec() Gets a specific device table entry + * _opendevtab() Open the device table + * _devtabpath() Get the pathname of the device table file + * + * _setdgrptab() Rewind the open device-group table + * _enddgrptab() Close the open device table + * _getdgrptabent() Get the next device-group table entry + * _freedgrptabent() Frees space alloced to a dev-grp table entry + * _getdgrprec() Gets a specific device-group table entry + * _opendgrptab() Open the device group table + * _dgrptabpath() Get the pathname of the device group table file + * + * _openlkfile() Open device lock file + * rsvtabpath() Get device lock file pathname + * _closelkfile() Close device lock file + * + * _validalias() Determine if a character-string is a valid alias + * unreserv() Remove a device reservation + */ + + void _setdevtab(void); + void _enddevtab(void); + struct devtabent *_getdevtabent(void); + void _freedevtabent(struct devtabent *); + struct devtabent *_getdevrec(char *); + int _opendevtab(char *); + char *_devtabpath(void); + + void _setdgrptab(void); + void _enddgrptab(void); + struct dgrptabent *_getdgrptabent(void); + void _freedgrptabent(struct dgrptabent *); + struct dgrptabent *_getdgrprec(char *); + int _opendgrptab(char *); + char *_dgrptabpath(void); + + int _openlkfile(void); + char *_rsvtabpath(void); + int _closelkfile(void); + + int _validalias(char *); + int unreserv(int, char *); + +extern int _adddevtabrec(char *, char **); +extern int _moddevtabrec(char *, char **); +extern int _putdevtabrec(FILE *stream, struct devtabent *rec); +extern int _rmdevtabattrs(char *, char **, char ***); +extern int _rmdevtabrec(char *); + +extern int _adddgrptabrec(char *dgrp, char **members); +extern int _putdgrptabrec(FILE *stream, struct dgrptabent *rec); +extern int _rmdgrpmems(char *dgrp, char **mems, char ***notfounds); +extern int _rmdgrptabrec(char *dgrp); + +#ifdef __cplusplus +} +#endif + +#endif /* _DEVTAB_H */ |