Annotation of kernel/bsd/netat/h/ADSP.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: /* ADSP.h
        !            26:  * 
        !            27:  * From Mike Shoemaker (06/23/90)
        !            28:  *
        !            29:  * C Interfaces for the AppleTalk Data Stream Protocol (ADSP)
        !            30:  *
        !            31: */
        !            32: 
        !            33: #ifndef __ADSP__
        !            34: #define __ADSP__
        !            35: 
        !            36: #ifndef __APPLETALK__
        !            37: #include <at/appletalk.h>
        !            38: #endif
        !            39: 
        !            40: 
        !            41: /* Solaris defines u as (curproc->p_user) */
        !            42: #if defined(u)
        !            43: # undef u
        !            44: #endif
        !            45: 
        !            46: typedef short OSErr;
        !            47: typedef long (*ProcPtr)();
        !            48: typedef ProcPtr *ProcHandle;
        !            49: typedef char *Ptr;
        !            50: typedef Ptr *Handle;
        !            51: 
        !            52: /* result codes */
        !            53: 
        !            54: #define errENOBUFS     -1281
        !            55: #define        errRefNum       -1280   /* bad connection refNum */
        !            56: #define        errAborted      -1279   /* control call was aborted */
        !            57: #define        errState        -1278   /* bad connection state for this operation */
        !            58: #define        errOpening      -1277   /* open connection request failed */
        !            59: #define        errAttention    -1276   /* attention message too long */
        !            60: #define        errFwdReset     -1275   /* read terminated by forward reset */
        !            61: #define errDSPQueueSize        -1274   /* DSP Read/Write Queue Too small */
        !            62: #define errOpenDenied  -1273   /* open connection request was denied */
        !            63: 
        !            64: /* control codes */
        !            65: 
        !            66: #define        dspInit         255     /* create a new connection end */
        !            67: #define        dspRemove       254     /* remove a connection end */
        !            68: #define        dspOpen         253     /* open a connection */
        !            69: #define        dspClose        252     /* close a connection */
        !            70: #define        dspCLInit       251     /* create a connection listener */
        !            71: #define        dspCLRemove     250     /* remove a connection listener */
        !            72: #define        dspCLListen     249     /* post a listener request */
        !            73: #define        dspCLDeny       248     /* deny an open connection request */
        !            74: #define        dspStatus       247     /* get status of connection end */
        !            75: #define        dspRead         246     /* read data from the connection */
        !            76: #define        dspWrite        245     /* write data on the connection */
        !            77: #define        dspAttention    244     /* send an attention message */
        !            78: #define        dspOptions      243     /* set connection end options */
        !            79: #define        dspReset        242     /* forward reset the connection */
        !            80: #define        dspNewCID       241     /* generate a cid for a connection end */
        !            81: 
        !            82: 
        !            83: /* connection opening modes */
        !            84: 
        !            85: #define        ocRequest       1       /* request a connection with remote */
        !            86: #define        ocPassive       2       /* wait for a connection request from remote */
        !            87: #define        ocAccept        3       /* accept request as delivered by listener */
        !            88: #define        ocEstablish     4       /* consider connection to be open */
        !            89: 
        !            90: 
        !            91: /* connection end states */
        !            92: 
        !            93: #define        sListening      1       /* for connection listeners */
        !            94: #define        sPassive        2       /* waiting for a connection request from remote */
        !            95: #define        sOpening        3       /* requesting a connection with remote */
        !            96: #define        sOpen           4       /* connection is open */
        !            97: #define        sClosing        5       /* connection is being torn down */
        !            98: #define        sClosed         6       /* connection end state is closed */
        !            99: 
        !           100: 
        !           101: 
        !           102: /* client event flags */
        !           103: 
        !           104: #define        eClosed         0x80    /* received connection closed advice */
        !           105: #define        eTearDown       0x40    /* connection closed due to broken connection */
        !           106: #define        eAttention      0x20    /* received attention message */
        !           107: #define        eFwdReset       0x10    /* received forward reset advice */
        !           108: 
        !           109: /* miscellaneous constants  */
        !           110: 
        !           111: #define        attnBufSize     570     /* size of client attention buffer */
        !           112: #define        minDSPQueueSize 100     /* Minimum size of receive or send Queue */
        !           113: #define defaultDSPQS   16384   /* random guess */
        !           114: #define RecvQSize      defaultDSPQS
        !           115: #define SendQSize      defaultDSPQS
        !           116: 
        !           117: /* connection control block */
        !           118: 
        !           119: struct TRCCB {
        !           120:     u_char *ccbLink;   /* link to next ccb */
        !           121:     u_short refNum;    /* user reference number */
        !           122:     u_short state;     /* state of the connection end */
        !           123:     u_char userFlags;  /* flags for unsolicited connection events */
        !           124:     u_char localSocket;        /* socket number of this connection end */
        !           125:     at_inet_t remoteAddress;   /* internet address of remote end */
        !           126:     u_short attnCode;  /* attention code received */
        !           127:     u_short attnSize;  /* size of received attention data */
        !           128:     u_char *attnPtr;   /* ptr to received attention data */
        !           129:     u_char reserved[220]; /* for adsp internal use */
        !           130: };
        !           131:        
        !           132: typedef struct TRCCB TRCCB;
        !           133: typedef TRCCB *TPCCB;
        !           134: 
        !           135: /* init connection end parameters */
        !           136: 
        !           137: struct TRinitParams {
        !           138:     TPCCB ccbPtr;              /* pointer to connection control block */
        !           139:     ProcPtr userRoutine;       /* client routine to call on event */
        !           140:     u_char *sendQueue;         /* client passed send queue buffer */
        !           141:     u_char *recvQueue;         /* client passed receive queue buffer */
        !           142:     u_char *attnPtr;           /* client passed receive attention buffer */
        !           143:     u_short sendQSize;         /* size of send queue (0..64K bytes) */
        !           144:     u_short recvQSize;         /* size of receive queue (0..64K bytes) */
        !           145:     u_char localSocket;                /* local socket number */
        !           146: };
        !           147: 
        !           148: typedef struct TRinitParams TRinitParams;
        !           149: 
        !           150: /* open connection parameters */
        !           151: 
        !           152: struct TRopenParams {
        !           153:     u_short localCID;          /* local connection id */
        !           154:     u_short remoteCID;         /* remote connection id */
        !           155:     at_inet_t remoteAddress;   /* address of remote end */
        !           156:     at_inet_t filterAddress;   /* address filter */
        !           157:     unsigned long sendSeq;     /* local send sequence number */
        !           158:     u_long recvSeq;            /* receive sequence number */
        !           159:     u_long attnSendSeq;                /* attention send sequence number */
        !           160:     u_long attnRecvSeq;                /* attention receive sequence number */
        !           161:     u_short sendWindow;                /* send window size */
        !           162:     u_char ocMode;             /* open connection mode */
        !           163:     u_char ocInterval;         /* open connection request retry interval */
        !           164:     u_char ocMaximum;          /* open connection request retry maximum */
        !           165: };
        !           166: 
        !           167: typedef struct TRopenParams TRopenParams;
        !           168: 
        !           169: /* close connection parameters */
        !           170: 
        !           171: struct TRcloseParams   {
        !           172:     u_char abort;              /* abort connection immediately if non-zero */
        !           173: };
        !           174: 
        !           175: typedef struct TRcloseParams TRcloseParams;
        !           176: 
        !           177: /* client status parameter block */
        !           178: 
        !           179: struct TRstatusParams {
        !           180:     TPCCB ccbPtr;              /* pointer to ccb */
        !           181:     u_short sendQPending;      /* pending bytes in send queue */
        !           182:     u_short sendQFree;         /* available buffer space in send queue */
        !           183:     u_short recvQPending;      /* pending bytes in receive queue */
        !           184:     u_short recvQFree;         /* available buffer space in receive queue */
        !           185: };
        !           186:        
        !           187: typedef struct TRstatusParams TRstatusParams;
        !           188: 
        !           189: /* read/write parameter block */
        !           190: 
        !           191: struct TRioParams {
        !           192:     u_short reqCount;          /* requested number of bytes */
        !           193:     u_short actCount;          /* actual number of bytes */
        !           194:     u_char *dataPtr;           /* pointer to data buffer */
        !           195:     u_char eom;                        /* indicates logical end of message */
        !           196:     u_char flush;              /* send data now */
        !           197:     u_char dummy[2];            /*### LD */
        !           198: };
        !           199: 
        !           200: typedef struct TRioParams TRioParams;
        !           201: 
        !           202: /* attention parameter block */
        !           203: 
        !           204: struct TRattnParams {
        !           205:     u_short attnCode;          /* client attention code */
        !           206:     u_short attnSize;          /* size of attention data */
        !           207:     u_char *attnData;          /* pointer to attention data */
        !           208:     u_char attnInterval;       /* retransmit timer in 10-tick intervals */
        !           209:     u_char dummy[3];           /* ### LD */
        !           210: };
        !           211: 
        !           212: typedef struct TRattnParams TRattnParams;
        !           213: 
        !           214: /* client send option parameter block */
        !           215: 
        !           216: struct TRoptionParams {
        !           217:     u_short sendBlocking;      /* quantum for data packets */
        !           218:     u_char sendTimer;          /* send timer in 10-tick intervals */
        !           219:     u_char rtmtTimer;          /* retransmit timer in 10-tick intervals */
        !           220:     u_char badSeqMax;          /* threshold for sending retransmit advice */
        !           221:     u_char useCheckSum;                /* use ddp packet checksum */
        !           222:     u_short filler;            /* ### LD */
        !           223:     int newPID;                        /* ### Temp for backward compatibility 02/11/94 */
        !           224: };
        !           225: 
        !           226: typedef struct TRoptionParams TRoptionParams;
        !           227: 
        !           228: /* new cid parameters */
        !           229: 
        !           230: struct TRnewcidParams {
        !           231:     u_short newcid;            /* new connection id returned */
        !           232: };
        !           233: 
        !           234: typedef struct TRnewcidParams TRnewcidParams;
        !           235: 
        !           236: union adsp_command {
        !           237:        TRinitParams initParams; /* dspInit, dspCLInit */
        !           238:        TRopenParams openParams; /* dspOpen, dspCLListen, dspCLDeny */
        !           239:        TRcloseParams closeParams; /* dspClose, dspRemove */
        !           240:        TRioParams ioParams;    /* dspRead, dspWrite, dspAttnRead */
        !           241:        TRattnParams attnParams; /* dspAttention */
        !           242:        TRstatusParams statusParams; /* dspStatus */
        !           243:        TRoptionParams optionParams; /* dspOptions */
        !           244:        TRnewcidParams newCIDParams; /* dspNewCID */
        !           245: };
        !           246: 
        !           247: /* ADSP CntrlParam ioQElement */
        !           248: 
        !           249: struct DSPParamBlock {
        !           250:     struct QElem *qLink;
        !           251:     short qType;
        !           252:     short ioTrap;
        !           253:     Ptr ioCmdAddr;
        !           254:     ProcPtr ioCompletion;
        !           255:     OSErr ioResult;
        !           256:     char *ioNamePtr;
        !           257:     short ioVRefNum;
        !           258:     short ioCRefNum;           /* adsp driver refNum */
        !           259:     short csCode;              /* adsp driver control code */
        !           260:     long qStatus;              /* adsp internal use */
        !           261:     u_short ccbRefNum;         /* connection end refNum */
        !           262:     union adsp_command u;
        !           263: };
        !           264: 
        !           265: typedef struct DSPParamBlock DSPParamBlock;
        !           266: typedef DSPParamBlock *DSPPBPtr;
        !           267: 
        !           268: struct adspcmd {
        !           269:     struct adspcmd *qLink;
        !           270:     u_int ccbRefNum;
        !           271:     caddr_t ioc;
        !           272: #ifdef _KERNEL
        !           273:     gref_t *gref;
        !           274:     gbuf_t *mp;
        !           275: #else
        !           276:     void *gref;
        !           277:     void *mp;
        !           278: #endif
        !           279:     short ioResult;
        !           280:     u_short ioDirection;
        !           281:     short csCode;
        !           282:     u_short socket;
        !           283:     union adsp_command u;
        !           284: };
        !           285: #endif

unix.superglobalmegacorp.com

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