The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/bsd/sys/aio_kern.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2003 Apple Computer, Inc. All rights reserved.
    3  *
    4  * @APPLE_LICENSE_HEADER_START@
    5  * 
    6  * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
    7  * 
    8  * This file contains Original Code and/or Modifications of Original Code
    9  * as defined in and that are subject to the Apple Public Source License
   10  * Version 2.0 (the 'License'). You may not use this file except in
   11  * compliance with the License. Please obtain a copy of the License at
   12  * http://www.opensource.apple.com/apsl/ and read it before using this
   13  * file.
   14  * 
   15  * The Original Code and all software distributed under the License are
   16  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   17  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   18  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   19  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
   20  * Please see the License for the specific language governing rights and
   21  * limitations under the License.
   22  * 
   23  * @APPLE_LICENSE_HEADER_END@
   24  */
   25 /* 
   26  *      File:   sys/aio_kern.h
   27  *      Author: Jerry Cottingham [jerryc@apple.com]
   28  *
   29  *      Header file for kernel only portion of POSIX Asynchronous IO APIs
   30  *
   31  */ 
   32 
   33 #include <sys/aio.h>
   34 
   35 #ifndef _SYS_AIO_KERN_H_
   36 #define _SYS_AIO_KERN_H_
   37 
   38 #ifdef KERNEL
   39 
   40 struct aio_workq_entry
   41 {
   42         TAILQ_ENTRY( aio_workq_entry )  aio_workq_link;
   43         struct proc                                             *procp;         /* user proc that queued this request */
   44         struct aiocb                                    *uaiocbp;       /* pointer passed in from user land */
   45         struct aiocb                                    *fsyncp;        /* not NULL means this request must complete */
   46                                                                                                 /* before an aio_fsync call can proceed. */
   47         vm_map_t                                                aio_map;        /* user land map we have a reference to */
   48         ssize_t                                                 returnval;      /* return value from read / write request */    
   49         int                                                             errorval;       /* error value from read / write request */
   50         int                                                             flags;          
   51         long                                                    group_tag;      /* identifier used to group IO requests */
   52         struct aiocb                                    aiocb;          /* copy of aiocb from user land */
   53 };
   54 typedef struct aio_workq_entry aio_workq_entry;
   55 
   56 /*
   57  * definitions for aio_workq_entry.flags
   58  */
   59 #define AIO_READ                0x00000001      
   60 #define AIO_WRITE               0x00000002
   61 #define AIO_FSYNC               0x00000004      /* aio_fsync with op = O_SYNC */
   62 #define AIO_DSYNC               0x00000008      /* aio_fsync with op = O_DSYNC (not supported yet) */
   63 #define AIO_LIO                 0x00000010      /* lio_listio generated IO */
   64 #define AIO_DO_FREE             0x00000800      /* entry needs to be freed */
   65 #define AIO_COMPLETION  0x00001000      /* entry is in completion processing (not freeable yet) */
   66 #define AIO_DISABLE             0x00002000      /* process is trying to exit or exec and we need */
   67                                                                         /*      to disable normal completion notification */
   68 #define AIO_WAITING             0x00004000      /* process is trying to exit, exec, or close and is */
   69                                                                         /*      waiting for one or more active IO requests to */
   70                                                                         /*      complete */
   71 
   72 
   73 __private_extern__ void         _aio_close( struct proc *p, int fd );
   74 __private_extern__ void         _aio_exit( struct proc *p );
   75 __private_extern__ void         _aio_exec( struct proc *p );
   76 __private_extern__ void         _aio_create_worker_threads( int num );
   77 
   78 #endif /* KERNEL */
   79 
   80 #endif /* _SYS_AIO_KERN_H_ */

Cache object: 485138877a231f5573257956c9bbbed7


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.