]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/sys/ubc.h
xnu-517.12.7.tar.gz
[apple/xnu.git] / bsd / sys / ubc.h
index db2c18c4ac2b8544fade7fc87f9a3deb456556f9..0e401f6f79969187b403d9e9afe61a3ef9995123 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 1999, 2000-2002 Apple Computer, Inc. All rights reserved.
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
@@ -31,6 +31,7 @@
 #ifndef        _SYS_UBC_H_
 #define        _SYS_UBC_H_
 
+#include <sys/appleapiopts.h>
 #include <sys/types.h>
 #include <sys/ucred.h>
 #include <sys/vnode.h>
@@ -42,6 +43,7 @@
 #define UBC_INFO_NULL  ((struct ubc_info *) 0)
 #define UBC_NOINFO             ((struct ubc_info *)0xDEADD1ED)
 
+#ifdef __APPLE_API_PRIVATE
 extern struct zone     *ubc_info_zone;
 
 /*
@@ -58,6 +60,7 @@ struct ubc_info {
        int                                             ui_refcount;/* ref count on the ubc_info */
        off_t                                   ui_size;        /* file size for the vnode */
        long                                    ui_mapped;      /* is it currently mapped */
+       void                                    *ui_owner;      /* for recursive ubc_busy */
 };
 
 /* Defines for ui_flags */
@@ -67,7 +70,12 @@ struct ubc_info {
 #define UI_HASOBJREF   0x00000004              /* hold a reference on object */
 #define UI_WASMAPPED   0x00000008              /* vnode was mapped */
 #define        UI_DONTCACHE    0x00000010              /* do not cache object */
+#define        UI_BUSY                 0x00000020              /* for VM synchronization */
+#define        UI_WANTED               0x00000040              /* for VM synchronization */
 
+#endif /* __APPLE_API_PRIVATE */
+
+#ifdef __APPLE_API_EVOLVING
 /*
  * exported primitives for loadable file systems.
  */
@@ -101,7 +109,7 @@ int ubc_release_named __P((struct vnode *));
 int    ubc_invalidate __P((struct vnode *, off_t, size_t));
 int    ubc_isinuse __P((struct vnode *, int));
 
-int    ubc_page_op __P((struct vnode *, off_t, int, vm_offset_t *, int *));
+int    ubc_page_op __P((struct vnode *, off_t, int, ppnum_t *, int *));
 
 /* cluster IO routines */
 int    cluster_read __P((struct vnode *, struct uio *, off_t, int, int));
@@ -109,11 +117,14 @@ int       advisory_read __P((struct vnode *, off_t, off_t, int, int));
 int    cluster_write __P((struct vnode *, struct uio*, off_t, off_t,
                off_t, off_t,  int, int));
 int    cluster_push __P((struct vnode *));
+int    cluster_release __P((struct vnode *));
 int    cluster_pageout __P((struct vnode *, upl_t, vm_offset_t, off_t, int,
                off_t, int, int));
 int    cluster_pagein __P((struct vnode *, upl_t, vm_offset_t, off_t, int,
                off_t, int, int));
 int    cluster_bp __P((struct buf *));
+int    cluster_copy_upl_data __P((struct uio *, upl_t, int, int));
+int    cluster_copy_ubc_data __P((struct vnode *, struct uio *, int *, int));
 
 /* UPL routines */
 int    ubc_create_upl __P((struct vnode *, off_t, long, upl_t *,
@@ -153,6 +164,9 @@ __END_DECLS
 /* Flags for ubc_getobject() */
 #define UBC_FLAGS_NONE         0x0000
 #define UBC_HOLDOBJECT         0x0001
+#define UBC_FOR_PAGEOUT         0x0002
+
+#endif /* __APPLE_API_EVOLVING */
 
 #endif /* _SYS_UBC_H_ */