Re: ctl_enqueuedata ENOBUFS error
site_archiver@lists.apple.com Delivered-To: darwin-kernel@lists.apple.com On 12 juil. 05, at 1:53, Allan Hoeltje wrote: When you get this result you may want to: _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-kernel mailing list (Darwin-kernel@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-kernel/site_archiver%40lists.a... I am using ctl_enqueuedata() in my KEXT to send data to a client application. The client is reading the socket with recv( s, buff, BUFFER_LENGTH, MSG_WAITALL ). Everything seems to work fine but the ctl_enqueuedata() call in my KEXT eventually returns "ENOBUFS - The queue is full or there are no free mbufs." So, it appears that recv() does not remove data from the queue. What do I need to do so that ctl_enqueuedata() does not fill the queue? I do not see any other function calls in sys/kern_control.h that look appropriate. At which rate are you sending data and what is the usual size of this data? - increase the recv or send "buffer" size (use the socket API because IIRC there's a bug in the ctl API in 10.4). - save the data and try to send it later. This is what the old tcp log sample code was doing. This email sent to site_archiver@lists.apple.com
participants (1)
-
Stephane Sudre