ZEROCOPY between kernel and userland

Don Bowman don at sandvine.com
Tue Jul 6 06:22:45 PDT 2004


From: thefly [mailto:thefly at acaro.org]
> Hello everybody, i'm writing a netgraph module to get some stats about
> the network traffic. Actually i have to pass all the data gathered all
> in one piece, to the process which asks me for it. The client should
> work like this in userland:
> 
> 	int * pointer;
> 
> 	ioctl(dev, MY_COMMAND, pointer);
> 
> after this pointer points to the right memory area. The array 
> to pass is
> about 500Kb, so copying with copyout() would be too expensive, moving
> the array from kernel's addrespace to process's address space would be
> fast. 
> The question is: what's the actual API to do that, if there's any, in
> freebsd 5?

We did a device, and 'mmap' some shared memory between the two.
The user space has read-only access.



More information about the freebsd-hackers mailing list