Annotation of kernel/bsd/dev/ppc/drvUSBCMD/nameregistry.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
        !             7:  * Reserved.  This file contains Original Code and/or Modifications of
        !             8:  * Original Code as defined in and that are subject to the Apple Public
        !             9:  * Source License Version 1.1 (the "License").  You may not use this file
        !            10:  * except in compliance with the License.  Please obtain a copy of the
        !            11:  * License at http://www.apple.com/publicsource and read it before using
        !            12:  * this file.
        !            13:  * 
        !            14:  * The Original Code and all software distributed under the License are
        !            15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            19:  * License for the specific language governing rights and limitations
        !            20:  * under the License.
        !            21:  * 
        !            22:  * @APPLE_LICENSE_HEADER_END@
        !            23:  */
        !            24: 
        !            25: /*
        !            26:        File:           NameRegistry.h
        !            27:  
        !            28:        Contains:       NameRegistry Interfaces .
        !            29:  
        !            30:        Version:        Technology:     PowerSurge 1.0.2.
        !            31:                                Package:        Universal Interfaces 2.1.2 on ETO #20
        !            32:  
        !            33:        Copyright:      � 1984-1995 by Apple Computer, Inc.
        !            34:                                All rights reserved.
        !            35:  
        !            36:        Bugs?:          If you find a problem with this file, use the Apple Bug Reporter
        !            37:                                stack.  Include the file and version information (from above)
        !            38:                                in the problem description and send to:
        !            39:                                        Internet:       [email protected]
        !            40:                                        AppleLink:      APPLE.BUGS
        !            41:  
        !            42: */
        !            43: 
        !            44: #ifndef __NAMEREGISTRY__
        !            45: #define __NAMEREGISTRY__
        !            46: 
        !            47: 
        !            48: #ifndef __TYPES__
        !            49: //#include "types.h"
        !            50: #endif
        !            51: #include "conditionalmacros.h"                                                 
        !            52: 
        !            53: #ifdef __cplusplus
        !            54: extern "C" {
        !            55: #endif
        !            56: 
        !            57: #if PRAGMA_ALIGN_SUPPORTED
        !            58: #pragma options align=mac68k
        !            59: #endif
        !            60: 
        !            61: #if PRAGMA_IMPORT_SUPPORTED
        !            62: #pragma import on
        !            63: #endif
        !            64: 
        !            65: typedef void *RegPropertyValue;
        !            66: 
        !            67: /* Length of property value */
        !            68: typedef UInt32 RegPropertyValueSize;
        !            69: 
        !            70: /* Namespace generation number */
        !            71: typedef UInt32 RegSpecGeneration;
        !            72: 
        !            73: /* ******************************************************************************
        !            74: ** 
        !            75: ** RegEntryID  :       The Global x-Namespace Entry Identifier
        !            76: //
        !            77: */
        !            78: struct RegEntryID {
        !            79:        UInt8                                                   opaque[16];
        !            80: };
        !            81: typedef struct RegEntryID RegEntryID, *RegEntryIDPtr;
        !            82: 
        !            83: /* ******************************************************************************
        !            84: **
        !            85: ** Root Entry Name Definitions (Applies to all Names in the RootNameSpace)
        !            86: //
        !            87: //     * Names are a colon separated list of name components.  Name components
        !            88: //       may not themselves contain colons.  
        !            89: //     * Names are presented as null terminated Unicode character strings.
        !            90: //     * Names follow similar parsing rules to Apple file system absolute
        !            91: //       and relative paths.  However the '::' parent directory syntax is
        !            92: //       not currently supported.
        !            93: */
        !            94: /* Max length of Entry Name */
        !            95: 
        !            96: enum {
        !            97:        kRegCStrMaxEntryNameLength      = 47
        !            98: };
        !            99: 
        !           100: /* Entry Names are single byte ASCII */
        !           101: typedef char RegCStrEntryName, *RegCStrEntryNamePtr, RegCStrEntryNameBuf[kRegCStrMaxEntryNameLength + 1];
        !           102: 
        !           103: typedef char RegCStrPathName;
        !           104: 
        !           105: typedef UInt32 RegPathNameSize;
        !           106: 
        !           107: 
        !           108: enum {
        !           109:        kRegPathNameSeparator           = 0x3A,                                                 /* ':'  */
        !           110:        kRegEntryNameTerminator         = 0x00,                                                 /* '\0' */
        !           111:        kRegPathNameTerminator          = 0x00                                                  /* '\0' */
        !           112: };
        !           113: 
        !           114: /* ******************************************************************************
        !           115: **
        !           116: ** Property Name and ID Definitions
        !           117: //     (Applies to all Properties Regardless of NameSpace)
        !           118: */
        !           119: enum {
        !           120:        kRegMaximumPropertyNameLength = 31,                                                     /* Max length of Property Name */
        !           121:        kRegPropertyNameTerminator      = 0x00                                                  /* '\0' */
        !           122: };
        !           123: 
        !           124: typedef char RegPropertyName, *RegPropertyNamePtr, RegPropertyNameBuf[kRegMaximumPropertyNameLength + 1];
        !           125: 
        !           126: /* ******************************************************************************
        !           127: **
        !           128: ** Iteration Operations
        !           129: //
        !           130: //     These specify direction when traversing the name relationships
        !           131: */
        !           132: typedef UInt32 RegIterationOp;
        !           133: 
        !           134: typedef RegIterationOp RegEntryIterationOp;
        !           135: 
        !           136: 
        !           137: enum {
        !           138: /*
        !           139:        ** Absolute locations
        !           140:        */
        !           141:        kRegIterRoot                            = 0x2UL,
        !           142: /*
        !           143:        ** "Upward" Relationships       
        !           144:        */
        !           145:        kRegIterParents                         = 0x3UL,                                                /* include all  parent(s) of entry */
        !           146: /*
        !           147:        ** "Downward" Relationships
        !           148:        //
        !           149:        */
        !           150:        kRegIterChildren                        = 0x4UL,                                                /* include all children */
        !           151:        kRegIterSubTrees                        = 0x5UL,                                                /* include all sub trees of entry */
        !           152:        kRegIterDescendants                     = 0x5UL,                                                /* include all descendants of entry */
        !           153: /*
        !           154:         "Horizontal" Relationships     
        !           155:        */
        !           156:        kRegIterSibling                         = 0x6UL,                                                /* include all siblings */
        !           157: /*
        !           158:        ** Keep doing the same thing
        !           159:        */
        !           160:        kRegIterContinue                        = 0x1UL
        !           161: };
        !           162: 
        !           163: /* ******************************************************************************
        !           164: **
        !           165: ** Name Entry and Property Modifiers
        !           166: //
        !           167: 
        !           168: //
        !           169: // Modifiers describe special characteristics of names
        !           170: // and properties.  Modifiers might be supported for
        !           171: // some names and not others.
        !           172: // 
        !           173: // Device Drivers should not rely on functionality
        !           174: // specified as a modifier.
        !           175: */
        !           176: typedef UInt32 RegModifiers;
        !           177: 
        !           178: typedef RegModifiers RegEntryModifiers;
        !           179: 
        !           180: typedef RegModifiers RegPropertyModifiers;
        !           181: 
        !           182: 
        !           183: enum {
        !           184:        kRegNoModifiers                         = 0x00000000UL,                                 /* no entry modifiers in place */
        !           185:        kRegUniversalModifierMask       = 0x0000FFFFUL,                                 /* mods to all entries */
        !           186:        kRegNameSpaceModifierMask       = 0x00FF0000UL,                                 /* mods to all entries within namespace */
        !           187:        kRegModifierMask                        = 0xFF000000UL                                  /* mods to just this entry */
        !           188: };
        !           189: 
        !           190: /* Universal Property Modifiers */
        !           191: enum {
        !           192:        kRegPropertyValueIsSavedToNVRAM = 0x00000020UL,                         /* property is non-volatile (saved in NVRAM) */
        !           193:        kRegPropertyValueIsSavedToDisk = 0x00000040UL                           /* property is non-volatile (saved on disk) */
        !           194: };
        !           195: 
        !           196: /* ***********************
        !           197: **
        !           198: ** The Registry API
        !           199: //
        !           200: /////////////////////// */
        !           201: /* ***********************
        !           202: **
        !           203: ** Entry Management
        !           204: //
        !           205: /////////////////////// */
        !           206: /*-------------------------------
        !           207:  * EntryID handling
        !           208:  */
        !           209: /*
        !           210:  * Initialize an EntryID to an known invalid state
        !           211:  *   note: invalid != uninitialized
        !           212:  */
        !           213: extern OSStatus RegistryEntryIDInit(RegEntryID *id);
        !           214: /*
        !           215:  * Compare EntryID's for equality or if invalid
        !           216:  *
        !           217:  * If a NULL value is given for either id1 or id2 the other id 
        !           218:  * is compared with and invalid ID.  If both are NULL, the id's 
        !           219:  * are consided equal (result = true). 
        !           220:  */
        !           221: extern Boolean RegistryEntryIDCompare(const RegEntryID *id1, const RegEntryID *id2);
        !           222: /*
        !           223:  * Copy an EntryID
        !           224:  */
        !           225: extern OSStatus RegistryEntryIDCopy(const RegEntryID *src, RegEntryID *dst);
        !           226: /*
        !           227:  * Free an ID so it can be reused.
        !           228:  */
        !           229: extern OSStatus RegistryEntryIDDispose(RegEntryID *id);
        !           230: /*-------------------------------
        !           231:  * Adding and removing entries
        !           232:  *
        !           233:  * If (parentEntry) is NULL, the name is assumed
        !           234:  * to be a rooted path. It is rooted to an anonymous, unnamed root.
        !           235:  */
        !           236: extern OSStatus RegistryCStrEntryCreate(const RegEntryID *parentEntry, const RegCStrPathName *name, RegEntryID *newEntry);
        !           237: extern OSStatus RegistryEntryDelete(const RegEntryID *id);
        !           238: struct RegEntryIter {
        !           239:        void                                                    *opaque;
        !           240: };
        !           241: typedef struct RegEntryIter *RegEntryIterPtr;
        !           242: 
        !           243: typedef struct RegEntryIter RegEntryIter;
        !           244: 
        !           245: /* 
        !           246:  * create/dispose the iterator structure
        !           247:  *   defaults to root with relationship = kReIterDescendants
        !           248:  */
        !           249: extern OSStatus RegistryEntryIterateCreate(RegEntryIter *cookie);
        !           250: extern OSStatus RegistryEntryIterateDispose(RegEntryIter *cookie);
        !           251: /* 
        !           252:  * set Entry Iterator to specified entry
        !           253:  */
        !           254: extern OSStatus RegistryEntryIterateSet(RegEntryIter *cookie, const RegEntryID *startEntryID);
        !           255: /*
        !           256:  * Return each value of the iteration
        !           257:  *
        !           258:  * return entries related to the current entry
        !           259:  * with the specified relationship
        !           260:  */
        !           261: extern OSStatus RegistryEntryIterate(RegEntryIter *cookie, RegEntryIterationOp relationship, RegEntryID *foundEntry, Boolean *done);
        !           262: /*
        !           263:  * return entries with the specified property
        !           264:  *
        !           265:  * A NULL RegPropertyValue pointer will return an
        !           266:  * entry with the property containing any value.
        !           267:  */
        !           268: extern OSStatus RegistryEntrySearch(RegEntryIter *cookie, RegEntryIterationOp relationship, RegEntryID *foundEntry, Boolean *done, const RegPropertyName *propertyName, const void *propertyValue, RegPropertyValueSize propertySize);
        !           269: /*--------------------------------
        !           270:  * Find a name in the namespace
        !           271:  *
        !           272:  * This is the fast lookup mechanism.
        !           273:  * NOTE:  A reverse lookup mechanism
        !           274:  *       has not been provided because
        !           275:  *        some name services may not
        !           276:  *        provide a fast, general reverse
        !           277:  *        lookup.
        !           278:  */
        !           279: extern OSStatus RegistryCStrEntryLookup(const RegEntryID *searchPointID, const RegCStrPathName *pathName, RegEntryID *foundEntry);
        !           280: /*---------------------------------------------
        !           281:  * Convert an entry to a rooted name string
        !           282:  *
        !           283:  * A utility routine to turn an Entry ID
        !           284:  * back into a name string.
        !           285:  */
        !           286: extern OSStatus RegistryEntryToPathSize(const RegEntryID *entryID, RegPathNameSize *pathSize);
        !           287: extern OSStatus RegistryCStrEntryToPath(const RegEntryID *entryID, RegCStrPathName *pathName, RegPathNameSize pathSize);
        !           288: /*
        !           289:  * Parse a path name.
        !           290:  *
        !           291:  * Retrieve the last component of the path, and
        !           292:  * return a spec for the parent.
        !           293:  */
        !           294: extern OSStatus RegistryCStrEntryToName(const RegEntryID *entryID, RegEntryID *parentEntry, RegCStrEntryName *nameComponent, Boolean *done);
        !           295: /* ******************************************************
        !           296: **
        !           297: ** Property Management
        !           298: //
        !           299: ////////////////////////////////////////////////////// */
        !           300: /*-------------------------------
        !           301:  * Adding and removing properties
        !           302:  */
        !           303: extern OSStatus RegistryPropertyCreate(const RegEntryID *entryID, const RegPropertyName *propertyName, const void *propertyValue, RegPropertyValueSize propertySize);
        !           304: extern OSStatus RegistryPropertyDelete(const RegEntryID *entryID, const RegPropertyName *propertyName);
        !           305: /*---------------------------
        !           306:  * Traversing the Properties of a name
        !           307:  *
        !           308:  */
        !           309: struct RegPropertyIter {
        !           310:        void                                                    *opaque;
        !           311: };
        !           312: typedef struct RegPropertyIter *RegPropertyIterPtr;
        !           313: 
        !           314: typedef struct RegPropertyIter RegPropertyIter;
        !           315: 
        !           316: extern OSStatus RegistryPropertyIterateCreate(const RegEntryID *entry, RegPropertyIter *cookie);
        !           317: extern OSStatus RegistryPropertyIterateDispose(RegPropertyIter *cookie);
        !           318: extern OSStatus RegistryPropertyIterate(RegPropertyIter *cookie, RegPropertyName *foundProperty, Boolean *done);
        !           319: /*
        !           320:  * Get the value of the specified property for the specified entry.
        !           321:  *
        !           322:  */
        !           323: extern OSStatus RegistryPropertyGetSize(const RegEntryID *entryID, const RegPropertyName *propertyName, RegPropertyValueSize *propertySize);
        !           324: /*
        !           325:  * (*siz) is the maximum size of the value returned in the buffer
        !           326:  * pointer to by (val).  Upon return, (*siz) is the size of the
        !           327:  * value returned.
        !           328:  */
        !           329: extern OSStatus RegistryPropertyGet(const RegEntryID *entryID, const RegPropertyName *propertyName, void *propertyValue, RegPropertyValueSize *propertySize);
        !           330: extern OSStatus RegistryPropertySet(const RegEntryID *entryID, const RegPropertyName *propertyName, const void *propertyValue, RegPropertyValueSize propertySize);
        !           331: /* ******************************************************
        !           332: **
        !           333: ** Modibute (err, I mean Modifier) Management
        !           334: //
        !           335: ////////////////////////////////////////////////////// */
        !           336: /*
        !           337:  * Modifiers describe special characteristics of names
        !           338:  * and properties.  Modifiers might be supported for
        !           339:  * some names and not others.
        !           340:  * 
        !           341:  * Device Drivers should not rely on functionality
        !           342:  * specified as a modifier.  These interfaces
        !           343:  * are for use in writing Experts.
        !           344:  */
        !           345: /*
        !           346:  * Get and Set operators for entry modifiers
        !           347:  */
        !           348: extern OSStatus RegistryEntryGetMod(const RegEntryID *entry, RegEntryModifiers *modifiers);
        !           349: extern OSStatus RegistryEntrySetMod(const RegEntryID *entry, RegEntryModifiers modifiers);
        !           350: /*
        !           351:  * Get and Set operators for property modifiers
        !           352:  */
        !           353: extern OSStatus RegistryPropertyGetMod(const RegEntryID *entry, const RegPropertyName *name, RegPropertyModifiers *modifiers);
        !           354: extern OSStatus RegistryPropertySetMod(const RegEntryID *entry, const RegPropertyName *name, RegPropertyModifiers modifiers);
        !           355: /*
        !           356:  * Iterator operator for entry modifier search
        !           357:  */
        !           358: extern OSStatus RegistryEntryMod(RegEntryIter *cookie, RegEntryIterationOp relationship, RegEntryID *foundEntry, Boolean *done, RegEntryModifiers matchingModifiers);
        !           359: /*
        !           360:  * Iterator operator for entries with matching 
        !           361:  * property modifiers
        !           362:  */
        !           363: extern OSStatus RegistryEntryPropertyMod(RegEntryIter *cookie, RegEntryIterationOp relationship, RegEntryID *foundEntry, Boolean *done, RegPropertyModifiers matchingModifiers);
        !           364: 
        !           365: #if PRAGMA_IMPORT_SUPPORTED
        !           366: #pragma import off
        !           367: #endif
        !           368: 
        !           369: #if PRAGMA_ALIGN_SUPPORTED
        !           370: #pragma options align=reset
        !           371: #endif
        !           372: 
        !           373: #ifdef __cplusplus
        !           374: }
        !           375: #endif
        !           376: 
        !           377: #endif /* __NAMEREGISTRY__ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.