Re: confusion on fopen()/falloc()
From: John-Mark Gurney (gurney_j_at_resnet.uoregon.edu)
Date: 02/26/05
- Previous message: John-Mark Gurney: "Re: send file descriptor via ipc"
- In reply to: Yan Yu: "confusion on fopen()/falloc()"
- Next in thread: John-Mark Gurney: "Re: send file descriptor via ipc"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Sat, 26 Feb 2005 01:47:20 -0800 To: Yan Yu <yanyu@CS.UCLA.EDU>
Yan Yu wrote this message on Sat, Feb 26, 2005 at 01:10 -0800:
> Hello, all,
> I have a user program as below:
> FILE *fd;
> while (1)
> {
> fd= fopen( "tmp", "r" );
> if ( fd == NULL )
> break;
> }
>
> from my understanding, since i open the same file to read, my process
> should create a new file descriptor each time when fopen is called.
> Therefore, inside the kernel, fdalloc() should be called, NOT falloc()
> (since falloc() allocates a new FILE * struct in addition to a new file
> descriptor),
> BUT based on what i observed (i instrumented falloc() function), it seems
> that falloc() is called each time when fopen() is called.
> I am wondering where i missed?
first off, if you are looking at this code, you probably want to be
calling open instead of fopen... fopen is stdio and is implemented in
src/lib/libc/stdio/fopen.c... There it'll do an open system call, but
you don't have as direct control over it... Also, the kernel is not
responsible for FILE * allocations, that is purely a userland
implementation detail.. it will end up getting mapped to a file
descriptor opened via open...
if you look in src/sys/kern/vfs_syscalls.c at open, it calls kern_open
(in the same file) which calls falloc... falloc by it's comment does
more than just allocate a file descriptor, it also allocates a new file
structure, but then it does call fdalloc to get the file descriptor..
Again, make sure you don't confuse the userland FILE * with the kernel..
--
John-Mark Gurney Voice: +1 415 225 5579
"All that I will do, has been done, All that I have, has not."
_______________________________________________
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"
- Previous message: John-Mark Gurney: "Re: send file descriptor via ipc"
- In reply to: Yan Yu: "confusion on fopen()/falloc()"
- Next in thread: John-Mark Gurney: "Re: send file descriptor via ipc"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|
|