Lines Matching full:path

154  * The work element to deliver path pending interrupts.
699 * @pathid: path identification number.
702 * Sever an iucv path to free up the pathid. Used internally.
730 * Function called after a path has been severed to find all remaining
739 * When a path is severed, the pathid can be reused immediately
856 * @path: address of iucv path structure
859 * @private: private data passed to interrupt handlers for this path
862 * external interrupt and now wishes to complete the IUCV communication path.
866 int iucv_path_accept(struct iucv_path *path, struct iucv_handler *handler,
880 parm->ctrl.ippathid = path->pathid;
881 parm->ctrl.ipmsglim = path->msglim;
884 parm->ctrl.ipflags1 = path->flags;
888 path->private = private;
889 path->msglim = parm->ctrl.ipmsglim;
890 path->flags = parm->ctrl.ipflags1;
900 * @path: address of iucv path structure
905 * @private: private data passed to interrupt handlers for this path
907 * This function establishes an IUCV path. Although the connect may complete
908 * successfully, you are not able to use the path until you receive an IUCV
913 int iucv_path_connect(struct iucv_path *path, struct iucv_handler *handler,
928 parm->ctrl.ipmsglim = path->msglim;
929 parm->ctrl.ipflags1 = path->flags;
947 path->pathid = parm->ctrl.ippathid;
948 path->msglim = parm->ctrl.ipmsglim;
949 path->flags = parm->ctrl.ipflags1;
950 path->handler = handler;
951 path->private = private;
952 list_add_tail(&path->list, &handler->paths);
953 iucv_path_table[path->pathid] = path;
968 * @path: address of iucv path structure
971 * This function temporarily suspends incoming messages on an IUCV path.
972 * You can later reactivate the path by invoking the iucv_resume function.
976 int iucv_path_quiesce(struct iucv_path *path, u8 *userdata)
990 parm->ctrl.ippathid = path->pathid;
1000 * @path: address of iucv path structure
1003 * This function resumes incoming messages on an IUCV path that has
1008 int iucv_path_resume(struct iucv_path *path, u8 *userdata)
1022 parm->ctrl.ippathid = path->pathid;
1031 * @path: address of iucv path structure
1034 * This function terminates an IUCV path.
1038 int iucv_path_sever(struct iucv_path *path, u8 *userdata)
1049 rc = iucv_sever_pathid(path->pathid, userdata);
1050 iucv_path_table[path->pathid] = NULL;
1051 list_del_init(&path->list);
1062 * @path: address of iucv path structure
1070 int iucv_message_purge(struct iucv_path *path, struct iucv_message *msg,
1083 parm->purge.ippathid = path->pathid;
1100 * @path: address of iucv path structure
1110 static int iucv_message_receive_iprmdata(struct iucv_path *path,
1144 * @path: address of iucv path structure
1159 int __iucv_message_receive(struct iucv_path *path, struct iucv_message *msg,
1166 return iucv_message_receive_iprmdata(path, msg, flags,
1176 parm->db.ippathid = path->pathid;
1192 * @path: address of iucv path structure
1207 int iucv_message_receive(struct iucv_path *path, struct iucv_message *msg,
1213 return iucv_message_receive_iprmdata(path, msg, flags,
1216 rc = __iucv_message_receive(path, msg, flags, buffer, size, residual);
1224 * @path: address of iucv path structure
1233 int iucv_message_reject(struct iucv_path *path, struct iucv_message *msg)
1245 parm->db.ippathid = path->pathid;
1258 * @path: address of iucv path structure
1271 int iucv_message_reply(struct iucv_path *path, struct iucv_message *msg,
1285 parm->dpl.ippathid = path->pathid;
1293 parm->db.ippathid = path->pathid;
1307 * @path: address of iucv path structure
1322 int __iucv_message_send(struct iucv_path *path, struct iucv_message *msg,
1336 parm->dpl.ippathid = path->pathid;
1345 parm->db.ippathid = path->pathid;
1361 * @path: address of iucv path structure
1376 int iucv_message_send(struct iucv_path *path, struct iucv_message *msg,
1382 rc = __iucv_message_send(path, msg, flags, srccls, buffer, size);
1390 * @path: address of iucv path structure
1408 int iucv_message_send2way(struct iucv_path *path, struct iucv_message *msg,
1423 parm->dpl.ippathid = path->pathid;
1424 parm->dpl.ipflags1 = path->flags; /* priority message */
1432 parm->db.ippathid = path->pathid;
1433 parm->db.ipflags1 = path->flags; /* priority message */
1475 struct iucv_path *path;
1479 /* New pathid, handler found. Create a new path struct. */
1481 path = iucv_path_alloc(ipp->ipmsglim, ipp->ipflags1, GFP_ATOMIC);
1482 if (!path)
1484 path->pathid = ipp->ippathid;
1485 iucv_path_table[path->pathid] = path;
1488 /* Call registered handler until one is found that wants the path. */
1493 * Add path to handler to allow a call to iucv_path_sever
1495 * an error remove the path from the handler again.
1497 list_add(&path->list, &handler->paths);
1498 path->handler = handler;
1499 if (!handler->path_pending(path, ipp->ipvmid, ipp->ipuser))
1501 list_del(&path->list);
1502 path->handler = NULL;
1504 /* No handler wanted the path. */
1505 iucv_path_table[path->pathid] = NULL;
1506 iucv_path_free(path);
1535 struct iucv_path *path = iucv_path_table[ipc->ippathid];
1537 if (path)
1538 path->flags = ipc->ipflags1;
1539 if (path && path->handler && path->handler->path_complete)
1540 path->handler->path_complete(path, ipc->ipuser);
1565 struct iucv_path *path = iucv_path_table[ips->ippathid];
1567 if (!path || !path->handler) /* Already severed */
1569 if (path->handler->path_severed)
1570 path->handler->path_severed(path, ips->ipuser);
1572 iucv_sever_pathid(path->pathid, NULL);
1573 iucv_path_table[path->pathid] = NULL;
1574 list_del(&path->list);
1575 iucv_path_free(path);
1601 struct iucv_path *path = iucv_path_table[ipq->ippathid];
1603 if (path && path->handler && path->handler->path_quiesced)
1604 path->handler->path_quiesced(path, ipq->ipuser);
1629 struct iucv_path *path = iucv_path_table[ipr->ippathid];
1631 if (path && path->handler && path->handler->path_resumed)
1632 path->handler->path_resumed(path, ipr->ipuser);
1660 struct iucv_path *path = iucv_path_table[imc->ippathid];
1663 if (path && path->handler && path->handler->message_complete) {
1671 path->handler->message_complete(path, &msg);
1707 struct iucv_path *path = iucv_path_table[imp->ippathid];
1710 if (path && path->handler && path->handler->message_pending) {
1720 path->handler->message_pending(path, &msg);
1771 * This work function loops over the queue of path pending irq blocks
1827 /* Path pending interrupt. */