Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Apr 2008 10:53:10 +0430
From:      "H.fazaeli" <fazaeli@sepehrs.com>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: CopyOut Size Limits
Message-ID:  <4812CA4E.8030004@sepehrs.com>
In-Reply-To: <DAB770F2-C987-4AEB-BD02-BD1AEF099702@signallake.com>
References:  <DAB770F2-C987-4AEB-BD02-BD1AEF099702@signallake.com>

next in thread | previous in thread | raw e-mail | index | archive | help

Do not allocate my_type (in general, big data structures)
on kernel stack (e.g, use malloc(9)).


Adam wrote:
> Hi, I am writing a custom system call that needs to transfer 16kb of 
> data from the kernel to userspace. I am transferring the data out of 
> the kernel by using copyout.  This seems to work for a small struct of 
> data < 4k.
>
> int my_system_call(struct thread *td, struct my_system_call_args *uap)
> {
>     my_structtype_t my_type;
>
>     copyout(&my_type,uap->my_type,sizeof(my_type) ))!=0)
>     {
>         printf("\n copyout failed ret%d\n",error);
>         return error;
>     }
>
>     printf("exiting kernel %d\n",error);
>     return (0);
> }
>
> However once I expand my struct size beyond around 4k that I get a 
> "Fatal Double Fault."  It seems like I am overrunning the kernel 
> stack.  Does copyout use memory from the kernel stack?  What is the 
> limit for copyout?  Is there some way to allocate additional space?  
> Alternatively what is the appropriate method for transferring kbs of 
> data from kernel to userspace?
>
> Thanks,
> Adam
>
>
>
>
> _______________________________________________
> freebsd-hackers@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to 
> "freebsd-hackers-unsubscribe@freebsd.org"
>
>
>

-- 


With best regards.

Hooman Fazaeli <fazaeli@sepehrs.com>
Sepehr S. T. Co. Ltd.

Web: http://www.sepehrs.com
Tel: (9821)88975701-2
Fax: (9821)88983352







Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4812CA4E.8030004>