2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
21 struct rx_call **calls;
23 short nReady; /* XXX UNALIGNED */
26 #ifdef RX_ENABLE_LOCKS
29 #endif /* RX_ENABLE_LOCKS */
32 extern struct multi_handle *multi_Init();
33 extern int multi_Select();
34 extern void multi_Finalize();
36 #define multi_Rx(conns, nConns) \
38 register struct multi_handle *multi_h;\
39 register int multi_i;\
40 register struct rx_call *multi_call;\
41 multi_h = multi_Init(conns, nConns);\
42 for (multi_i = 0; multi_i < nConns; multi_i++)
44 #define multi_Body(startProc, endProc)\
45 multi_call = multi_h->calls[multi_i];\
47 rx_FlushWrite(multi_call);\
49 while ((multi_i = multi_Select(multi_h)) >= 0) {\
50 register afs_int32 multi_error;\
51 multi_call = multi_h->calls[multi_i];\
52 multi_error = rx_EndCall(multi_call, endProc);\
53 multi_h->calls[multi_i] = (struct rx_call *) 0
55 #define multi_Abort break
58 multi_Finalize(multi_h);\
61 /* Ignore remaining multi RPC's */
62 #define multi_End_Ignore\
63 multi_Finalize_Ignore(multi_h);\
66 #endif /* _RX_MULTI_ End of rx_multi.h */