Lines Matching refs:path
117 * The work element to deliver path pending interrupts.
649 * @pathid: path identification number.
652 * Sever an iucv path to free up the pathid. Used internally.
680 * Function called after a path has been severed to find all remaining
689 * When a path is severed, the pathid can be reused immediately
806 * @path: address of iucv path structure
809 * @private: private data passed to interrupt handlers for this path
812 * external interrupt and now wishes to complete the IUCV communication path.
816 int iucv_path_accept(struct iucv_path *path, struct iucv_handler *handler,
830 parm->ctrl.ippathid = path->pathid;
831 parm->ctrl.ipmsglim = path->msglim;
834 parm->ctrl.ipflags1 = path->flags;
838 path->private = private;
839 path->msglim = parm->ctrl.ipmsglim;
840 path->flags = parm->ctrl.ipflags1;
850 * @path: address of iucv path structure
855 * @private: private data passed to interrupt handlers for this path
857 * This function establishes an IUCV path. Although the connect may complete
858 * successfully, you are not able to use the path until you receive an IUCV
863 int iucv_path_connect(struct iucv_path *path, struct iucv_handler *handler,
878 parm->ctrl.ipmsglim = path->msglim;
879 parm->ctrl.ipflags1 = path->flags;
897 path->pathid = parm->ctrl.ippathid;
898 path->msglim = parm->ctrl.ipmsglim;
899 path->flags = parm->ctrl.ipflags1;
900 path->handler = handler;
901 path->private = private;
902 list_add_tail(&path->list, &handler->paths);
903 iucv_path_table[path->pathid] = path;
918 * @path: address of iucv path structure
921 * This function temporarily suspends incoming messages on an IUCV path.
922 * You can later reactivate the path by invoking the iucv_resume function.
926 int iucv_path_quiesce(struct iucv_path *path, u8 *userdata)
940 parm->ctrl.ippathid = path->pathid;
950 * @path: address of iucv path structure
953 * This function resumes incoming messages on an IUCV path that has
958 int iucv_path_resume(struct iucv_path *path, u8 *userdata)
972 parm->ctrl.ippathid = path->pathid;
981 * @path: address of iucv path structure
984 * This function terminates an IUCV path.
988 int iucv_path_sever(struct iucv_path *path, u8 *userdata)
999 rc = iucv_sever_pathid(path->pathid, userdata);
1000 iucv_path_table[path->pathid] = NULL;
1001 list_del_init(&path->list);
1012 * @path: address of iucv path structure
1020 int iucv_message_purge(struct iucv_path *path, struct iucv_message *msg,
1033 parm->purge.ippathid = path->pathid;
1050 * @path: address of iucv path structure
1060 static int iucv_message_receive_iprmdata(struct iucv_path *path,
1095 * @path: address of iucv path structure
1110 int __iucv_message_receive(struct iucv_path *path, struct iucv_message *msg,
1117 return iucv_message_receive_iprmdata(path, msg, flags,
1127 parm->db.ippathid = path->pathid;
1143 * @path: address of iucv path structure
1158 int iucv_message_receive(struct iucv_path *path, struct iucv_message *msg,
1164 return iucv_message_receive_iprmdata(path, msg, flags,
1167 rc = __iucv_message_receive(path, msg, flags, buffer, size, residual);
1175 * @path: address of iucv path structure
1184 int iucv_message_reject(struct iucv_path *path, struct iucv_message *msg)
1196 parm->db.ippathid = path->pathid;
1209 * @path: address of iucv path structure
1222 int iucv_message_reply(struct iucv_path *path, struct iucv_message *msg,
1236 parm->dpl.ippathid = path->pathid;
1244 parm->db.ippathid = path->pathid;
1258 * @path: address of iucv path structure
1273 int __iucv_message_send(struct iucv_path *path, struct iucv_message *msg,
1287 parm->dpl.ippathid = path->pathid;
1296 parm->db.ippathid = path->pathid;
1312 * @path: address of iucv path structure
1327 int iucv_message_send(struct iucv_path *path, struct iucv_message *msg,
1333 rc = __iucv_message_send(path, msg, flags, srccls, buffer, size);
1341 * @path: address of iucv path structure
1358 int iucv_message_send2way(struct iucv_path *path, struct iucv_message *msg,
1373 parm->dpl.ippathid = path->pathid;
1374 parm->dpl.ipflags1 = path->flags; /* priority message */
1382 parm->db.ippathid = path->pathid;
1383 parm->db.ipflags1 = path->flags; /* priority message */
1425 struct iucv_path *path;
1429 /* New pathid, handler found. Create a new path struct. */
1431 path = iucv_path_alloc(ipp->ipmsglim, ipp->ipflags1, GFP_ATOMIC);
1432 if (!path)
1434 path->pathid = ipp->ippathid;
1435 iucv_path_table[path->pathid] = path;
1438 /* Call registered handler until one is found that wants the path. */
1443 * Add path to handler to allow a call to iucv_path_sever
1445 * an error remove the path from the handler again.
1447 list_add(&path->list, &handler->paths);
1448 path->handler = handler;
1449 if (!handler->path_pending(path, ipp->ipvmid, ipp->ipuser))
1451 list_del(&path->list);
1452 path->handler = NULL;
1454 /* No handler wanted the path. */
1455 iucv_path_table[path->pathid] = NULL;
1456 iucv_path_free(path);
1485 struct iucv_path *path = iucv_path_table[ipc->ippathid];
1487 if (path)
1488 path->flags = ipc->ipflags1;
1489 if (path && path->handler && path->handler->path_complete)
1490 path->handler->path_complete(path, ipc->ipuser);
1515 struct iucv_path *path = iucv_path_table[ips->ippathid];
1517 if (!path || !path->handler) /* Already severed */
1519 if (path->handler->path_severed)
1520 path->handler->path_severed(path, ips->ipuser);
1522 iucv_sever_pathid(path->pathid, NULL);
1523 iucv_path_table[path->pathid] = NULL;
1524 list_del(&path->list);
1525 iucv_path_free(path);
1551 struct iucv_path *path = iucv_path_table[ipq->ippathid];
1553 if (path && path->handler && path->handler->path_quiesced)
1554 path->handler->path_quiesced(path, ipq->ipuser);
1579 struct iucv_path *path = iucv_path_table[ipr->ippathid];
1581 if (path && path->handler && path->handler->path_resumed)
1582 path->handler->path_resumed(path, ipr->ipuser);
1610 struct iucv_path *path = iucv_path_table[imc->ippathid];
1613 if (path && path->handler && path->handler->message_complete) {
1621 path->handler->message_complete(path, &msg);
1655 struct iucv_path *path = iucv_path_table[imp->ippathid];
1658 if (path && path->handler && path->handler->message_pending) {
1668 path->handler->message_pending(path, &msg);
1719 * This work function loops over the queue of path pending irq blocks