FRELE man page on OpenBSD

Man page or keyword search:  
man Server   11362 pages
apropos Keyword Search (all sections)
Output format
OpenBSD logo
[printable version]

FILE(9)			     OpenBSD Kernel Manual		       FILE(9)

NAME
     file - an overview of file descriptor handling

SYNOPSIS
     #include <sys/file.h>
     #include <sys/filedesc.h>

     int
     falloc(struct proc *p, struct file **resultfp, int *resultfd);

     int
     fdrelease(struct proc *p, int fd);

     void
     FREF(struct file *fp);

     void
     FRELE(struct file *fp);

     struct file *
     fd_getfile(struct filedesc *fdp, int fd);

     int
     getsock(struct filedesc *fdp, int fd, struct file **fpp);

     #include <sys/file.h>
     #include <sys/filedesc.h>
     #include <sys/vnode.h>

     int
     getvnode(struct filedesc *fdp, int fd, struct file **fpp);

DESCRIPTION
     These functions provide the interface for the UNIX file descriptors.
     File descriptors can be used to access vnodes (see vnode(9)), sockets
     (see socket(2)), pipes (see pipe(2)), kqueues (see kqueue(2)), and
     various special purpose communication endpoints.

     A new file descriptor is allocated with the function falloc() and freed
     with fdrelease().	falloc() and fdrelease() deal with allocating and
     freeing slots in the file descriptor table, expanding the table when
     necessary and initializing the descriptor.	 It's possible to do those
     things in smaller steps, but it's not recommended to make complicated
     kernel APIs that require it.

     The files are extracted from the file descriptor table using the
     functions fd_getfile(), getvnode() and getsock().	fd_getfile() performs
     all necessary checks to see if the file descriptor number is within the
     range of file descriptor table, and if the descriptor is valid.
     getsock() and getvnode() are special cases that besides doing
     fd_getfile() also check if the descriptor is a vnode or socket, return
     the proper errno on error and increase the use count with FREF().

CONCURRENT ACCESS
     Since multiple processes can share the same file descriptor table, it's
     important that the file is not freed in one process while some other
     process is still accessing it.  To solve that problem a special use count
     is kept with the functions FREF() and FRELE().  In most cases FREF()
     should be used on a file after it has been extracted from the file
     descriptor table and FRELE() should be called when the file won't be used
     anymore.  There are cases when this isn't necessary, but since FREF() and
     FRELE() are cheap to use, there is no reason to risk introducing bugs by
     not using them.

CODE REFERENCES
     The majority of those functions are implemented in
     sys/kern/kern_descrip.c.  The function prototypes and the macros are
     located in sys/sys/file.h and sys/sys/filedesc.h.

SEE ALSO
     vnode(9)

OpenBSD 4.9			 May 31, 2007			   OpenBSD 4.9
[top]

List of man pages available for OpenBSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net