From: Samuel Thibault <[email protected]>
To: "Roy Marples"<[email protected]>
Cc: ""Joan Lledó""<[email protected]>, "bug-hurd"<[email protected]>, 
"martin-ericracine"<[email protected]>
Date: Fri, 12 Jun 2026 00:53:48 +0100
Subject: Re: Guidance to implement io_select on network devices

 > Hello, 
 >  
 > Roy Marples, le jeu. 11 juin 2026 09:44:50 +0100, a ecrit: 
 > > From: Samuel Thibault <[email protected]> 
 > >  > Roy Marples, le dim. 07 juin 2026 18:55:40 +0100, a ecrit: 
 > >  > > I really dislike the small timeout just to add a cancellation point 
 > > as it means 
 > >  > > there is a lot of context switching going on just because of this. 
 > >  > 
 > >  > Why the small timeout? doesn't cancellation interrupt mach_msg with an 
 > >  > infinite timeout, provided that we pass MACH_RCV_INTERRUPT. If not, it 
 > >  > rather looks to me like a bug to be fixed. 
 > > 
 > > mach_msg is NOT a pthreads cancellation point when passed 
 > > MACH_RCV_INTERRUPT. 
 > > I would agree this is a bug that should be fixed. 
 > > 
 > > The workaround for the time being is to set pthreads async cancellation 
 > > but disable 
 > > cancellation around routines that manipulate resources - such as mutex 
 > > lock/unlock 
 > > and mallocing a new msg buffer. 
 >  
 > One can set async mode only around the mach_msg call for instance. 

That would be an option as well, but the more I learned about pthreads for the 
I lean
towards marking critical sections of my code as non cancellable.

 > > The big benefit for me NOT using libpcap for this is that I discovered 
 > > that dhcpcd's 
 > > ARP BPF code is too big to fit in the Mach kernel. 
 >  
 > The Mach kernel? The network drivers rather live in netdde, and the bpf 
 > support comes from libbpf inside the hurd repository. If there is a 
 > limitation there it can very probably be lifted. 

https://cgit.git.savannah.gnu.org/cgit/hurd/gnumach.git/tree/include/device/bpf.h#n195
https://cgit.git.savannah.gnu.org/cgit/hurd/gnumach.git/tree/include/device/net_status.h#n80

That is the limitaton I'm talking about.
Looks like it's already been lifted once.

Here's the equivalent limit in NetBSD
https://nxr.netbsd.org/xref/src/sys/net/bpf.h#67

Roy


Reply via email to