Lines Matching +full:data +full:- +full:path
1 /* SPDX-License-Identifier: GPL-2.0 */
20 * www.vm.ibm.com/pubs, manual # SC24-6084
23 * - All positive return codes including zero are reflected back
26 * - Return Code of:
27 * -EINVAL: Invalid value
28 * -ENOMEM: storage allocation failed
33 #include <asm/dma-types.h>
44 * path until an iucv_path_resume is issued.
46 * IUCV_IPBUFLST Indicates that an address list is used for the message data.
54 * IUCV_IPANSLST Indicates that an address list is used for the reply data.
74 * Inside the array may be 31- bit addresses and 31-bit lengths.
94 * pathid: 16 bit path identification
96 * flags: properties of the path: IPRMDATA, IPQUSCE, IPPRTY
98 * private: private information of the handler associated with the path
99 * list: list_head for the iucv_handler path list.
142 * type 0x01 has been received. The base code allocates a path
143 * structure and "asks" the handler if this path belongs to the
144 * handler. To accept the path the path_pending function needs
154 * type 0x02 has been received for a path that has been established
162 * his end of the communication path. The path still exists and
164 * shuts down the other end of the path as well.
170 * the path. Delivery of messages is stopped until iucv_path_resume
177 * the path.
205 * Returns: 0 on success, -ENOMEM if the memory allocation for the pathid
206 * table failed, or -EIO if IUCV_DECLARE_BUFFER failed on all cpus.
225 * Allocate a new path structure for use with iucv_connect.
228 * path structure.
232 struct iucv_path *path; in iucv_path_alloc() local
234 path = kzalloc(sizeof(struct iucv_path), gfp); in iucv_path_alloc()
235 if (path) { in iucv_path_alloc()
236 path->msglim = msglim; in iucv_path_alloc()
237 path->flags = flags; in iucv_path_alloc()
239 return path; in iucv_path_alloc()
244 * @path: address of iucv path structure
246 * Frees a path structure.
248 static inline void iucv_path_free(struct iucv_path *path) in iucv_path_free() argument
250 kfree(path); in iucv_path_free()
255 * @path: address of iucv path structure
257 * @userdata: 16 bytes of data reflected to the communication partner
258 * @private: private data passed to interrupt handlers for this path
261 * external interrupt and now wishes to complete the IUCV communication path.
265 int iucv_path_accept(struct iucv_path *path, struct iucv_handler *handler,
270 * @path: address of iucv path structure
272 * @userid: 8-byte user identification
273 * @system: 8-byte target system identification
274 * @userdata: 16 bytes of data reflected to the communication partner
275 * @private: private data passed to interrupt handlers for this path
277 * This function establishes an IUCV path. Although the connect may complete
278 * successfully, you are not able to use the path until you receive an IUCV
283 int iucv_path_connect(struct iucv_path *path, struct iucv_handler *handler,
289 * @path: address of iucv path structure
290 * @userdata: 16 bytes of data reflected to the communication partner
292 * This function temporarily suspends incoming messages on an IUCV path.
293 * You can later reactivate the path by invoking the iucv_resume function.
297 int iucv_path_quiesce(struct iucv_path *path, u8 *userdata);
301 * @path: address of iucv path structure
302 * @userdata: 16 bytes of data reflected to the communication partner
304 * This function resumes incoming messages on an IUCV path that has
309 int iucv_path_resume(struct iucv_path *path, u8 *userdata);
313 * @path: address of iucv path structure
314 * @userdata: 16 bytes of data reflected to the communication partner
316 * This function terminates an IUCV path.
320 int iucv_path_sever(struct iucv_path *path, u8 *userdata);
324 * @path: address of iucv path structure
332 int iucv_message_purge(struct iucv_path *path, struct iucv_message *msg,
337 * @path: address of iucv path structure
340 * @buffer: address of data buffer or address of struct iucv_array
341 * @size: length of data buffer
352 int iucv_message_receive(struct iucv_path *path, struct iucv_message *msg,
357 * @path: address of iucv path structure
360 * @buffer: address of data buffer or address of struct iucv_array
361 * @size: length of data buffer
372 int __iucv_message_receive(struct iucv_path *path, struct iucv_message *msg,
378 * @path: address of iucv path structure
387 int iucv_message_reject(struct iucv_path *path, struct iucv_message *msg);
391 * @path: address of iucv path structure
394 * @reply: address of data buffer or address of struct iucv_array
395 * @size: length of reply data buffer
397 * This function responds to the two-way messages that you receive. You
399 * pathid, msgid, and trgcls. Prmmsg signifies the data is moved into
404 int iucv_message_reply(struct iucv_path *path, struct iucv_message *msg,
409 * @path: address of iucv path structure
413 * @buffer: address of data buffer or address of struct iucv_array
416 * This function transmits data to another application. Data to be
417 * transmitted is in a buffer and this is a one-way message and the
424 int iucv_message_send(struct iucv_path *path, struct iucv_message *msg,
429 * @path: address of iucv path structure
433 * @buffer: address of data buffer or address of struct iucv_array
436 * This function transmits data to another application. Data to be
437 * transmitted is in a buffer and this is a one-way message and the
444 int __iucv_message_send(struct iucv_path *path, struct iucv_message *msg,
449 * @path: address of iucv path structure
454 * @buffer: address of data buffer or address of struct iucv_array
459 * This function transmits data to another application. Data to be
466 int iucv_message_send2way(struct iucv_path *path, struct iucv_message *msg,
471 int (*message_receive)(struct iucv_path *path, struct iucv_message *msg,
473 int (*__message_receive)(struct iucv_path *path,
476 int (*message_reply)(struct iucv_path *path, struct iucv_message *msg,
478 int (*message_reject)(struct iucv_path *path, struct iucv_message *msg);
479 int (*message_send)(struct iucv_path *path, struct iucv_message *msg,
481 int (*__message_send)(struct iucv_path *path, struct iucv_message *msg,
483 int (*message_send2way)(struct iucv_path *path,
486 int (*message_purge)(struct iucv_path *path, struct iucv_message *msg,
488 int (*path_accept)(struct iucv_path *path, struct iucv_handler *handler,
490 int (*path_connect)(struct iucv_path *path,
493 int (*path_quiesce)(struct iucv_path *path, u8 userdata[16]);
494 int (*path_resume)(struct iucv_path *path, u8 userdata[16]);
495 int (*path_sever)(struct iucv_path *path, u8 userdata[16]);