1rsm_memseg_import_putRve(m3oRtSeM)Shared Memory Library Furnscmt_imoenmsseg_import_putv(3RSM)
2
3
4
6 rsm_memseg_import_putv, rsm_memseg_import_getv - write to a segment
7 using a list of I/O requests
8
10 cc [ flag... ] file... -lrsm [ library... ]
11 #include <rsmapi.h>
12
13 int rsm_memseg_import_putv(rsm_scat_gath_t *sg_io);
14
15
16 int rsm_memseg_import_getv(rsm_scat_gath_t *sg_io);
17
18
20 The rsm_memseg_import_putv() and rsm_memseg_import_getv() functions
21 provide for using a list of I/O requests rather than a single source
22 and destination address as is done for thersm_memseg_import_put(3RSM)
23 and rsm_memseg_import_get(3RSM) functions.
24
25
26 The I/O vector component of the scatter-gather list (sg_io), allows
27 specifying local virtual addresses or local_memory_handles. When a
28 local address range is used repeatedly, it is efficient to use a handle
29 because allocated system resources (that is, locked down local memory)
30 are maintained until the handle is freed. The supporting functions for
31 handles are rsm_create_localmemory_handle(3RSM) and rsm_free_localmem‐
32 ory_handle(3RSM).
33
34
35 Virtual addresses or handles may be gathered into the vector for writ‐
36 ing to a single remote segment, or a read from a single remote segment
37 may be scattered to the vector of virtual addresses or handles.
38
39
40 Implicit mapping is supported for the scatter-gather type of access.
41 The attributes of the extension library for the specific interconnect
42 are used to determine whether mapping is necessary before any scatter-
43 gather access. If mapping of the imported segment is a prerequisite for
44 scatter-gather access and the mapping has not already been performed,
45 an implicit mapping is performed for the imported segment. The I/O for
46 the vector is then initiated.
47
48
49 I/O for the entire vector is initiated before returning. The barrier
50 mode attribute of the import segment determines if the I/O has com‐
51 pleted before the function returns. A barrier mode attribute setting
52 of IMPLICIT guarantees that the transfer of data is completed in the
53 order as entered in the I/O vector. An implicit barrier open and close
54 surrounds each list entry. If an error is detected, I/O for the vector
55 is terminated and the function returns immediately. The residual count
56 indicates the number of entries for which the I/O either did not com‐
57 plete or was not initiated.
58
59
60 The number of entries in the I/O vector component of the scatter-gather
61 list is specified in the io_request_count field of the rsm_scat_gath_t
62 pointed to by sg_io. The io_request_count is valid if greater than 0
63 and less than or equal to RSM_MAX_SGIOREQS. If io_request_count is not
64 in the valid range, rsm_memseg_import_putv() and rsm_mem‐
65 seg_import_getv() returns RSMERR_BAD_SGIO.
66
67
68 Optionally, the scatter-gather list allows support for an implicit sig‐
69 nal post after the I/O for the entire vector has completed. This alle‐
70 viates the need to do an explicit signal post after ever I/O transfer
71 operation. The means of enabling the implicit signal post involves set‐
72 ting the flags field within the scatter-gather list to
73 RSM_IMPLICIT_SIGPOST. The flags field may also be set to
74 RSM_SIG_POST_NO_ACCUMULATE, which will be passed on to the signal post
75 operation when RSM_IMPLICIT_SIGPOST is set.
76
78 Upon successful completion, these functions return 0. Otherwise, an
79 error value is returned to indicate the error.
80
82 The rsm_memseg_import_putv() and rsm_memseg_import_getv() functions can
83 return the following errors:
84
85 RSMERR_BAD_SGIO
86
87 Invalid scatter-gather structure pointer.
88
89
90 RSMERR_BAD_SEG_HNDL
91
92 Invalid segment handle.
93
94
95 RSMERR_BAD_CTLR_HNDL
96
97 Invalid controller handle.
98
99
100 RSMERR_BAD_OFFSET
101
102 Invalid offset.
103
104
105 RSMERR_BAD_LENGTH
106
107 Invalid length.
108
109
110 RSMERR_BAD_ADDR
111
112 Bad address.
113
114
115 RSMERR_INSUFFICIENT_RESOURCES
116
117 Insufficient resources.
118
119
120 RSMERR_INTERRUPTED
121
122 The operation was interrupted by a signal.
123
124
125 RSMERR_PERM_DENIED
126
127 Permission denied.
128
129
130 RSMERR_BARRIER_FAILURE
131
132 I/O completion error.
133
134
135 RSMERR_REMOTE_NODE_UNREACHABLE
136
137 Remote node not reachable.
138
139
141 See attributes(5) for descriptions of the following attributes:
142
143
144
145
146 ┌─────────────────────────────┬─────────────────────────────┐
147 │ATTRIBUTE TYPE │ATTRIBUTE VALUE │
148 ├─────────────────────────────┼─────────────────────────────┤
149 │Interface Stability │Evolving │
150 ├─────────────────────────────┼─────────────────────────────┤
151 │MT-Level │MT-Safe │
152 └─────────────────────────────┴─────────────────────────────┘
153
155 rsm_create_localmemory_handle(3RSM), rsm_free_localmemory_handle(3RSM),
156 attributes(5)
157
158
159
160SunOS 5.11 12 Nov 2001 rsm_memseg_import_putv(3RSM)