Re: libports and interrupted RPCs

Michael Kelly <[email protected]>
Newsgroups gmane.linux.debian.ports.hurd
Message-ID <[email protected]>
On 18/09/2025 01:33, Samuel Thibault wrote:
>>        /* Don't remove 'cancel' from the cancellation list otherwise
>> 	 any future calls to this function would add it onto a new
>> 	 cancellation list resulting in pointless additional
>> 	 cancellation. The cancellation list pointers are safely
>> 	 managed when the RPC is completed.*/
> Are they really?
I believe so, yes.
> This seems really fragile pointer manipulation to me, even if it's
> alright now, later developers will possibly get it wrong. I'd be simpler

I don't see why it is more or less fragile than the current_rpcs list 
management. This new code acts quite similarly to the linking/unlinking 
performed by begin_rpc/end_rpc. The cancellation list links are added in 
ports_interrupt_rpcs and removed in end_rpc. If there was a need to 
apply this code change to the other instances of iteration around 
hurd_thread_cancel, then I would factorise this code to provide one 
common cancellation list linking function with the unlinking still 
managed by end_rpc.

The cancellation links have to be managed by end_rpc anyway to support 
the case that the RPC completes before the attempt is made to cancel in 
ports_interrupt_rpcs(). That is the biggest benefit in using the linked 
list rather than a localised array.

> to just remember that it's already canceled, and let end_rpc clear that
> at the same time as it unlinks the rpc_info from the port.

I'm sorry but I don't understand this part. Can you elaborate?

Regards,

Mike.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.