| 1 | /* |
| 2 | * Copyright (C) 1995 Advanced RISC Machines Limited. All rights reserved. |
| 3 | * |
| 4 | * This software may be freely used, copied, modified, and distributed |
| 5 | * provided that the above copyright notice is preserved in all copies of the |
| 6 | * software. |
| 7 | */ |
| 8 | |
| 9 | /* -*-C-*- |
| 10 | * |
| 11 | * $Revision$ |
| 12 | * $Date$ |
| 13 | * |
| 14 | * |
| 15 | * Project: ANGEL |
| 16 | * |
| 17 | * Title: Private header for channels implementations |
| 18 | */ |
| 19 | |
| 20 | #ifndef angel_chanpriv_h |
| 21 | #define angel_chanpriv_h |
| 22 | |
| 23 | /* |
| 24 | * This describes the internal structure and flags for a channels packet. |
| 25 | */ |
| 26 | |
| 27 | /* byte positions within channel packet */ |
| 28 | #define CF_CHANNEL_BYTE_POS 0 |
| 29 | #define CF_HOME_SEQ_BYTE_POS 1 |
| 30 | #define CF_OPPO_SEQ_BYTE_POS 2 |
| 31 | #define CF_FLAGS_BYTE_POS 3 |
| 32 | #define CF_DATA_BYTE_POS 4 |
| 33 | |
| 34 | /* flags for FLAGS field */ |
| 35 | #define CF_RELIABLE (1 << 0) /* use reliable channels protocol */ |
| 36 | #define CF_RESEND (1 << 1) /* this is a renegotiation packet */ |
| 37 | #define CF_HEARTBEAT (1 << 2) /* heartbeat packet - prod target into sync */ |
| 38 | |
| 39 | /* byte positions within buffer */ |
| 40 | #define CB_LINK_BYTE_POS 0 /* the link pointer */ |
| 41 | #define CB_CHAN_HEADER_BYTE_POS 4 /* the channel frame starts here */ |
| 42 | |
| 43 | /* macro to get buffer position of packet component */ |
| 44 | #define CB_PACKET(x) (CB_CHAN_HEADER_BYTE_POS + (x)) |
| 45 | |
| 46 | /* byte offset of packet data within buffer */ |
| 47 | #define CB_CHAN_DATA_BYTE_POS (CB_PACKET(CF_DATA_BYTE_POS)) |
| 48 | |
| 49 | /* access the link in a buffer, where b is byte pointer to buffer */ |
| 50 | #define CB_LINK(b) ((p_Buffer)(&(b)[0])) |
| 51 | |
| 52 | #define invalidChannelID(chan) (((int)(chan)) < 0 || \ |
| 53 | (chan) >= CI_NUM_CHANNELS) |
| 54 | |
| 55 | #endif /* ndef angel_chanpriv_h */ |
| 56 | |
| 57 | /* EOF chanpriv.h */ |