Lines Matching refs:path

117  * The work element to deliver path pending interrupts.
651 * @pathid: path identification number.
654 * Sever an iucv path to free up the pathid. Used internally.
682 * Function called after a path has been severed to find all remaining
691 * When a path is severed, the pathid can be reused immediately
808 * @path: address of iucv path structure
811 * @private: private data passed to interrupt handlers for this path
814 * external interrupt and now wishes to complete the IUCV communication path.
818 int iucv_path_accept(struct iucv_path *path, struct iucv_handler *handler,
832 parm->ctrl.ippathid = path->pathid;
833 parm->ctrl.ipmsglim = path->msglim;
836 parm->ctrl.ipflags1 = path->flags;
840 path->private = private;
841 path->msglim = parm->ctrl.ipmsglim;
842 path->flags = parm->ctrl.ipflags1;
852 * @path: address of iucv path structure
857 * @private: private data passed to interrupt handlers for this path
859 * This function establishes an IUCV path. Although the connect may complete
860 * successfully, you are not able to use the path until you receive an IUCV
865 int iucv_path_connect(struct iucv_path *path, struct iucv_handler *handler,
880 parm->ctrl.ipmsglim = path->msglim;
881 parm->ctrl.ipflags1 = path->flags;
899 path->pathid = parm->ctrl.ippathid;
900 path->msglim = parm->ctrl.ipmsglim;
901 path->flags = parm->ctrl.ipflags1;
902 path->handler = handler;
903 path->private = private;
904 list_add_tail(&path->list, &handler->paths);
905 iucv_path_table[path->pathid] = path;
920 * @path: address of iucv path structure
923 * This function temporarily suspends incoming messages on an IUCV path.
924 * You can later reactivate the path by invoking the iucv_resume function.
928 int iucv_path_quiesce(struct iucv_path *path, u8 *userdata)
942 parm->ctrl.ippathid = path->pathid;
952 * @path: address of iucv path structure
955 * This function resumes incoming messages on an IUCV path that has
960 int iucv_path_resume(struct iucv_path *path, u8 *userdata)
974 parm->ctrl.ippathid = path->pathid;
983 * @path: address of iucv path structure
986 * This function terminates an IUCV path.
990 int iucv_path_sever(struct iucv_path *path, u8 *userdata)
1001 rc = iucv_sever_pathid(path->pathid, userdata);
1002 iucv_path_table[path->pathid] = NULL;
1003 list_del_init(&path->list);
1014 * @path: address of iucv path structure
1022 int iucv_message_purge(struct iucv_path *path, struct iucv_message *msg,
1035 parm->purge.ippathid = path->pathid;
1052 * @path: address of iucv path structure
1062 static int iucv_message_receive_iprmdata(struct iucv_path *path,
1097 * @path: address of iucv path structure
1112 int __iucv_message_receive(struct iucv_path *path, struct iucv_message *msg,
1119 return iucv_message_receive_iprmdata(path, msg, flags,
1129 parm->db.ippathid = path->pathid;
1145 * @path: address of iucv path structure
1160 int iucv_message_receive(struct iucv_path *path, struct iucv_message *msg,
1166 return iucv_message_receive_iprmdata(path, msg, flags,
1169 rc = __iucv_message_receive(path, msg, flags, buffer, size, residual);
1177 * @path: address of iucv path structure
1186 int iucv_message_reject(struct iucv_path *path, struct iucv_message *msg)
1198 parm->db.ippathid = path->pathid;
1211 * @path: address of iucv path structure
1224 int iucv_message_reply(struct iucv_path *path, struct iucv_message *msg,
1238 parm->dpl.ippathid = path->pathid;
1246 parm->db.ippathid = path->pathid;
1260 * @path: address of iucv path structure
1275 int __iucv_message_send(struct iucv_path *path, struct iucv_message *msg,
1289 parm->dpl.ippathid = path->pathid;
1298 parm->db.ippathid = path->pathid;
1314 * @path: address of iucv path structure
1329 int iucv_message_send(struct iucv_path *path, struct iucv_message *msg,
1335 rc = __iucv_message_send(path, msg, flags, srccls, buffer, size);
1343 * @path: address of iucv path structure
1361 int iucv_message_send2way(struct iucv_path *path, struct iucv_message *msg,
1376 parm->dpl.ippathid = path->pathid;
1377 parm->dpl.ipflags1 = path->flags; /* priority message */
1385 parm->db.ippathid = path->pathid;
1386 parm->db.ipflags1 = path->flags; /* priority message */
1428 struct iucv_path *path;
1432 /* New pathid, handler found. Create a new path struct. */
1434 path = iucv_path_alloc(ipp->ipmsglim, ipp->ipflags1, GFP_ATOMIC);
1435 if (!path)
1437 path->pathid = ipp->ippathid;
1438 iucv_path_table[path->pathid] = path;
1441 /* Call registered handler until one is found that wants the path. */
1446 * Add path to handler to allow a call to iucv_path_sever
1448 * an error remove the path from the handler again.
1450 list_add(&path->list, &handler->paths);
1451 path->handler = handler;
1452 if (!handler->path_pending(path, ipp->ipvmid, ipp->ipuser))
1454 list_del(&path->list);
1455 path->handler = NULL;
1457 /* No handler wanted the path. */
1458 iucv_path_table[path->pathid] = NULL;
1459 iucv_path_free(path);
1488 struct iucv_path *path = iucv_path_table[ipc->ippathid];
1490 if (path)
1491 path->flags = ipc->ipflags1;
1492 if (path && path->handler && path->handler->path_complete)
1493 path->handler->path_complete(path, ipc->ipuser);
1518 struct iucv_path *path = iucv_path_table[ips->ippathid];
1520 if (!path || !path->handler) /* Already severed */
1522 if (path->handler->path_severed)
1523 path->handler->path_severed(path, ips->ipuser);
1525 iucv_sever_pathid(path->pathid, NULL);
1526 iucv_path_table[path->pathid] = NULL;
1527 list_del(&path->list);
1528 iucv_path_free(path);
1554 struct iucv_path *path = iucv_path_table[ipq->ippathid];
1556 if (path && path->handler && path->handler->path_quiesced)
1557 path->handler->path_quiesced(path, ipq->ipuser);
1582 struct iucv_path *path = iucv_path_table[ipr->ippathid];
1584 if (path && path->handler && path->handler->path_resumed)
1585 path->handler->path_resumed(path, ipr->ipuser);
1613 struct iucv_path *path = iucv_path_table[imc->ippathid];
1616 if (path && path->handler && path->handler->message_complete) {
1624 path->handler->message_complete(path, &msg);
1660 struct iucv_path *path = iucv_path_table[imp->ippathid];
1663 if (path && path->handler && path->handler->message_pending) {
1673 path->handler->message_pending(path, &msg);
1724 * This work function loops over the queue of path pending irq blocks