ftp.nice.ch/pub/next/developer/languages/c/gcc.2.7.2.2.I.b.tar.gz#/lib/gcc-lib/m68k-next-nextstep3/2.7.2.2.f.2/include/driverkit/IOTokenRing.h

This is IOTokenRing.h in view mode; [Download] [Up]

/* 	Copyright (c) 1993 NeXT Computer, Inc.  All rights reserved. 
 *
 * IOTokenRing.h - TokenRing device-independent superclass
 *
 *	The TokenRing superclass contains the device-independent functions
 *	that are common to most token-ring drivers.  The hardware-specific
 *	driver should be a subclass of IOTokenRing.
 *
 * HISTORY
 * 25-Jan-93 
 *	created
 *      
 */

#ifdef KERNEL

#import <driverkit/IODirectDevice.h>
#import <driverkit/IONetwork.h>
#import <kernserv/ns_timer.h>
#import <net/tokendefs.h>


@interface IOTokenRing:IODirectDevice<IONetworkDeviceMethods>
{
@private

    /* 
     * Interface flags 
     */
	
    struct _trFlags {
	unsigned int        _isRunning:1;		/* operational or not*/
	unsigned int        _isEarlyTokenEnabled:1;	/* early token on/off*/
	unsigned int        _shouldAutoRecover:1;	/* auto recovery on/off*/
	unsigned int        _shouldAttachIP:1;		/* tr to ip iface*/
	unsigned int        _shouldAttachNullSap:1;	/* null sap iface*/
	unsigned int        _doesIPSourceRouting:1;	/* ip 802.5 src rtng*/
	unsigned int        RESERVED:10;
    }	_flags;

    /* 
     * Interface parameters 
     */
	
    unsigned 	_ringSpeed;		/* ring speed (4 or 16)*/
    unsigned	_ipTokenPriority;	/* IP token priority*/
    unsigned	_ipMtu;			/* IP max tran unit for tring*/
    unsigned	_maxInfoFieldSize;	/* MAC-layer info field max*/
    
    /*
     * Hardware addresses
     */
	
    token_addr_t	_nodeAddress; 		/* our Node address*/
    token_addr_t	_groupAddress;		/* not supported*/
    token_addr_t 	_functionalAddress;	/* not supported*/
	    
    /*
     * Other instance variables
     */

    IONetwork	*_netif;
    id		_driverCmd;		 
    ns_time_t 	_absTimeout;	
    id		_hwLock;	/* NXSpinLock; protects access to hdw*/
    int		_IOTokenRing_reserved[4];
}

- initFromDeviceDescription:(IODeviceDescription *)devDesc;
- free;

- (BOOL)isRunning;
- (void)setRunning:(BOOL)running;

- (unsigned int)relativeTimeout;
- (void)setRelativeTimeout:(unsigned int)timeout;
- (void)clearTimeout;

- (BOOL)earlyTokenEnabled;			/* defined in Instance.table*/
- (BOOL)shouldAutoRecover;			/* defined in Instance.table*/
- (unsigned)ringSpeed;				/* defined in Instance.table*/

- (unsigned)maxInfoFieldSize;			/* based on ring speed, but may*/
- (void)setMaxInfoFieldSize:(unsigned)size;	/* also be hardware dependent*/

/*
 * Hardware Addresses
 */

- (token_addr_t)nodeAddress;				/* our Node address*/

@end

@interface IOTokenRing(DriverInterface)

- (BOOL)resetAndEnable:(BOOL)enable;
- (IONetwork *)attachToNetworkWithAddress:(token_addr_t)addrs;

/*
 * NOTE:  Use of the transmit: method may be undesirable in cases
 *        where it forces buffer copying, or precludes a subclass
 *	  buffer management scheme.  In those cases it is preferable
 *	  to override the outputPacket:address: method (and perhaps the 
 *	  allocateNetbuf method).  If the outputPacket:address: method is 
 *	  overridden, then no transmit method is required.	 
 */
 
- (void)transmit:(netbuf_t)pkt; 


@end

#endif

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.