1. A tool comprising:
a distal portion and a proximal portion;
an articulation mechanism for manipulating angular orientation of the distal portion, the articulation mechanism comprising a pair of links, the pair comprising a proximal link on the proximal portion of the tool and a distal link on the distal portion of the tool, the mechanism adapted such that movement of the proximal link causes corresponding relative movement of the distal link; and
an articulation lock having an engaged position and a disengaged position, wherein in the engaged position the articulation lock impedes movement of the proximal link and corresponding relative movement of the distal link.
2. The tool of claim 1 wherein the tool is a surgical or diagnostic tool.
3. The tool of claim 1 wherein the impeding of movement comprises a partial impeding of movement.
4. The tool of claim 1 wherein the impeding of movement comprises a substantial blocking of movement.
5. The tool of claim 1 wherein the impeding of movement of the proximal link causes the impeding of the corresponding relative movement of the distal link.
6. The tool of claim 1 wherein the articulation lock comprises a link friction adjusting mechanism, the mechanism configured such that when the lock is engaged friction is increased, the friction impeding movement of the links.
7. The tool of claim 6, wherein the friction can partially impede movement such that link movement is malleable.
8. The tool of claim 6, wherein the friction can substantially block movement of the links.
9. The tool of claim 6 wherein the friction can substantially block movement of the links from an articulated configuration.
10. The tool of claim 1 wherein the articulation mechanism comprises tension load bearing members connecting the links and the articulation lock comprises a member tension adjusting mechanism.
11. The tool of claim 10 wherein the tension load bearing members comprise cables.
12. The tool of claim 10 wherein increasing tension on the members increases friction on link surfaces that impedes link movement.
13. The tool of claim 1 wherein the articulation lock comprises a rigid element which, when the lock is engaged, is disposed such that it extends from a point proximal to the proximal link to a point distal to the proximal link.
14. The tool of claim 1 wherein the articulation lock comprises a malleable element, which when the lock is engaged, is disposed such that it extends from a point proximal to the proximal link to a point distal to the proximal link.
15. The tool of claim 14 wherein the lock when engaged can lock the links in an articulated configuration.
16. The tool of claim 1 further comprising an end effector disposed at the distal portion.
17. The tool of claim 16 wherein the end effector comprises a surgical or diagnostic mechanism.
18. The tool of claim 1 further comprising an end effector actuator disposed at the proximal portion.
19. The tool of claim 1 further comprising a handle at a proximal end of the tool, the handle comprising an end effector actuator.
20. The tool of claim 1 wherein said corresponding relative movement of the distal link is reciprocal to the movement of the proximal link.
21. The tool of claim 1 wherein said corresponding relative movement of the distal link mirrors the movement of the proximal link.
22. The tool of claim 1 wherein the articulation mechanism comprises multiple pairs of links, each pair including a proximal link on the proximal portion of the tool and a distal link on the distal portion of the tool, such that movement of the proximal link causes corresponding relative movement of the distal link.
23. The tool of claim 1 further comprising:
an end effector disposed at the distal portion;
an end effector actuator disposed at the proximal portion;
a shaft disposed between the end effector and the end effector actuator;
wherein movement of the distal link causes angular movement of the end effector with respect to the shaft.
24. The tool of claim 23 wherein the articulation mechanism comprises multiple pairs of links, each pair including a proximal link on the proximal portion of the tool and a distal link on the distal portion of the tool, such that movement of the proximal link causes corresponding relative movement of the distal link and angular movement of the end effector with respect to the shaft.
25. The tool of claim 24 wherein the articulation mechanism comprises tension load bearing members connecting the links and the articulation lock comprises a member tension adjusting mechanism.
26. The tool of claim 25 wherein the tension load bearing members comprise cables.
27. The tool of claim 25 wherein the member tension adjusting mechanism comprises a threaded member.
28. The tool of claim 25, wherein the member tension adjusting mechanism is disposed between the proximal and distal links.
29. The tool of claim 25, wherein the member tension adjusting mechanism is disposed proximal to the most proximal link.
30. The tool of claim 25 wherein the member tension adjusting mechanism comprises a locking lever, the lever configured to increase tension on the cables by lengthening the shaft.
31. The tool of claim 25 wherein the member tension adjusting mechanism varies the distance between the proximal and distal links.
32. The tool of claim 31 wherein varying the distance between proximal and distal links varies friction that resists movement between the links.
33. The tool of claim 25 wherein the articulation lock can lock the links in an articulated configuration.
34. The tool of claim 24 wherein the articulation lock comprises a locking rod disposed in a channel formed in the proximal links.
35. The tool of claim 34 wherein the locking rod is rigid.
36. The tool of claim 34 wherein the locking rod is malleable.
37. The tool of claim 36 wherein the locking rod can lock the links in an articulated configuration.
38. The tool of claim 24 wherein the articulation lock comprises a locking sleeve fitted over the multiple proximal links.
39. The tool of claim 38 wherein the locking sleeve is malleable.
40. The tool of claim 24 wherein the articulation lock comprises a rigid element which, when the lock is engaged, is disposed such that it extends from a point proximal to the most proximal proximal link to a point distal to the most distal proximal link.
41. The tool of claim 40 wherein the rigid element is disposed adjacent to the proximal links when in the engaged position.
42. The tool of claim 40 wherein the rigid element comprises a sleeve at least partially surrounding the proximal links when in the engaged position.
43. The tool of claim 40 wherein the sleeve is slidably mounted on the tool.
44. The tool of claim 40 wherein the sleeve is disposed distal to proximal links when in the disengaged position.
45. A method of using a tool, the tool comprising
a distal portion and a proximal portion,
an articulation mechanism for manipulating angular orientation of the distal portion, the articulation mechanism comprising at least one pair of links, the pair comprising a proximal link on the proximal portion and a distal link on the distal portion, the mechanism adapted such that movement of the proximal link causes corresponding relative movement of the distal link and the distal portion of the tool, and
an articulation lock having a disengaged position wherein the links move freely, and an engaged position wherein the lock impedes movement of the proximal link and corresponding relative movement of the distal link,
the method comprising changing the position of the lock.
46. The method of claim 45 wherein the tool is a medical tool configured for surgical or diagnostic methods.
47. The method of claim 45 wherein the tool further comprises an end effector disposed at the distal portion of the tool, such that movement of the distal portion of the tool moves the end effector.
48. The method of claim 45 wherein the tool further comprises a handle with an end effector actuator disposed at the proximal portion of the tool, such that moving the end effector actuator causes moving of the proximal link.
49. The method of claim 45 wherein the tool further comprises an end effector disposed at the distal portion; an end effector actuator disposed at the proximal portion; a shaft disposed between the end effector and the end effector actuator; wherein movement of the distal link causes angular movement of the end effector with respect to the shaft.
50. The method of claim 45 wherein the lock is in a disengaged position, and wherein the changing the position of the lock comprises engaging the lock.
51. The method of claim 50 wherein the articulation mechanism comprises tension load bearing members connecting the links and wherein the articulation lock comprises a member tension adjusting mechanism configured to increase member tension when engaging the lock.
52. The method of claim 51 wherein the articulation mechanism was in an articulated configuration when the lock was engaged, the articulated configuration being maintained.
53. The method of claim 51 wherein the tension on the members is such that movement is partially impeded and the articulation mechanism becomes malleable.
54. The method of claim 51 wherein the tension on the members is such that movement of the articulation mechanism is substantially blocked.
55. The method of claim 51 wherein the lock comprises a threaded element.
56. The method of claim 51 wherein the lock comprises a lever mechanism configured to adjust the length of the shaft.
57. The method of claim 50 wherein the articulation lock comprises a rigid element, and wherein engaging the lock comprises placing the rigid element where it extends from a point proximal to the proximal link to a point distal to the proximal link, and wherein engaging the lock substantially blocks movement of the distal portion.
58. The method of claim 57 wherein the rigid element is a rod.
59. The method of claim 57 wherein the rigid element is a sleeve.
60. The method of claim 50 wherein the articulation lock comprises a malleable element, and wherein engaging the lock comprises placing the lock in a position where it extends from a point proximal to the proximal link to a point distal to the proximal link.
61. The method of claim 60 wherein the articulation mechanism was in an articulated configuration when the lock was engaged, the articulated configuration being maintained.
62. The method of claim 60 wherein the malleable element is a rod.
63. The method of claim 60 wherein the malleable element is a sleeve.
64. The method of claim 45 wherein the lock is in an engaged position, and wherein the changing the position of the lock comprises disengaging the lock.
65. The method of claim 64 wherein the articulation mechanism comprises tension load bearing members connecting the links and wherein the articulation lock comprises a member tension adjusting mechanism configured to decrease member tension when disengaging the lock.
66. The method of claim 65 wherein the tension load bearing members comprise cables.
67. The method of claim 65 wherein the member tension adjusting mechanism comprises a threaded member for decreasing tension in the members.
68. The method of claim 65 wherein the member tension adjusting mechanism comprises a lever configured to adjust the length of the shaft.
69. The method of claim 64 wherein the lock comprises a rigid element, and wherein disengaging the lock comprises placing the rigid element at a location other than where it extends from a point proximal to the proximal link to a point distal to the proximal link.
70. The method of claim 64 wherein the lock comprises a malleable element, and wherein disengaging the lock comprises placing the malleable element at a location other than where it extends from a point proximal to the proximal link to a point distal to the proximal link.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method for conditional execution of a remote direct memory access (RDMA) write, the method comprising:
receiving, by a host channel adapter, at least one message comprising an atomic operation and the RDMA write from a requester system, wherein the RDMA write is to write to a memory location on a host connected to the host channel adapter;
obtaining, by the host channel adapter, a descriptor corresponding to the RDMA write;
determining, from the descriptor, that the RDMA write is a conditional RDMA write conditioned on a successful execution of the atomic operation;
queuing, based on determining that the RDMA write is the conditional RDMA write, the conditional RDMA write to be conditionally executed based on a success indicator of the atomic operation;
executing, after queuing the conditional RDMA write, the atomic operation, wherein execution of the atomic operation is successful;
maintaining, by the host channel adapter, a state of the atomic operation by setting the success indicator to indicate the successful execution of the atomic operation when execution of the atomic operation is successfully completed; and
in response to setting the success indicator to indicate the successful execution, executing, by the host channel adapter, the conditional RDMA write to write to the memory location on the host.
2. The method of claim 1, wherein the RDMA write is directed to a queue pair, and wherein queuing the conditional RDMA write comprises queuing the RDMA write to execute only after all outstanding atomic operations for the queue pair execute.
3. The method of claim 1, further comprising:
obtaining, by the host channel adapter, the descriptor from the host.
4. The method of claim 1, wherein the atomic operation is a compare-and-swap operation, wherein successful execution is when (1) a compare portion of the compare-and-swap operation determines that a compare value of the compare-and-swap operation is equal to a first version number and (2) a swap portion of the compare-and-swap operation is executed to change the first version number to a new version number specified in the compare-and-swap operation.
5. The method of claim 4, further comprising:
performing a first RDMA read of the memory location to confirm that a consistent copy of the memory location is obtained; and
performing a second RDMA read of the memory location to confirm that the atomic operation resulted in the consistent copy of the memory location,
wherein the atomic operation is executed in response to determining that the consistent copy of the memory location is obtained.
6. The method of claim 5, wherein the consistent copy is confirmed when the first version number preceding the memory location is equal to a second version number following the memory location.
7. The method of claim 1, wherein the atomic operation is included in a first packet and the RDMA write is included in a second packet, and wherein the first packet is queued on a receive queue of a queue pair before the second packet.
8. A responder communication adapter for conditional execution of a remote direct memory access (RDMA) write comprising:
a network port configured to:
receive at least one message comprising a request to perform an atomic operation and the RDMA write from a requester system, wherein the RDMA write is to write to a memory location on a host connected to the responder communication adapter;
a responder processing logic connected to the network port and configured to:
obtain a descriptor corresponding to the RDMA write;
determine, from the descriptor, that the RDMA write is a conditional RDMA write conditioned on a successful execution of the atomic operation;
queue, based on determining that the RDMA write is the conditional RDMA write, the conditional RDMA write to be conditionally executed based on a success indicator of the atomic operation;
execute, after queuing the conditional RDMA write, the atomic operation resulting in the successful execution;
maintain a state of the atomic operation by setting the success indicator to indicate the successful execution of the atomic operation when execution of the atomic operation is successfully completed; and
in response to setting the success indicator to indicate the successful execution, execute the conditional RDMA write to write to the memory location on the host.
9. The responder communication adapter of claim 8, wherein the responder processing logic comprises:
a descriptor fetch module for obtaining the descriptor.
10. The responder communication adapter of claim 8, wherein the responder processing logic comprises:
a DMA validation module configured to:
determine the state of the atomic operation by accessing the success indicator; and
execute the conditional RDMA write only after determining that the state of the atomic operation is successfully completed.
11. The responder communication adapter of claim 8, wherein the responder communication adapter is a host channel adapter.
12. The responder communication adapter of claim 8, wherein the success indicator is a success bit, and wherein the success indicator is set to indicate successful completion when the success bit is set to true.
13. The responder communication adapter of claim 12, wherein the atomic operation is a compare-and-swap operation.
14. The responder communication adapter of claim 13, wherein the success bit is set to true when (1) a compare portion of the compare-and-swap operation determines that a compare value of the compare-and-swap operation is equal to a first version number and (2) a swap portion of the compare-and-swap operation is executed to change the first version number to a new version number specified in the compare-and-swap operation.
15. The responder communication adapter of claim 8, wherein the atomic operation is included in a first packet and the RDMA write is included in a second packet, and wherein the first packet is queued on a receive queue of a queue pair before the second packet.
16. A non-transitory computer readable medium storing instructions for conditional execution of a remote direct memory access (RDMA) write, the instructions comprising functionality for causing a computer system to:
receive at least one message comprising an atomic operation and the RDMA write from a requester system, wherein the RDMA write is to write to a memory location on a host connected to a host channel adapter;
obtain a descriptor corresponding to the RDMA write;
determine, from the descriptor, that the RDMA write is a conditional RDMA write conditioned on a successful execution of the atomic operation;
queue, based on determining that the RDMA write is the conditional RDMA write, the conditional RDMA write to be conditionally executed based on a success indicator of the atomic operation;
execute, after queuing the conditional RDMA write, the atomic operation resulting in the successful execution;
maintain a state of the atomic operation by setting the success indicator to indicate the successful execution of the atomic operation when execution of the atomic operation is successfully completed; and
in response to setting the success indicator to indicate the successful execution, execute the conditional RDMA write to write to the memory location on the host.
17. The non-transitory computer readable medium of claim 16, wherein the instructions further comprise functionality to:
perform a first RDMA read of the memory location to confirm that a consistent copy of the memory location is obtained; and
perform a second RDMA read of the memory location to confirm that the atomic operation resulted in the consistent copy of the memory location,
wherein the atomic operation is executed in response to determining that the consistent copy of the memory location is obtained.
18. The non-transitory computer readable medium of claim 17, wherein the consistent copy is confirmed when a first version number preceding the memory location is equal to a second version number following the memory location.
19. The non-transitory computer readable medium of claim 18, wherein the atomic operation is a compare-and-swap operation, wherein successfully completing execution is when (1) a compare portion of the compare-and-swap operation determines that a compare value of the compare-and-swap operation is equal to the first version number and (2) a swap portion of the compare-and-swap operation is executed to change the first version number to a new version number specified in the compare-and-swap operation.
20. The non-transitory computer readable medium of claim 16, wherein the instructions further comprise functionality to:
obtain the descriptor from the host.