#define _SYS_USER_H_
#include <sys/appleapiopts.h>
+struct waitq_set;
#ifndef KERNEL
/* stuff that *used* to be included by user.h, or is now needed */
#include <errno.h>
union {
struct _select_data {
u_int64_t abstime;
- char * wql;
+ uint64_t *wqp;
int count;
struct select_nocancel_args *args; /* original syscall arguments */
int32_t *retval; /* place to store return val */
struct _kevent {
struct _kqueue_scan scan;/* space for the generic data */
struct fileproc *fp; /* fileproc we hold iocount on */
- int fd; /* filedescriptor for kq */
- int32_t *retval; /* place to store return val */
+ int fd; /* filedescriptor for kq */
+ unsigned int eventflags; /* flags to determine kevent size/direction */
+ int eventcount; /* user-level event count */
+ int eventout; /* number of events output */
+ int32_t *retval; /* place to store return val */
user_addr_t eventlist; /* user-level event list address */
- size_t eventsize; /* kevent or kevent64_s */
- int eventcount; /* user-level event count */
- int eventout; /* number of events output */
} ss_kevent; /* saved state for kevent() */
struct _kauth {
struct proc * uu_proc;
thread_t uu_thread;
void * uu_userstate;
- wait_queue_set_t uu_wqset; /* cached across select calls */
- size_t uu_allocsize; /* ...size of select cache */
+ struct waitq_set *uu_wqset; /* waitq state cached across select calls */
+ size_t uu_wqstate_sz; /* ...size of uu_wqset buffer */
int uu_flag;
sigset_t uu_siglist; /* signals pending for the thread */
sigset_t uu_sigwait; /* sigwait on this thread*/
void * uu_vps[32];
void * uu_pcs[32][10];
#endif
+
+#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];
+#endif
+
#if CONFIG_DTRACE
uint32_t t_dtrace_errno; /* Most recent errno */
siginfo_t t_dtrace_siginfo;
#endif /* CONFIG_DTRACE */
void * uu_threadlist;
char * pth_name;
- struct label * uu_label; /* MAC label */
/* Document Tracking struct used to track a "tombstone" for a document */
struct doc_tombstone *t_tombstone;