]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/sys/user.h
xnu-4570.1.46.tar.gz
[apple/xnu.git] / bsd / sys / user.h
index 9f612c7805b412648970dbce31b54db288db9c43..92b235bb938f50590b61b1b6a0cc1539539216eb 100644 (file)
@@ -75,7 +75,9 @@ struct waitq_set;
 #include <sys/uio.h>
 #endif
 #ifdef XNU_KERNEL_PRIVATE
+#include <sys/resource.h>
 #include <sys/resourcevar.h>
+#include <sys/signal.h>
 #include <sys/signalvar.h>
 #endif
 #include <sys/vm.h>            /* XXX */
@@ -84,6 +86,7 @@ struct waitq_set;
 #ifdef KERNEL
 #ifdef BSD_KERNEL_PRIVATE
 #include <sys/pthread_internal.h> /* for uu_kwe entry */
+#include <sys/eventvar.h>
 #endif  /* BSD_KERNEL_PRIVATE */
 #ifdef __APPLE_API_PRIVATE
 #include <sys/eventvar.h>
@@ -134,14 +137,13 @@ struct uthread {
                        kevent_callback_t call;             /* per-event callback */
                        kqueue_continue_t cont;             /* whole call continuation */
                        filt_process_data_t process_data;   /* needed for filter processing */
-                       uint8_t servicer_qos_index;         /* requested qos index of servicer */
                        uint64_t deadline;                  /* computed deadline for operation */
                        void *data;                         /* caller's private data */
                } ss_kqueue_scan;                           /* saved state for kevent_scan() */
                struct _kevent {
                        struct _kqueue_scan scan;           /* space for the generic data */
                        struct fileproc *fp;                /* fileproc we hold iocount on */
-                       int fd;                             /* filedescriptor for kq */
+                       int fd;                             /* fd for fileproc (if held) */
                        int eventcount;                     /* user-level event count */
                        int eventout;                       /* number of events output */
                        struct filt_process_s process_data; /* space for process data fed thru */
@@ -216,8 +218,10 @@ struct uthread {
        int             uu_dupfd;               /* fd in fdesc_open/dupfdopen */
         int            uu_defer_reclaims;
 
-       unsigned int uu_kqueue_bound;      /* qos index we are bound to service */
-       unsigned int uu_kqueue_flags;      /* if so, the flags being using */
+       struct kqueue *uu_kqueue_bound;           /* kqueue we are bound to service */
+       unsigned int uu_kqueue_qos_index;         /* qos index we are bound to service */
+       unsigned int uu_kqueue_flags;             /* the flags we are using */
+       boolean_t uu_kqueue_override_is_sync;     /* sync qos override applied to servicer */
 
 #ifdef JOE_DEBUG
         int            uu_iocount;
@@ -225,11 +229,10 @@ struct uthread {
         void   *       uu_vps[32];
         void    *       uu_pcs[32][10];
 #endif
-
+       int             uu_proc_refcount;
 #if PROC_REF_DEBUG
 #define NUM_PROC_REFS_TO_TRACK 32
 #define PROC_REF_STACK_DEPTH 10
-       int             uu_proc_refcount;
        int             uu_pindex;
        void    *       uu_proc_ps[NUM_PROC_REFS_TO_TRACK];
        uintptr_t       uu_proc_pcs[NUM_PROC_REFS_TO_TRACK][PROC_REF_STACK_DEPTH];