tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: closing a socket in kernel mode



On Wed, Jun 04, 2008 at 10:31:29AM -0400, Eddy Quicksall wrote:
> I'm using sockets in kernel level. I use the following functions. I'm having
> trouble closing the socket. What happens is that the file is not freed up
> and I eventually get error 24 (Too many open files). Any ideas?
> 
> sys___socket30()
> soaccept()
> so_send()
> sys_shutdown() (this causes the FIN to be properly sent)

If you can, avoid using the sys_XXX routines.  Instead, directly use
the same soXXX routines that the sys_ routines call.

> -- and finally to close the file I do this, but it ends up sleeping in
> sys_close ---
> -- if I print fp->f_usecount I see it is 0xf. It was suggested that I try
> FILE_UNUSE, 
> -- but using FILE_UNUSE(fp,curlwp) does not change that f_usecount nor does
> it
> -- keep sys_close from sleeping
> SCARG(&CloseArgs, fd) = s;
> sys_close(curlwp, &CloseArgs, retval);

Is a file descriptor strictly necessary?

In -current sources, you may find some examples of what you need to do
in gre(4).

Dave

-- 
David Young             OJC Technologies
dyoung%ojctech.com@localhost      Urbana, IL * (217) 278-3933 ext 24


Home | Main Index | Thread Index | Old Index