/usr/include/rx/rx_multi.h is in libopenafs-dev 1.8.0~pre5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | /*
* Copyright 2000, International Business Machines Corporation and others.
* All Rights Reserved.
*
* This software has been released under the terms of the IBM Public
* License. For details, see the LICENSE file in the top-level source
* directory or online at http://www.openafs.org/dl/license10.html
*/
#ifndef _RX_MULTI_
#define _RX_MULTI_
struct multi_handle {
int nConns;
struct rx_call **calls;
short *ready;
short nReady; /* XXX UNALIGNED */
short *nextReady;
short *firstNotReady;
#ifdef RX_ENABLE_LOCKS
afs_kmutex_t lock;
afs_kcondvar_t cv;
#endif /* RX_ENABLE_LOCKS */
};
#define multi_Rx(conns, nConns) \
do {\
struct multi_handle *multi_h;\
int multi_i;\
int multi_i0;\
afs_int32 multi_error;\
struct rx_call *multi_call;\
multi_h = multi_Init(conns, nConns);\
for (multi_i0 = multi_i = 0; ; multi_i = multi_i0 )
#define multi_Body(startProc, endProc)\
if (multi_h->nextReady == multi_h->firstNotReady && multi_i < multi_h->nConns) {\
multi_call = multi_h->calls[multi_i];\
if (multi_call) {\
startProc;\
rx_FlushWrite(multi_call);\
}\
multi_i0++; /* THIS is the loop variable!! */\
continue;\
}\
if ((multi_i = multi_Select(multi_h)) < 0) break;\
multi_call = multi_h->calls[multi_i];\
multi_error = rx_EndCall(multi_call, endProc);\
multi_h->calls[multi_i] = (struct rx_call *) 0
#define multi_Abort break
#define multi_End\
multi_Finalize(multi_h);\
} while (0)
/* Ignore remaining multi RPC's */
#define multi_End_Ignore\
multi_Finalize_Ignore(multi_h);\
} while (0)
#endif /* _RX_MULTI_ End of rx_multi.h */
|