Annotation of XNU/iokit/IOKit/network/IONetworkUserClient.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /*
        !            23:  * Copyright (c) 1999 Apple Computer, Inc.  All rights reserved. 
        !            24:  *
        !            25:  * HISTORY
        !            26:  *
        !            27:  */
        !            28: 
        !            29: #ifndef _IONETWORKUSERCLIENT_H
        !            30: #define _IONETWORKUSERCLIENT_H
        !            31: 
        !            32: // IONetworkUserClient type ID.
        !            33: //
        !            34: #define kIONUCType  0xff000001
        !            35: 
        !            36: // IONetworkUserClient call structure definitions.
        !            37: //
        !            38: enum {
        !            39:         kIONUCResetNetworkDataIndex          = 0,
        !            40: #define kIONUCResetNetworkDataInputs           1
        !            41: #define kIONUCResetNetworkDataOutputs          0
        !            42: #define kIONUCResetNetworkDataFlags            kIOUCScalarIScalarO
        !            43: 
        !            44:         kIONUCWriteNetworkDataIndex          = 1,
        !            45: #define kIONUCWriteNetworkDataInput0           0xffffffff
        !            46: #define kIONUCWriteNetworkDataInput1           0xffffffff
        !            47: #define kIONUCWriteNetworkDataFlags            kIOUCScalarIStructI
        !            48: 
        !            49:         kIONUCReadNetworkDataIndex           = 2,
        !            50: #define kIONUCReadNetworkDataInputs            1
        !            51: #define kIONUCReadNetworkDataOutputs           0xffffffff
        !            52: #define kIONUCReadNetworkDataFlags             kIOUCScalarIStructO
        !            53: 
        !            54:         kIONUCGetNetworkDataCapacityIndex    = 3,
        !            55: #define kIONUCGetNetworkDataCapacityInputs     1
        !            56: #define kIONUCGetNetworkDataCapacityOutputs    1
        !            57: #define kIONUCGetNetworkDataCapacityFlags      kIOUCScalarIScalarO
        !            58: 
        !            59:         kIONUCGetNetworkDataHandleIndex      = 4,
        !            60: #define kIONUCGetNetworkDataHandleInputs       0xffffffff
        !            61: #define kIONUCGetNetworkDataHandleOutputs      0xffffffff
        !            62: #define kIONUCGetNetworkDataHandleFlags        kIOUCStructIStructO
        !            63: 
        !            64:         kIONUCLastIndex
        !            65: };
        !            66: 
        !            67: // Notification types.
        !            68: //
        !            69: enum {
        !            70:     kIONUCNotificationTypeLinkChange  = 0xff000001,
        !            71: };
        !            72: 
        !            73: typedef struct _IONetworkNotifyMsg {
        !            74:     mach_msg_header_t h;
        !            75: //  msg_type_t        ref;
        !            76: } IONetworkNotifyMsg;
        !            77: 
        !            78: #ifdef KERNEL
        !            79: 
        !            80: #include <IOKit/IOUserClient.h>
        !            81: 
        !            82: class IONetworkInterface;
        !            83: class IONetworkController;
        !            84: 
        !            85: /*! @class IONetworkUserClient
        !            86:     @abstract An IOUserClient created by an IONetworkInterface to
        !            87:     manage user space requests. */
        !            88: 
        !            89: class IONetworkUserClient : public IOUserClient
        !            90: {
        !            91:     OSDeclareDefaultStructors(IONetworkUserClient)
        !            92: 
        !            93: protected:
        !            94:     IONetworkInterface *        _owner;
        !            95:     IONetworkController *       _ctlr;
        !            96:     mach_port_t                 _notifyPort;
        !            97:     task_t                      _task;
        !            98:     IOExternalMethod            _methods[kIONUCLastIndex];
        !            99: 
        !           100: /*! @function
        !           101:     @abstract Free the IONetworkUserClient instance. */
        !           102: 
        !           103:     virtual void free();
        !           104: 
        !           105: public:
        !           106: 
        !           107: /*! @function withTask
        !           108:     @abstract Factory method that performs allocation and initialization
        !           109:     of an IONetworkUserClient instance.
        !           110:     @param owningTask See IOUserClient.
        !           111:     @result An IONetworkUserClient on success, 0 otherwise. */
        !           112: 
        !           113:     static IONetworkUserClient * withTask(task_t owningTask);
        !           114: 
        !           115: /*! @function start
        !           116:     @abstract Start the IONetworkUserClient.
        !           117:     @discussion Open the provider, must be an IONetworkInterface object,
        !           118:     and initialize the IOExternalMethod array.
        !           119:     @result true on success, false otherwise. */
        !           120: 
        !           121:     virtual bool start(IOService * provider);
        !           122: 
        !           123: /*! @function clientClose
        !           124:     @abstract Handle a client close.
        !           125:     @discussion Close and detach from our owner (provider).
        !           126:     @result kIOReturnSuccess */
        !           127: 
        !           128:     virtual IOReturn clientClose();
        !           129: 
        !           130: /*! @function clientDied
        !           131:     @abstract Handle client death.
        !           132:     @discussion Close and detach from our owner (provider).
        !           133:     @result kIOReturnSuccess */
        !           134: 
        !           135:     virtual IOReturn clientDied();
        !           136: 
        !           137: /*! @function registerNotificationPort
        !           138:     @abstract Called by a client to register its notification port.
        !           139:     @param port A mach port where the notification message should be sent.
        !           140:     @param type The type of notification that the client is interested in.
        !           141:     @param refCon An argument to deliver with the notification.
        !           142:     @result kIOReturnUnsupported if the notification type is unknown,
        !           143:     kIOReturnSuccess otherwise. */
        !           144: 
        !           145:     virtual IOReturn registerNotificationPort(mach_port_t port,
        !           146:                                               UInt32      type,
        !           147:                                               UInt32      refCon);
        !           148: 
        !           149: /*! @function deliverNotification
        !           150:     @abstract Deliver a notification to the registered notification port.
        !           151:     @param type The type of notification being delivered.
        !           152:     @result kIOReturnSuccess on success, kIOReturnUnsupported if the
        !           153:     notification type is unknown, or kIOReturnError for a mach messaging
        !           154:     error. */
        !           155: 
        !           156:     virtual IOReturn deliverNotification(UInt32 type);
        !           157: 
        !           158: /*! @function getExternalMethodForIndex
        !           159:     @abstract Look up an entry from the method array.
        !           160:     @discussion Called by IOUserClient to fetch the method entry,
        !           161:     encoded by an IOExternalMethod structure, that correspond to
        !           162:     the index given.
        !           163:     @param index The method index.
        !           164:     @result A pointer to a IOExternalMethod structure containing the
        !           165:     method definition. */
        !           166: 
        !           167:     virtual IOExternalMethod * getExternalMethodForIndex(UInt32 index);
        !           168: 
        !           169: protected:
        !           170: 
        !           171: /*! @function resetNetworkData
        !           172:     @abstract Fill the data buffer in an IONetworkData object with zeroes.
        !           173:     @param key The OSSymbol key of an IONetworkData object.
        !           174:     @result kIOReturnSuccess on success, kIOReturnBadArgument if an
        !           175:     argument is invalid, or an error from IONetworkData::reset(). */
        !           176: 
        !           177:     virtual IOReturn resetNetworkData(OSSymbol * key);
        !           178: 
        !           179: /*! @function writeNetworkData
        !           180:     @abstract Write to the data buffer in an IONetworkData object from
        !           181:     a buffer provided by the caller.
        !           182:     @param key The OSSymbol key of an IONetworkData object.
        !           183:     @param srcBuf The data to write is taken from this buffer.
        !           184:     @param inSize The size of the source buffer.
        !           185:     @result kIOReturnSuccess on success, kIOReturnBadArgument if an
        !           186:     argument is invalid, or an error from IONetworkData::write(). */
        !           187: 
        !           188:     virtual IOReturn writeNetworkData(OSSymbol *   key,
        !           189:                                       void *       srcBuf,
        !           190:                                       IOByteCount  inSize);
        !           191: 
        !           192: /*! @function readNetworkData
        !           193:     @abstract Read (copy) the data buffer in an IONetworkData object to
        !           194:     a buffer provided by the caller.
        !           195:     @param key The OSSymbol key of an IONetworkData object.
        !           196:     @param destBuf The buffer where the data shall be written to.
        !           197:     @param inOutSize Pointer to an integer that the caller must initialize
        !           198:     to contain the size of the buffer. This method will overwrite it with
        !           199:     the actual number of bytes written to the buffer.
        !           200:     @result kIOReturnSuccess on success, kIOReturnBadArgument if an
        !           201:     argument is invalid, or an error from IONetworkData::read(). */
        !           202: 
        !           203:     virtual IOReturn readNetworkData(OSSymbol *    key,
        !           204:                                      void *        destBuf,
        !           205:                                      IOByteCount * inOutSizeP);
        !           206: 
        !           207: /*! @function getNetworkDataCapacity
        !           208:     @abstract Get the capacity of an IONetworkData object.
        !           209:     @param key The OSSymbol key of an IONetworkData object.
        !           210:     @param capacityP On success, the capacity is written to the integer
        !           211:     at this address.
        !           212:     @result kIOReturnSuccess on success, kIOReturnBadArgument if an
        !           213:     argument is invalid. */
        !           214: 
        !           215:     virtual IOReturn getNetworkDataCapacity(OSSymbol * key,
        !           216:                                             UInt32 *   capacityP);
        !           217: 
        !           218: /*! @function getNetworkDataHandle
        !           219:     @abstract Return an opaque handle to a provider's IONetworkData object.
        !           220:     @discussion Called to obtain a handle that maps to an IONetworkData
        !           221:     object. This handle can be later passed to other methods in this class
        !           222:     to refer to the same object.
        !           223:     @param name A C string with the name of the IONetworkData object.
        !           224:     @param handle If an IONetworkData object with the given name is found,
        !           225:     then its associated OSSymbol object is written to this address.
        !           226:     @param nameSize The size of the name string, including the final
        !           227:     null character.
        !           228:     @param handleSizeP The size of the buffer allocated by the caller
        !           229:     to store the handle. This should be 4 bytes.
        !           230:     @result kIOReturnSuccess on success, kIOReturnBadArgument if an
        !           231:     argument is invalid, or kIOReturnNoMemory if unable to allocate memory. */
        !           232: 
        !           233:     virtual IOReturn getNetworkDataHandle(char *         name,
        !           234:                                           OSObject **    handle,
        !           235:                                           IOByteCount    nameSize,
        !           236:                                           IOByteCount *  handleSizeP);
        !           237: };
        !           238: 
        !           239: #endif /* KERNEL */
        !           240: 
        !           241: #endif /* !_IONETWORKUSERCLIENT_H */

unix.superglobalmegacorp.com

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