<> <> <> <> <> <> <<>> <> <<>> <> EthernetFace: DEFINITIONS = BEGIN <<>> GetNextDevice: PROC [DeviceHandle] RETURNS [DeviceHandle]; <> AddCleanup: PROC [DeviceHandle]; RemoveCleanup: PROC [DeviceHandle]; <> HostNumber: TYPE = MACHINE DEPENDENT RECORD [ SELECT type: * FROM physical => [a: CARDINAL[0..32768), b: CARDINAL, c: CARDINAL], multicast => [a: CARDINAL[0..32768), b: CARDINAL, c: CARDINAL], ENDCASE ]; <> TurnOn: PROC [device: DeviceHandle, host: physical HostNumber, inInterrupt, outInterrupt: WORD, globalState: GlobalStatePtr]; TurnOff: PROC [device: DeviceHandle]; <> QueueOutput: PROC [device: DeviceHandle, buffer: LONG POINTER, length: CARDINAL, cb: ControlBlock]; QueueInput: PROC [device: DeviceHandle, buffer: LONG POINTER, length: CARDINAL, cb: ControlBlock]; <> GetStatus: PROC [cb: ControlBlock] RETURNS [status: Status]; <> GetRetries: PROC [cb: ControlBlock] RETURNS [CARDINAL]; <> GetPacketLength: PROC [cb: ControlBlock] RETURNS [CARDINAL]; <> GetPacketsMissed: PROC [DeviceHandle] RETURNS [CARDINAL]; <> <<>> DeviceHandle: TYPE[1]; GlobalStatePtr: TYPE = LONG POINTER; Status: TYPE = { pending, ok, overrun, -- Input data arrived when FIFO was full underrun, -- Output FIFO went empty before end of packet was set packetTooLong, -- Input packet didn't fit into buffer tooManyCollisions, -- More than 16 attempts to transmit the same packet crc, crcAndBadAlignment, badAlignmentButOkCrc, otherError }; <> ControlBlock: TYPE = LONG POINTER TO ControlBlockRecord; ControlBlockRecord: TYPE; <<>> globalStateSize: READONLY CARDINAL; controlBlockSize: READONLY CARDINAL; nullDeviceHandle: READONLY DeviceHandle; hearSelf: READONLY BOOLEAN; <<>> END. LOG Time: September 5, 1980 12:16 AM By: HGM Action: Create from EthernetOneFace Time: May 6, 1983 1:00 pm By: ADB Action: Minor changes for Cedar nucleus conversion